Hilfe bei meinem Ping Pong SPiel
Übersicht

![]() |
RetBetreff: Hilfe bei meinem Ping Pong SPiel |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hallo
Ich versuche ein Ping Pong Spiel zu machen. Wenn ich den linken schläger nach unten bewege dann passiert garnix. Der Ball bleipt einfach da sthen wo er ist. Ich hab mal diesen Code verwendet.[syntax="bb"];PING POOOOONG W-Games Code: [AUSKLAPPEN] Graphics 640,480
Ping1=LoadImage("Ping1.bmp");Ping1 wird gelden Ping2=LoadImage("Ping2.bmp");Ping 2 wirdgeladen Pong= LoadImage("Pong.bmp");Kugel Pong wird geladen Repeat;Schleifenanfang Cls DrawImage Ping2,x,y ; Ping2 zeichnen auf der linken Seite If KeyDown(200) Then Y = Y -10 ;hoch mit oberer Pfeiltaste If KeyDown(208) Then y = y + 10 ;runter mit unterer Pfeiltaste DrawImage Pong,a,b ; Pong Kugel zeichnen b=200 If ImagesOverlap(Ping2,x, y, Pong, a,b) Then Zeit = MilliSecs() + 1000 ;Pong bewegen jade sekunde If Zeit < MilliSecs() Then a = a +5 End If End If DrawImage Ping1,600,d ;Pong1 zeichnen auf der rechten Seite Flip Until KeyHit(1) ;Schleifenende bei drücken der Taste ESC End Ich hoffe ihr wisst was ich falsch mache |
||
Blau? Chili? was das?
www.bluechiligamez.de.vu www.bluechiligamez.de.vu "Wichtig ist das man nie aufhöhrt zu fragen"Albert einstein |
HW |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Es fällt auf, dass sich die Koordinate a des Balls nur ändert, wenn sich das Bild des Balls und das Bild des einen Schlägers überlappen.
Außerdem sind so viele Zeilenumbrüche unübersichtlich. Und so wie ich deinen Code verstanden habe, willst du den Ball nur jede Sekunde bewegen. Du kannst ihn aber ruhig in jedem Schleifendurchgang bewegen. Ein weiterer Tipp ist es, die Richtung, in die der Ball fliegt, in eine Variable zu speichern (mit den Werten -1 für Links und +1 für Rechts). Diese Variable wird dann zu der Koordinate des Balls hinzugezählt. In jedem Schleifendurchlauf wird geprüft, ob der Ball gegen einen Schläger prallt und demnach die Richtung geändert. Außerdem ist es nicht ratsam, anfangs ein Spiel zu programmieren, das einen Computergegner hat. Du könntest z.B. den rechten Schläger durch eine Wand ersetzen. |
||
![]() |
Ret |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ja aber wenn ich ihn bei jedem Schleifdurchgang verschiebe dann bewegt er sich ja unendlich weit. | ||
Blau? Chili? was das?
www.bluechiligamez.de.vu www.bluechiligamez.de.vu "Wichtig ist das man nie aufhöhrt zu fragen"Albert einstein |
![]() |
RallimenSieger des 30-EUR-Wettbewerbs |
![]() Antworten mit Zitat ![]() |
---|---|---|
Habs mal halbwegs lauffähig umgestaltet!Code: [AUSKLAPPEN] Graphics 640 ,480
Ping1 = LoadImage ("Ping1.bmp") ;Ping1 wird gelden Ping2 = LoadImage ("Ping2.bmp") ;Ping 2 wirdgeladen Pong = LoadImage ("Pong.bmp") ;Kugel Pong wird geladen RichtungSpeed = 2 b = 200 Repeat;Schleifenanfang Cls DrawImage Ping2,x,y ; Ping2 zeichnen auf der linken Seite DrawImage Ping1,600,y ;Pong1 zeichnen auf der rechten Seite If KeyDown (200) Then Y = Y - 10 ;hoch mit oberer Pfeiltaste If KeyDown (208) Then y = y + 10 ;runter mit unterer Pfeiltaste DrawImage Pong,a,b ; Pong Kugel zeichnen ;kugel bewegen a = a + RichtungSpeed ;kollisionen If ImagesOverlap (Ping2,x, y, Pong, a,b) Then RichtungSpeed = 2 End If If ImagesOverlap (Ping1,600,y, Pong, a,b) Then RichtungSpeed = -2 End If Flip Until KeyHit (1) ;Schleifenende bei drücken der Taste ESC End |
||
[BB2D | BB3D | BB+]
|
HW |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Er würde sich auch bei einer sekündigen Verschiebung unendlich weit bewegen, es würde nur länger dauern. Du musst eine Prüfung einbauen, die den Ball je nach seinen Koordinaten anhält/umkehrt. Auch bei den Schlägern sollte eine solce Prüfung eingebaut werden, sodass sie sich nicht aus der Bildfläche bewegen können.
Das Beispiel von Ralliman ist recht gut. |
||
![]() |
Ret |
![]() Antworten mit Zitat ![]() |
---|---|---|
Vielen dank es funktioniert jetzt.
![]() |
||
Blau? Chili? was das?
www.bluechiligamez.de.vu www.bluechiligamez.de.vu "Wichtig ist das man nie aufhöhrt zu fragen"Albert einstein |
![]() |
RetBetreff: Ping Pong Gegner |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich hab noch ne Frage wegen Ping Pong.
Ich würde gerne wissen wie man den Gegner sinnvoll programmiert. Ich habs mal so probiert Code: [AUSKLAPPEN] If MilliSecs() > ZeitGegner +100Then
ZeitGegner = MilliSecs() SeedRnd MilliSecs() ; Zuffalszahl für Ping2 Zufall = Rand(1,3) + 1;Zufallszahl wird der variable Zufall gegeben If Zuffal = 1 Then If MilliSecs() > gegnerT +10 Then gegnerT =MilliSecs() p = p + Gegnerspeed End If Else If Zufall = 2 Then If MilliSecs() > gegnerT +10 Then gegnerT =MilliSecs() p = p - Gegnerspeed End If Else If Zufall = 3 Then p= b End If End If End If End If Es klapt schon aber der Gegner bewegt sich zu erst garnicht und dann von einem fleck zum anderen.Dann wieder Bewegungslos un so weiter. Ich hoffe ich habs verständlich erklärt |
||
Blau? Chili? was das?
www.bluechiligamez.de.vu www.bluechiligamez.de.vu "Wichtig ist das man nie aufhöhrt zu fragen"Albert einstein |
![]() |
5k41 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich würde das anders machen:
Einen Zufallsgenerator, der ermittelt ob der Gegner den Ball trifft. Wenn er den Ball treffen soll berechnest du wo der Ball auftreffen wirst und lässt den Gegner sich dorthin bewegen. Wenn er nicht treffen soll dann lässt du ihn irgendwo anders hinbewegen. Man könnte dann noch um das Spiel spannender zu gestallten den Gegner den Ball nur um ein Haar treffen lassen oder nur um eins verfehlen. |
||
Projekte:
For a better World - Gesellschaftsspiel ( 100%) User posted image |
![]() |
Spikespine |
![]() Antworten mit Zitat ![]() |
---|---|---|
Eine gute KI sollte sich menschenähnlich spielen.
Also ist das wichtigste, was du brauchst, eine künstliche Reaktionszeit des Computers. Die sollte nicht immer gleich sein, sondern zufällig variieren. |
||
Athlon 64 3700+ | 1024 MB RAM | GeForce 7900 GT | Blitz2D, Blitz3D, BlitzPlus, BlitzMax |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group