Hilfe bei meinem Ping Pong SPiel

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

Ret

Betreff: Hilfe bei meinem Ping Pong SPiel

BeitragDo, März 02, 2006 12:59
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragDo, März 02, 2006 13:32
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragDo, März 02, 2006 16:15
Antworten mit Zitat
Benutzer-Profile anzeigen
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

Rallimen

Sieger des 30-EUR-Wettbewerbs

BeitragDo, März 02, 2006 16:44
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragDo, März 02, 2006 17:14
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragFr, März 03, 2006 11:51
Antworten mit Zitat
Benutzer-Profile anzeigen
Vielen dank es funktioniert jetzt.
Very Happy
Blau? Chili? was das?
www.bluechiligamez.de.vu
www.bluechiligamez.de.vu
"Wichtig ist das man nie aufhöhrt zu fragen"Albert einstein

Ret

Betreff: Ping Pong Gegner

BeitragSa, März 04, 2006 17:02
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragSa, März 04, 2006 17:34
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragSa, März 04, 2006 17:58
Antworten mit Zitat
Benutzer-Profile anzeigen
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

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group