Ich habe ein Problem mit UDP
Übersicht

![]() |
cooloBetreff: Ich habe ein Problem mit UDP |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hallo an alle,
Als kleine Online Übung, um zu sehen was BB alles im Online Bereich zu bieten hat, möchte ich jetzt mein Pong einen Online Modus kreieren. Das bewegen der einzelnen Figuren geht schon, aber beim Ball, gehts nicht, Mein Problem, der Ball wird durch den Zufalls Winkel anders herum geschleudert. Code sagt mehr als 1000 Wörter: Code: [AUSKLAPPEN] Cls Flip Delete Each ball b=New ball b\x#=320 b\y#=240 b\angle#=Rand(1,360) b\jsp#=0 b\speed#=Rand(4,6) Print "Wähle [1] um das Spiel als Host zu starten." Print "Wähle [2] um das Spiel als Client zu starten.";Client ist der PC wo sich mit einem Host verbindet Print "Wähle [3] um das Spiel zu Verlassen." FlushKeys wahl_nummer = Input("Ihre Wahl:") ;jetzte nach der Wahl des Players fragen If wahl_nummer = 1;wenn man 1 gewählt hat [Host] sendeport = 8000 ;ist der Port womit man dann Daten senden kann empfangsport = 8001;ist der Port womit man dann Daten empfangen kann stream = CreateUDPStream(empfangsport) ;den UDP-Stream erstellen um Daten zu empfangen If stream = 0 ;wenn der Stream nicht erstellt worde konnte Print "Konnte Stream nicht erstellen !" Print "Weiter mit Taste!" WaitKey End Else ;wenn der Stream erstellt worde konnte Print "Spiel als Host gestartet" Print "Deine IP findest du unter *www.wasistmeineip.de*," Print "diese braucht der Client um mit dir zu verbinden!" Print "Warten auf den Client..." Repeat ;solange warten bis der Client sich mit dem Host verbunden hat ip = RecvUDPMsg(stream);wenn eine nachricht empfangen wird... If KeyHit(1) Then End Until ip <> 0 WriteByte stream,1;eine anwort senden SendUDPMsg stream,ip,sendeport ;nun noch die daten vom anderen player angeben player1x = 0;die x possition player1y = 0;die y possition player2x = 0;die x possition player2y = 200 EndIf ElseIf wahl_nummer = 2;wenn man 2 gewählt hat [Client] ip_nummer$ = Input("Die IP vom Host: ") ;nach der IP fragen... ip = IntegerIP(ip_nummer$) ;IP umwandeln... sendeport = 8001 ;ist der Port womit man dann Daten senden kann empfangsport = 8000;ist der Port womit man dann Daten empfangen kann stream = CreateUDPStream(empfangsport) ;den UDP-Stream erstellen um Daten zu empfangen If stream = 0 ;wenn der Stream nicht erstellt worde konnte Print "Konnte Stream nicht erstellen !" Print "Weiter mit Taste!" WaitKey End Else ;wenn der Stream erstellt worde konnte WriteByte stream,1 ;1 senden damit der Host weis das ein Client da ist SendUDPMsg stream,ip,sendeport ;die nachricht senden Delay 1000;1sekunde lang warten und dann prüfen ob der host da ist If RecvUDPMsg(stream) Then empfangen = ReadByte(stream) If empfangen = 1;wenn es 1 ist dann hat man das spiel als client gestartet Print "Spiel als Client gestartet" ;nun noch die daten vom anderen player angeben player1x = 0;die x possition player1y = 0;die y possition player2x = 0;die x possition player2y = 200;die y possition Else Print "Konnte Spiel nicht als Client starten!" Print "Weiter mit Taste!" CloseUDPStream stream ;stream beenden End ;alles schließen EndIf EndIf EndIf EndIf Repeat Cls If MouseXSpeed()<>0 Then WriteByte stream,1 WriteInt stream, MouseX() SendUDPMsg stream,ip,sendeport EndIf If wahlnummer=2 Then For b=Each ball If b\jsp#<b\speed# Then b\jsp#=b\jsp#+0.2 b\x# = b\x# + Cos( b\angle# ) * b\jsp# b\y# = b\y# + Sin( b\angle# ) * b\jsp# If b\y# < 0 Then;b\y# > 480 Or b\speed#=b\speed#+0.1 count=count+10 particle(b\angle#,b\x,b\y) b\angle# = 360 - b\angle# ElseIf ImagesCollide(player,x,460,0,kugel,b\x#,b\y#,0) Then b\speed#=b\speed#+0.1 count=count+10 particle(b\angle#,b\x,b\y) b\angle# = 360 - b\angle# If gi<>0 Then abweichung=2*((x+45)-b\x) Else abweichung=2*((x+90)-b\x) ;vor=b\angle# b\angle#=b\angle#-abweichung If vor-b\angle=<0 Then b\angle#=b\angle#+180 b\y=450 ElseIf b\y# > 460 And besieg=0 Then newlog("Dir ist der Ball heruntergefallen") punkt=punkt+1 b\x#=320 b\y#=240 b\angle#=Rand(1,360) b\jsp#=0 b\speed#=Rand(4,6) particle(90,b\x,b\y) ElseIf besieg>0 And b\y>480 Then b\speed#=b\speed#+0.1 count=count+10 particle(b\angle#,b\x,b\y) b\angle# = 360 - b\angle# EndIf If b\x# > 640 Or b\x# < 0 Then b\speed#=b\speed#+0.2 count=count+10 b\angle# = 180 - b\angle# particle(b\angle#,b\x,b\y) EndIf ;If b\angle#>=360 Then b\angle#=1 ;If b\angle#=0 Then b\angle#=259 particle2(b\angle#-180,b\x+13,b\y+12) DrawImage kugel,b\x#,b\y# WriteByte stream,2 WriteString stream, b\x+":"+b\y SendUDPMsg stream,ip,sendeport Next EndIf If RecvUDPMsg(stream) nummer = ReadByte(stream) Select nummer Case 1 player2x = ReadInt(stream) Case 2 For b=Each ball bk$=ReadString(stream) x=Right(bk$,Instr(bk$,":")) y=Left(bk$,Instr(bk$,":")) DrawImage kugel,x,y Next End Select EndIf DrawImage player,MouseX(),player1y DrawImage player,player2x,player2y Flip Until KeyHit(1) End |
||
http://programming-with-design.at/ <-- Der Preis ist heiß!
That's no bug, that's my project! "Eigenzitate sind nur was für Deppen" -Eigenzitat |
- Zuletzt bearbeitet von coolo am Mo, Jan 28, 2008 20:26, insgesamt einmal bearbeitet
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Und wo sendest du den bewegungsvektor für den BAll oder seinen winkel? Du kannst auf der anderen seite nur nutzen was da ist und da man normalerweise approximieren muss wo das objekt im nächsten frame sein wird (das netz ist dazu zu langsam, das ist nur alle 2-5 frames mit neuen daten da!), muss man auch bewegungsvektoren und richtungen haben. sonst geht da nix.
Und unterlass künftig solche Threadtitel sonst kannst du ihnen im Trash nachtrauern. Erwarte insofern eine anpassung des namens oder werde das morgen mittag nachholen. |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
![]() |
coolo |
![]() Antworten mit Zitat ![]() |
---|---|---|
Eben, das ist das Problem, Bei jedem wird der Ball anders berechnet. | ||
http://programming-with-design.at/ <-- Der Preis ist heiß!
That's no bug, that's my project! "Eigenzitate sind nur was für Deppen" -Eigenzitat |
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
dann syncronisier die daten. Sprich send den winkel des balles ebenfalls oder den bewegungsvektor / beschleunigungsvektor.
das solltest du bei den paddels auch machen, dann teleportieren sie nimmer so übel (was sie sonst über inet machen werden) |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group