Bei Ping-Pong auch hoch und runter

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

enaz

Betreff: Bei Ping-Pong auch hoch und runter

BeitragSo, Okt 08, 2006 20:51
Antworten mit Zitat
Benutzer-Profile anzeigen
Wie bekomme ich das hin dass ich bei ping-pong auch hoch und runter gehen kann?
Quasi so wie bei einem Tennisspiel ohne Netz. Versuche es schon 3 Stunden,aber ich schaffe es einfach nicht.
Hoffe ihr könnt mir helfen

Code: [AUSKLAPPEN]
global xmax=1024,ymax=768
Graphics xmax,ymax,32,1
SetBuffer BackBuffer()
Global frametimer = CreateTimer(60)
SeedRnd MilliSecs()


Global kugel=LoadImage("kugel.bmp");damit wird die Kugel in eine Variable geladen
MidHandle kugel ;der Urspung wird auf den Mittelpunkt gelegt, das macht sich bei Berechnungen besser
;auf das Einstellen der Tranzparenzfarbe kann verzichtet werden, weil sie Standard mäßig schwarz ist.
MaskImage kugel,255,255,255

Global spieler1=LoadImage("schlaeger.bmp");damit ist der Untere gemeint
MidHandle spieler1;auch dieser bekommt seine Ursprung in die Mitte (s.Kugel)
MaskImage spieler1,255,255,255;hier müssen wir die Tranzparenzfarbe angeben, weil sie vom Standard abweicht

Global spieler2=LoadImage("schlaeger.bmp");damit ist der Obere gemeint
MidHandle spieler2;auch dieser bekommt seine Ursprung in die Mitte (s.Kugel)
MaskImage spieler2,255,255,255;hier müssen wir die Tranzparenzfarbe angeben, weil sie vom Standard abweicht


Global xsp1=xmax/2;also in der Mitte
Global xsp2=xmax/2
Global sp1st
Global sp2st
Global xkugel#
Global ykugel#
Global winkel
Global geschwindigkeit=5
Global fehlersp1
Global fehlersp2
Global beweglichkeit


ClsColor 255,32,0;damit wird der Hintergrund rot, du kanst sonst die Spieler und Seitenwände nicht sehen

resetkugel;damit sie an der richtigen Position ist

Repeat
Waittimer (frametimer)

beweglichkeit=geschwindigkeit

If KeyHit(14) Then resetkugel;wenn die Löschen Taste gedrückt wurde wird die Kugel zurück gesetzt

;die Spielersteuerung
If KeyHit(2) Then sp1st=sp1st+1;die Zahlentaste 1
If KeyHit(3) Then sp2st=sp2st+1;die Zahlentaste 2

If sp1st>2 then sp1st=0
If sp2st>2 then sp2st=0

;die automatische Steuerung, wenn die Steuerungsvariable 0 ist:
If xsp1>xkugel And sp1st=0 Then xsp1=xsp1-beweglichkeit
If xsp1<xkugel And sp1st=0 Then xsp1=xsp1+beweglichkeit

If xsp2>xkugel And sp2st=0 Then xsp2=xsp2-beweglichkeit
If xsp2<xkugel And sp2st=0 Then xsp2=xsp2+beweglichkeit

;die Tastatursteuerung, wenn die Steuerungsvariable 1 ist:
If KeyDown(203) And sp1st=1 Then xsp1=xsp1-beweglichkeit;linke Pfeiltaste
If KeyDown(205) And sp1st=1 Then xsp1=xsp1+beweglichkeit;rechte Pfeiltaste


If KeyDown(44) And sp2st=1 Then xsp2=xsp2-beweglichkeit;Y Taste
If KeyDown(45) And sp2st=1 Then xsp2=xsp2+beweglichkeit;X Taste

;die Maussteuerung, wenn die Steuerungsvariable 2 ist:
If sp1st=2 Then xsp1=xsp1+MouseXSpeed()
If sp2st=2 then xsp2=xsp2+MouseXSpeed()

;die Überprüfung:
If xsp1<70 Then xsp1=70
If xsp1>xmax-70 Then xsp1=xmax-70
If xsp2<70 Then xsp2=70
If xsp2>xmax-70 Then xsp2=xmax-70

;die Kollisionsabfrage der Spieler
If ImagesCollide(spieler1,xsp1,ymax-10,0,kugel,xkugel,ykugel,0) Then;wenn eine Kollision ist
 winkel=360-winkel ;prallt die Kugel ab
 abweichung=2*(xsp1-xkugel) ;damit kannst du die Richtung der Kugel steuern
 winkel=winkel+abweichung
