Ping Pong Tutorial?
Übersicht

stoertebeckerBetreff: Ping Pong Tutorial? |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hallo,
Ich wollte das Ping Pong Spiel aus dem tutorial nachprogrammieren! Nur wollte ich dass die Spieler links und rechts sind und eben hoch und runter fahren können! Theoretisch habe ich alles verstanden mit Kollision und so aber das Spiel startet nicht! Wie kann ich das in gang setzen? Wenn ich für irgendeinen Spieler Maussteuerung nehme dann kann ich den Spieler bewegen!Aber mehr auch nicht! Code: [AUSKLAPPEN] xmax# = 1024 ymax# = 768 Graphics xmax,ymax,32,2 ;Vars Global kugel = LoadImage("gfx\kugel.bmp") MidHandle kugel Global spieler1 = LoadImage("gfx\player.bmp") MidHandle spieler1 Global spieler2 = LoadImage("gfx\player2.bmp") MidHandle spieler2 Global begrenzung = LoadImage("gfx\rand.bmp") Global sp1st ;bedeutet: Spieler 1 Steuerung Global sp2st Global ysp1 ;für die Y-Position des 1. Spielers Global ysp2 ;für die Y-Position des 2. Spielers Global xkugel# ;X-Pos. der Kugel als Kommazahl Global ykugel# ;Y-Pos. der Kugel als Kommazahl Global winkel ;gibt den Flugwinkel der Kugel an Global geschwindigkeit ;die Fluggeschwindgikeit der Kugel Function resetkugel() xkugel=xmax/2:ykugel=ymax/2 If Rand(0,1)=1 Then winkel=Rand(105,45) Else winkel=Rand(315,225);der Winkel wird durch Zufall ermittelt End Function SetBuffer BackBuffer() Global frametimer = CreateTimer(60) SeedRnd MilliSecs() Repeat WaitTimer (frametimer) For z2=0 To 1 If z2=1 Then y=ymax-20 Else y=0 For z= 0 To xmax/20 DrawImage begrenzung,z*20,y Next Next ;Steuerung ;Welche Art If KeyHit(2) Then sp1st=sp1st+1;die Zahlentaste 1 If KeyHit(3) Then sp2st=sp2st+1;die Zahlentaste 2 ;keyboard If KeyDown(208) And sp1st=1 Then ysp1=ysp1-beweglichkeit;linke Pfeiltaste If KeyDown(200) And sp1st=1 Then ysp1=ysp1+beweglichkeit;rechte Pfeiltaste If KeyDown(17) And sp2st=1 Then ysp2=ysp2-beweglichkeit;linke Pfeiltaste If KeyDown(31) And sp2st=1 Then ysp2=ysp2+beweglichkeit;rechte Pfeiltaste ;Maus If sp1st=2 Then ysp1=ysp1+MouseYSpeed() If sp2st=2 Then ysp2=ysp2+MouseYSpeed() ;Computer If ysp1>ykugel And sp1st=0 Then ysp1=ysp1-beweglichkeit If ysp1<ykugel And sp1st=0 Then ysp1=ysp1+beweglichkeit If ysp2>ykugel And sp2st=0 Then ysp2=ysp2-beweglichkeit If ysp2<ykugel And sp2st=0 Then ysp2=ysp2+beweglichkeit ;begrenzung If ysp1<60 Then ysp1=60 If ysp1>ymax-60 Then ysp1=ymax-60 If ysp2<60 Then ysp2=60 If ysp2>ymax-60 Then ysp2=ymax-60 ;; ;; If ykugel<30 Then winkel=180-winkel ;damit prallt die Kugel ab EndIf If ykugel>ymax-30 Then winkel=180-winkel EndIf ;;Collision If ImagesCollide(spieler1,ysp1,ymax-10,0,kugel,xkugel,ykugel,0) Then;wenn eine Kollision ist winkel=360-winkel ;prallt die Kugel ab abweichung=2*(ysp1-xkugel) ;damit kannst du die Richtung der Kugel steuern winkel=winkel+abweichung EndIf If ImagesCollide(spieler2,ysp2,10,0,kugel,xkugel,ykugel,0) Then winkel=360-winkel abweichung=2*(ysp2-xkugel) winkel=winkel-abweichung EndIf If winkel>360 Then winkel=winkel-360 If winkel<0 Then winkel=winkel+360 If xkugel<-10 Then ;oben fehlersp2=fehlersp2+1 ;der Obere bekommt einen Fehlerpunkt dazu resetkugel ;ein Funktionsaufruf EndIf If xkugel>xmax+10 Then ;unten fehlersp1=fehlersp1+1 ;der Untere bekommt einen Fehlerpunkt dazu resetkugel ;ein Funktionsaufruf EndIf ;einige Informationen werden auf den Bildschirm gemalt Text 200,300,"Geschwindigkeit:" + geschwindigkeit Text 500,300,"Spielstand: "+fehlersp2 + " : " + fehlersp1 ;damit du die Steuerungsart sehen kannst Text xmax-300,ymax-(ymax-25),"Spieler1" If sp1st>0 Then If sp1st=2 Then Text xmax-200,ymax-(ymax-25),"Maussteuerung" Else Text xmax-200,ymax-(ymax-25),"Tastatursteuerung" Else Text xmax-200,ymax-(ymax-25),"Computer" EndIf ;If spieler1man>0 Then Text 250,ymax-25,scorep1 Text xmax-(xmax-25),ymax-(ymax-25),"Spieler2" If sp2st>0 Then If sp2st=2 Then Text xmax-(xmax-125),ymax-(ymax-25),"Maussteuerung" Else Text xmax-(xmax-125),ymax-(ymax-25),"Tastatursteuerung" EndIf Else Text xmax-(xmax-125),ymax-(ymax-25),"Computer" EndIf resetkugel DrawImage kugel,xkugel,ykugel;nur damit man sieht, das sie existiert DrawImage spieler1,xmax-10,ysp1 DrawImage spieler2,10,ysp2 Flip Cls Until KeyHit(1) End ; Wo liegt mein Fehler? Danke schon im Vorraus! mfg stoertebecker |
||
![]() |
JustTheBest |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hi!
Wie meinst du das? Kommt ne Fehlermeldung, bewegt sich der Ball nicht, klappt irgendwas mit der Steureung nicht, kommt nur schwarz? Bitte genauere angaben! mfg JTB |
||
www.mas-online.de.gg
__________ Liegt der Camper tot im Keller war der Rusher wieder schneller. Liegt der Rusher tot daneben hat der Camper nen Kollegen! |
![]() |
d-bug |
![]() Antworten mit Zitat ![]() |
---|---|---|
Wo definierst du denn die Variable Beweglichkeit ? Bin nur mal schnell durch
den Code gehuscht, aber konnte das nicht finden. Theoretisch bleibt also jede Position immer gleich, da du immer 0 addierst bzw subtrahierst! cheers |
||
stoertebecker |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
ähm ja es wird alles angezeigt nur der ball bewegt sich nicht!
eigentlcih logisch dass es mit der variable zu tun haben muss! ![]() nur habe ich jetzt den code um die fehlenden stücke ergänzt: Code: [AUSKLAPPEN] xmax# = 1024 ymax# = 768 Graphics xmax,ymax,32,2 ;Vars Global kugel = LoadImage("gfx\kugel.bmp") MidHandle kugel Global spieler1 = LoadImage("gfx\player.bmp") MidHandle spieler1 Global spieler2 = LoadImage("gfx\player2.bmp") MidHandle spieler2 Global begrenzung = LoadImage("gfx\rand.bmp") Global sp1st ;bedeutet: Spieler 1 Steuerung Global sp2st Global ysp1 ;für die Y-Position des 1. Spielers Global ysp2 ;für die Y-Position des 2. Spielers Global xkugel# ;X-Pos. der Kugel als Kommazahl Global ykugel# ;Y-Pos. der Kugel als Kommazahl Global winkel ;gibt den Flugwinkel der Kugel an Global geschwindigkeit=5 ;die Fluggeschwindgikeit der Kugel Function resetkugel() xkugel=xmax/2:ykugel=ymax/2 If Rand(0,1)=1 Then winkel=Rand(105,45) Else winkel=Rand(315,225);der Winkel wird durch Zufall ermittelt End Function SetBuffer BackBuffer() Global frametimer = CreateTimer(60) SeedRnd MilliSecs() Repeat WaitTimer (frametimer) beweglichkeit=geschwindigkeit For z2=0 To 1 If z2=1 Then y=ymax-20 Else y=0 For z= 0 To xmax/20 DrawImage begrenzung,z*20,y Next Next ;Steuerung ;Welche Art If KeyHit(2) Then sp1st=sp1st+1;die Zahlentaste 1 If KeyHit(3) Then sp2st=sp2st+1;die Zahlentaste 2 ;keyboard If KeyDown(208) And sp1st=1 Then ysp1=ysp1-beweglichkeit;linke Pfeiltaste If KeyDown(200) And sp1st=1 Then ysp1=ysp1+beweglichkeit;rechte Pfeiltaste If KeyDown(17) And sp2st=1 Then ysp2=ysp2-beweglichkeit;linke Pfeiltaste If KeyDown(31) And sp2st=1 Then ysp2=ysp2+beweglichkeit;rechte Pfeiltaste ;Maus If sp1st=2 Then ysp1=ysp1+MouseYSpeed() If sp2st=2 Then ysp2=ysp2+MouseYSpeed() ;Computer If ysp1>ykugel And sp1st=0 Then ysp1=ysp1-beweglichkeit If ysp1<ykugel And sp1st=0 Then ysp1=ysp1+beweglichkeit If ysp2>ykugel And sp2st=0 Then ysp2=ysp2-beweglichkeit If ysp2<ykugel And sp2st=0 Then ysp2=ysp2+beweglichkeit ;begrenzung If ysp1<60 Then ysp1=60 If ysp1>ymax-60 Then ysp1=ymax-60 If ysp2<60 Then ysp2=60 If ysp2>ymax-60 Then ysp2=ymax-60 ;; ;; If ykugel<30 Then winkel=180-winkel ;damit prallt die Kugel ab EndIf If ykugel>ymax-30 Then winkel=180-winkel EndIf ;;Collision If ImagesCollide(spieler1,ysp1,ymax-10,0,kugel,xkugel,ykugel,0) Then;wenn eine Kollision ist winkel=360-winkel ;prallt die Kugel ab abweichung=2*(ysp1-xkugel) ;damit kannst du die Richtung der Kugel steuern winkel=winkel+abweichung EndIf If ImagesCollide(spieler2,ysp2,10,0,kugel,xkugel,ykugel,0) Then winkel=360-winkel abweichung=2*(ysp2-xkugel) winkel=winkel-abweichung EndIf If winkel>360 Then winkel=winkel-360 If winkel<0 Then winkel=winkel+360 If xkugel<-10 Then ;oben fehlersp2=fehlersp2+1 ;der Obere bekommt einen Fehlerpunkt dazu resetkugel ;ein Funktionsaufruf EndIf If xkugel>xmax+10 Then ;unten fehlersp1=fehlersp1+1 ;der Untere bekommt einen Fehlerpunkt dazu resetkugel ;ein Funktionsaufruf EndIf ;einige Informationen werden auf den Bildschirm gemalt Text 200,300,"Geschwindigkeit:" + geschwindigkeit Text 500,300,"Spielstand: "+fehlersp2 + " : " + fehlersp1 ;damit du die Steuerungsart sehen kannst Text xmax-300,ymax-(ymax-25),"Spieler1" If sp1st>0 Then If sp1st=2 Then Text xmax-200,ymax-(ymax-25),"Maussteuerung" Else Text xmax-200,ymax-(ymax-25),"Tastatursteuerung" Else Text xmax-200,ymax-(ymax-25),"Computer" EndIf ;If spieler1man>0 Then Text 250,ymax-25,scorep1 Text xmax-(xmax-25),ymax-(ymax-25),"Spieler2" If sp2st>0 Then If sp2st=2 Then Text xmax-(xmax-125),ymax-(ymax-25),"Maussteuerung" Else Text xmax-(xmax-125),ymax-(ymax-25),"Tastatursteuerung" EndIf Else Text xmax-(xmax-125),ymax-(ymax-25),"Computer" EndIf xkugel=xkugel+Cos(winkel)*geschwindigkeit ykugel=ykugel-Sin(winkel)*geschwindigkeit resetkugel DrawImage kugel,xkugel,ykugel;nur damit man sieht, das sie existiert DrawImage spieler1,xmax-10,ysp1 DrawImage spieler2,10,ysp2 Flip Cls Until KeyHit(1) End ; Nur ich kann jetzt zwar die Spieler bewegen aber der Ball fliegt noch nicht los...es fehlt im glaub der "startschuss" mfg stoertebecker |
||
0penguin0 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
stoertebecker hat Folgendes geschrieben:
geht das überhautp??? er wartet, zeigt alles an, löscht es sofort wieder und wartet... versteh ich nicht ![]() der fehler ist da: stoertebecker hat Folgendes geschrieben: Code: [AUSKLAPPEN] ... Repeat WaitTimer (frametimer) ... xkugel=xkugel+Cos(winkel)*geschwindigkeit ykugel=ykugel-Sin(winkel)*geschwindigkeit resetkugel ; <- !!!!!!!!!!!!!!!!!!!!!!!!!!!! WEG DAMIT! DrawImage kugel,xkugel,ykugel;nur damit man sieht, das sie existiert DrawImage spieler1,xmax-10,ysp1 DrawImage spieler2,10,ysp2 Flip Cls Until KeyHit(1) End ; du bewegts die kugel und setzt sie geleich danach wieder auf den ausgangspunkt! |
||
i never finish anyth |
![]() |
Kryan |
![]() Antworten mit Zitat ![]() |
---|---|---|
Zitat: er wartet, zeigt alles an, löscht es sofort wieder und wartet...
Ehm...hier liegt eines seiner Probleme: er hat nirgendswo SetBuffer BackBuffer() stehen.... Aber wenn er das hinschreibt, dann ist dein Einwand falsch, Pinguin. Denn er wartet, zeigt alles auf dem FrontBuffer und löscht alles in dem BackBuffer. @stoertebecker: also einfach nur ein Code: [AUSKLAPPEN] SetBuffer BackBuffer()
nach Graphics hinschreiben... |
||
Webspaceanbieter?
Klick hier! Kultige Spieleschmiede? Klick hier! |
stoertebecker |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
doch ich hab doch ein SetBuffer Backbuffer() nach graphics stehen..
nach den ganzen variablen! oder muss ich das direkt danach? oder in die repeat schleife? mfg stoertebecker |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group