EndIf

If ImagesCollide(spieler2,xsp2,10,0,kugel,xkugel,ykugel,0) Then
 winkel=360-winkel
 abweichung=2*(xsp2-xkugel)
 winkel=winkel-abweichung
EndIf

;damit der Winkel nicht über den Bereich von 0-360 geht:
If winkel>360 Then winkel=winkel-360
If winkel<0 Then winkel=winkel+360


;Kollisionsabfrage Seitenwände
If xkugel<60 Then
 winkel=180-winkel ;damit prallt die Kugel ab
EndIf

If xkugel>xmax-60 Then
 winkel=180-winkel
EndIf

;wenn die Kugel durchgelassen wurde
If ykugel<-10 Then ;oben
 fehlersp2=fehlersp2+1 ;der Obere bekommt einen Fehlerpunkt dazu
 resetkugel ;ein Funktionsaufruf
EndIf

If ykugel>ymax+10 Then ;unten
  fehlersp1=fehlersp1+1 ;der Untere bekommt einen Fehlerpunkt dazu
  resetkugel ;ein Funktionsaufruf
EndIf



;das Berechnen der Kugelkoordinaten
xkugel=xkugel+Cos(winkel)*geschwindigkeit
ykugel=ykugel-Sin(winkel)*geschwindigkeit

;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 55,ymax-25,"Spieler1"
If sp1st>0 Then
        If sp1st=2 Then Text 120,ymax-25,"Maussteuerung" Else Text 120,ymax-25,"Tastatursteuerung"
        Else Text 120,ymax-25,"Computer"
EndIf
;If spieler1man>0 Then Text 250,ymax-25,scorep1

Text 55,5,"Spieler2"
If sp2st>0 Then
 If sp2st=2 Then
  Text 120,5,"Maussteuerung"
 Else
  Text 120,5,"Tastatursteuerung"
 Endif
Else
  Text 120,5,"Computer"
EndIf


DrawImage kugel,xkugel,ykugel;nur damit man sieht, das sie existiert
DrawImage spieler1,xsp1,ymax-10
DrawImage spieler2,xsp2,10

Flip ;da wir den Hintergrundpuffer aktiviert haben, wechseln wir jetzt die Seiten, damit wir was sehen
Cls ;der nichtsichtbare Bereich wird gelöscht
Until KeyHit(1)
End

 
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

Kleiner satan

BeitragSo, Okt 08, 2006 21:11
Antworten mit Zitat
Benutzer-Profile anzeigen
wie meinst du hoch und runter?
 

enaz

BeitragSo, Okt 08, 2006 21:14
Antworten mit Zitat
Benutzer-Profile anzeigen
bei normalen Ping-Pong kan man nur nach Links und nach Rechts. Ich möchte jedoch dass man mit dem Schläger auch hoch un runter gehen kann.
Sorry hab mich ein bisschen schlecht ausgedrückt

Schranz0r

BeitragSo, Okt 08, 2006 21:22
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]
DrawImage spieler1,xsp1,MouseY()


Mit der Tastertursteuerung musst du halt per Tastendruck den Y wert verändern.

EDIT:

Oder MouseYSpeed()

teste einfach, was dir lieber ist.
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!HAUPTSACH et kost VIEL!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  • Zuletzt bearbeitet von Schranz0r am So, Okt 08, 2006 21:25, insgesamt einmal bearbeitet

robotx

BeitragSo, Okt 08, 2006 21:23
Antworten mit Zitat
Benutzer-Profile anzeigen
Du veränderst die Y Position deines Spielers. Genauso wie bei der X -Achse.

IF KeyDown(up_key) Then ypos = ypos +1
If KeyDown(down_key) Then ypos = ypos -1

DrawImage schläger,xpos,ypos

Nur mal so als Pseudo Code.

mfg robotx
www.botbomb.robotzgames.de
www.robotzgames.de

Schranz0r

BeitragSo, Okt 08, 2006 21:27
Antworten mit Zitat
Benutzer-Profile anzeigen
robotx hat Folgendes geschrieben:

IF KeyDown(up_key) Then ypos = ypos +1
If KeyDown(down_key) Then ypos = ypos -1



Falsch, er hat B3D und net BMax


deshalb:

Code: [AUSKLAPPEN]

If KeyDown(208) Then ypos = ypos +1
If KeyDown(200) Then ypos = ypos -1
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!HAUPTSACH et kost VIEL!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

robotx

BeitragSo, Okt 08, 2006 21:31
Antworten mit Zitat
Benutzer-Profile anzeigen
War eigentlich auch für B3D gedacht, mir sind nur die Scancodes nicht eingefallen, deshalb up_key...und der Hinweis auf Pseudo Code.
Very Happy

mfg robotx
www.botbomb.robotzgames.de
www.robotzgames.de
 

enaz

BeitragSo, Okt 08, 2006 21:34
Antworten mit Zitat
Benutzer-Profile anzeigen
könnnte einer das vll. einer an meinem Code zeigen?
Bin nämlcih noch nich so erfahren

Schranz0r

BeitragSo, Okt 08, 2006 21:40
Antworten mit Zitat
Benutzer-Profile anzeigen
na das machst du schon schön selber.. Very Happy


ich gib dir nen Tip:

Code: [AUSKLAPPEN]
;die Tastatursteuerung, wenn die Steuerungsvariable 1 ist:
If KeyDown(203) And sp1st=1 Then xsp1=xsp1-beweglichkeit;linke Pfeiltaste
If KeyDown(205) And sp1st=1 Then xsp1=xsp1+beweglichkeit;rechte Pfeiltaste


da kommt es hin !
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!HAUPTSACH et kost VIEL!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
 

enaz

BeitragSo, Okt 08, 2006 21:44
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]
If KeyDown(208) And sp1st=1 Then ysp1=ysp1-beweglichkeit
If KeyDown(200) And sp1st=1 Then ysp1=ysp1+beweglichkeit

x habe ich also mit y ersetzt doch es passiert nix.

robotx

BeitragSo, Okt 08, 2006 21:46
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]

;die Tastatursteuerung, wenn die Steuerungsvariable 1 ist:
If KeyDown(203) And sp1st=1 Then xsp1=xsp1-beweglichkeit;linke Pfeiltaste
If KeyDown(205) And sp1st=1 Then xsp1=xsp1+beweglichkeit;rechte Pfeiltaste


If KeyDown(208) And sp1st=1 Then ysp1 = ysp1 + beweglichkeit
If KeyDown(200) And sp1st=1 Then ysp1 = ysp1 - beweglichkeit


Hier mal die Tasterturabfrage für deinen Schläger 1. Dies musst du dann noch für deinen 2. Schläger einfügen.


Code: [AUSKLAPPEN]

DrawImage spieler1,xsp1,ysp1


Und das noch!


mfg robotx
PS: Fehler sind beabsichtigt und dienen der allgemeinen Belustigung
Edit: Wieso bin ich so langsam?!
www.botbomb.robotzgames.de
www.robotzgames.de

Schranz0r

BeitragSo, Okt 08, 2006 21:49
Antworten mit Zitat
Benutzer-Profile anzeigen
enaz hat Folgendes geschrieben:
Code: [AUSKLAPPEN]
If KeyDown(208) And sp1st=1 Then ysp1=ysp1-beweglichkeit
If KeyDown(200) And sp1st=1 Then ysp1=ysp1+beweglichkeit

x habe ich also mit y ersetzt doch es passiert nix.



Kann ja auch nicht:


Code: [AUSKLAPPEN]

Global xsp1=xmax/2     ;also in der Mitte
Global ysp1=ymax-10   ;10 Pixel über den unteren Rand



dann musst du noch den Player so zeichen:

such die stelle:

Code: [AUSKLAPPEN]
DrawImage spieler1,xsp1,ymax-10


und ersetzte mit

Code: [AUSKLAPPEN]
DrawImage spieler1,xsp1,ysp1
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!HAUPTSACH et kost VIEL!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
 

enaz

BeitragSo, Okt 08, 2006 22:01
Antworten mit Zitat
Benutzer-Profile anzeigen
juhu vielen dank an euch.habt mir sehr weitergeholfen.

Schranz0r

BeitragSo, Okt 08, 2006 22:05
Antworten mit Zitat
Benutzer-Profile anzeigen
enaz hat Folgendes geschrieben:
juhu vielen dank an euch.habt mir sehr weitergeholfen.



Euch?

Nagut wenn du das sagst... Confused


PS.: Schön tutorials lesen!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!HAUPTSACH et kost VIEL!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group