Rennspiel problem

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

Shark

Betreff: Rennspiel problem

BeitragSa, März 26, 2005 15:11
Antworten mit Zitat
Benutzer-Profile anzeigen
Graphics 800,600,32,2

SetBuffer BackBuffer ()

Auto1 = LoadImage ("Auto1.jpg") ;Auto1 laden
Auto2 = LoadImage ("Auto2.jpg") ;Auto2 laden
strasse = LoadImage ("strasse.jpg") ;strasse laden
Global posx1 = 10 ; X Position Auto1
Global posy1 = 300 ; Y Position Auto1

Global posx2 = 300 ; X Position Auto2
Global posy2 = 300 ; Y Position Auto2


Global speedx = 0 ;Speed des Autos
Global speedy = 0 ;Speed des Autos

While Not KeyHit(1) ;Hauptschleife

speedplusx = 6
speedplusy = 6

If KeyDown(200) Then
speedx = speedx - speedplusx
ElseIf KeyDown(208)
speedx = speedx + speedplusx
Else
if speedx<0 then
;nichts tuen
Else
speedx = speedx/speedplusx
EndIf
EndIf




If KeyDown(203) Then
speedy = speedy - speedplusy
ElseIf KeyDown(205)
speedy = speedy + speedplusy
Else
If speedy<0 Then
Else
speedy = speedy/speedplusy
EndIf
EndIf


posx1 = posx1 - speedx
posx1 = posx1 + speedx

posy1 = posy1 - speedy
posy1 = posy1 + speedy

DrawImage strasse,0,0 ;stass zeichnen
DrawImage Auto1, posx1, posy1 ;Auto1 zeichnen
DrawImage Auto2, posx2, posy2 ;Auto2 zeichnen



Flip


Wend ;ende der Hauptschleife

End




Das Auto will einfach nicht fahren ich weiß nicht woran es liegt könntet ihr bitte helfen Crying or Very sad

Artemis

BeitragSa, März 26, 2005 15:24
Antworten mit Zitat
Benutzer-Profile anzeigen
Also erstmal sind da ein paar fehler drin:
BlitzBasic: [AUSKLAPPEN]

Graphics 800,600,32,2
SetBuffer BackBuffer ()
;Auto1 = LoadImage (\"Auto1.jpg\") ;Auto1 laden
;Auto2 = LoadImage (\"Auto2.jpg\") ;Auto2 laden
;strasse = LoadImage (\"strasse.jpg\") ;strasse laden
Global posx1 = 10 ; X Position Auto1
Global posy1 = 300 ; Y Position Auto1
Global posx2 = 300 ; X Position Auto2
Global posy2 = 300 ; Y Position Auto2
Global speedx = 0 ;Speed des Autos
Global speedy = 0 ;Speed des Autos
;;;;;;;;;;;;;;;;;
Const speedplusx = 6 ;Das vor die Hauptschleife, da
Const speedplusy = 6 ;du dass nie änderst
;;;;;;;;;;;;;;;;;
While Not KeyHit(1) ;Hauptschleife
If KeyDown(200) Then
speedx = speedx - speedplusx
EndIf
If KeyDown(208)
speedx = speedx + speedplusx
If Not KeyDown(200) And Not KeyDown(208) Then
;If speedx<0 Then ;Was bringt das, wenn er nix tuen soll?
;nichts tuen
;Else
; speedx = speedx/speedplusx
;EndIf ;Besser so:
;;;;;;;;;;;;;;;;;;;;;;;;;
If speedx => 0 Then
speedx = speedx/speedplusx
EndIf
;;;;;;;;;;;;;;;;;;;;;;;;
EndIf
If KeyDown(203) Then
speedy = speedy - speedplusy
EndIf
If KeyDown(205)
speedy = speedy + speedplusy
If Not KeyDown(203) And Not KeyDown(205) Then
;Genauso wie oben
;If speedy<0 Then
;Else
;speedy = speedy/speedplusy
;EndIf
If speedy => 0 Then
speedy = spedy/speedplusy
EndIf
EndIf

posx1 = posx1 - speedx
posx1 = posx1 + speedx
posy1 = posy1 - speedy
posy1 = posy1 + speedy

ClsColor 10,10,10
Cls
Color 255,0,0
Rect posx1-5,posy1-5,10,10,1
Color 0,0,255
Rect posx2-5,posy2-5,10,10,1
;DrawImage strasse,0,0 ;stass zeichnen
;DrawImage Auto1, posx1, posy1 ;Auto1 zeichnen
;DrawImage Auto2, posx2, posy2 ;Auto2 zeichnen
Flip 0
Wend ;ende der Hauptschleife
End

Überleg dir das mal mit den vielen variablen.
Es kann sein, dassda ein logikfehler drin ist!

blitzmaster

BeitragSa, März 26, 2005 15:26
Antworten mit Zitat
Benutzer-Profile anzeigen
irgendwie durchblicke ich den Code nicht
soviel Variablen...
***************
Blitzmaster

Artemis

BeitragSa, März 26, 2005 15:27
Antworten mit Zitat
Benutzer-Profile anzeigen
eben!!

Artemis

BeitragSa, März 26, 2005 15:31
Antworten mit Zitat
Benutzer-Profile anzeigen
aus reiner intuition würde ich das so machen:
BlitzBasic: [AUSKLAPPEN]
Graphics 800,600,32,2 
SetBuffer BackBuffer ()
;Auto1 = LoadImage (\"Auto1.jpg\") ;Auto1 laden
;Auto2 = LoadImage (\"Auto2.jpg\") ;Auto2 laden
;strasse = LoadImage (\"strasse.jpg\") ;strasse laden
Global posx1 = 10 ; X Position Auto1
Global posy1 = 300 ; Y Position Auto1
Global posx2 = 300 ; X Position Auto2
Global posy2 = 300 ; Y Position Auto2
Global speedx = 0 ;Speed des Autos
Global speedy = 0 ;Speed des Autos
;;;;;;;;;;;;;;;;;
Const speedplusx = 6 ;Das vor die Hauptschleife, da
Const speedplusy = 6 ;du dass nie änderst
;;;;;;;;;;;;;;;;;
While Not KeyHit(1) ;Hauptschleife
If KeyDown(200) Then
posy1 = posy1 - speedplusy
posy2 = posy2 - speedplusy
EndIf
If KeyDown(208)
posy1 = posy1 + speedplusy
posy2 = posy2 + speedplusy
EndIf
If (Not KeyDown(200)) And (Not KeyDown(208)) Then
;If speedx<0 Then ;Was bringt das, wenn er nix tuen soll?
;nichts tuen
;Else
; speedx = speedx/speedplusx
;EndIf ;Besser so:
;;;;;;;;;;;;;;;;;;;;;;;;;
If speedx => 0 Then
speedx = speedx/speedplusx
EndIf
;;;;;;;;;;;;;;;;;;;;;;;;
EndIf
If KeyDown(203) Then
posx1 = posx1 - speedplusx
posx2 = posx2 - speedplusx
EndIf
If KeyDown(205)
posx1 = posx1 + speedplusx
posx2 = posx2 + speedplusx
EndIf
If (Not KeyDown(203)) And (Not KeyDown(205)) Then
;Genauso wie oben
;If speedy<0 Then
;Else
;speedy = speedy/speedplusy
;EndIf
If speedy => 0 Then
speedy = spedy/speedplusy
EndIf
EndIf

; posx1 = posx1 - speedx
; posx1 = posx1 + speedx
; posy1 = posy1 - speedy
; posy1 = posy1 + speedy

ClsColor 10,10,10
Cls
Color 255,0,0
Rect posx1-5,posy1-5,10,10,1
Color 0,0,255
Rect posx2-5,posy2-5,10,10,1
;DrawImage strasse,0,0 ;stass zeichnen
;DrawImage Auto1, posx1, posy1 ;Auto1 zeichnen
;DrawImage Auto2, posx2, posy2 ;Auto2 zeichnen
Flip
Wend ;ende der Hauptschleife
End
  • Zuletzt bearbeitet von Artemis am Sa, März 26, 2005 15:34, insgesamt einmal bearbeitet
 

DarkMike

BeitragSa, März 26, 2005 15:32
Antworten mit Zitat
Benutzer-Profile anzeigen
jo, viel übersichtlicher!
2 dinge sind unendlich die menschliche Dummheit und das Universum obwohl beim Universum bin ich mir nicht ganz sicher. (Albert Einstein)

Artemis

BeitragSa, März 26, 2005 15:32
Antworten mit Zitat
Benutzer-Profile anzeigen
und es funktioniert!!
wobei der sehr langsam reagert versuchs mal!
Da muss noch ein fehler sein!!

edit habs das flip 0 muss weg!!
 

Shark

BeitragSa, März 26, 2005 15:55
Antworten mit Zitat
Benutzer-Profile anzeigen
danke für die hilfe aber statt meine autos sind da zwo punkte rot blau Laughing
 

Shark

BeitragSa, März 26, 2005 16:08
Antworten mit Zitat
Benutzer-Profile anzeigen
Problem ist behoben !!!!!!!!!

stelle nachher höchst wahrscheinlich noch fragen Smile

Wegen geschwindigkeitsleisten und schaden aber das hat ja noch zeit Wink

Artemis

BeitragSa, März 26, 2005 17:40
Antworten mit Zitat
Benutzer-Profile anzeigen
jep!
die punkte durch deine autos ersetzen!
BT.
 

Shark

BeitragSa, März 26, 2005 22:26
Antworten mit Zitat
Benutzer-Profile anzeigen
EndIf
If posx2 < 0 posx2 = 0
If posx2 > 800 posx2 = 800
If posx1 > GraphicsWidth() posx1 = GraphicsWidth()




If posy2 < 0 posy2 = 0
If posy2 > 600 posy2 = 600
If posx2 > GraphicsWidth() posx2 = GraphicsWidth()

DrawImage strasse,0,0 ;stass zeichnen
DrawImage Auto1, posx1, posy1 ;Auto1 zeichnen
DrawImage Auto2, posx2, posy2 ;Auto2 zeichnen

das hab ich noch mal versuch einzubauen das die autos nicht nach rechts oder nach links kommen oder besser gesagt dürfen sie da nicht aus dem bildschirm kommen
hilft mir bitte habe den hundert mal umgeändert Embarassed
 

Ensign Joe

BeitragSa, März 26, 2005 22:57
Antworten mit Zitat
Benutzer-Profile anzeigen
einfach überprüfen if car1x < 0 then car1x = 0 und das halt mit x und so
aber ich würde types nehmen, ist einfacher zu überwachen WinkBlitzBasic: [AUSKLAPPEN]
Type car
Field x
Field y
Field speed
Field maxspeed
fiedl minspeed
End Type

car.car = New car
;die positiuionen und so setzen

For car.car = Each car
If KeyDown(200) Then car\speed = car\speed + 1
If KeyDown(208) Then car\speed = car\speed -1

If car\speed > car\maxspeed Then car\speed = car\maxspeed
If car\speed < car\minspeed Then car\speed = car\minspeed
Next
nur ein beispiel, also es gibt natürlich auch noch die routinen für das lenken und so, aber wo wären wir, wenn man nichts mhr selber machen müsste Wink

edit: beim rechten anschlag musst du
graphicswidth() - imagewidth(Bild vom Auto) machen, sonst fährt raus! Wink
und versuch mal graphicsheight() zu verwenden und nicht statisch 600, weil wenn jemand die auflösung ändert ists bisschen bescheuert Wink
Ich habe jetzt eine Pommesbude aufgemacht am Münchner Hauptbahnhof.
Und da ich Herbert Görgens heiße, heißt diese Pommesbude
Herbert's Pommesbude Smile
 

Shark

BeitragSo, März 27, 2005 16:26
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke aber ich weiß jetzt nicht ob das funtktioniert da mir blitz mir eine fehlermeldung macht
"Wend" without "while"

;Mein Persönliches Rennspiel!!!!!!!!!!!
;________________________________________________________________________________________________________
Graphics 800,600,32,2
SetBuffer BackBuffer ()
Auto1 = LoadImage ("Auto1.jpg") ;Auto1 laden
Auto2 = LoadImage ("Auto2.jpg") ;Auto2 laden
strasse = LoadImage ("strasse.jpg") ;strasse laden
Global posx1 = 10 ; X Position Auto1
Global posy1 = 300 ; Y Position Auto1
Global posx2 = 300 ; X Position Auto2
Global posy2 = 300 ; Y Position Auto2
Global speedx = 0 ;Speed des Autos
Global speedy = 0 ;Speed des Autos
;;;;;;;;;;;;;;;;;
Const speedplusx = 1
Const speedplusy = 1
;;;;;;;;;;;;;;;;;
While Not KeyHit(1) ;Hauptschleife
If KeyDown(200) Then ;nach vorne
posy1 = posy1 - speedplusy
Else If KeyDown(17) Then
posy2 = posy2 - speedplusy
EndIf
If KeyDown(208) Then ;nach hinten
posy1 = posy1 + speedplusy
Else If KeyDown(31)
posy2 = posy2 + speedplusy
EndIf
If (Not KeyDown(200)) And (Not KeyDown(208)) Then

If speedx => 0 Then
speedx = speedx/speedplusx
EndIf

EndIf
If KeyDown(203) Then ;nach links
posx1 = posx1 - speedplusx
Else If KeyDown(30) Then
posx2 = posx2 - speedplusx
EndIf
If KeyDown(205)
posx1 = posx1 + speedplusx
Else If KeyDown(32) Then ;nach rechts
posx2 = posx2 + speedplusx
EndIf
If (Not KeyDown(203)) And (Not KeyDown(205)) Then

If speedy => 0 Then
speedy = spedy/speedplusy
EndIf

If auto1x < 0 Then auto1x = 0
If auto2x < 0 Then auto2x = 0

If auto1x2 > GraphicsWidth() Then auto1x2 = 799
If auto2x2 > GraphicsWidth() Then auto2x2 = 799

DrawImage strasse,0,0 ;stass zeichnen
DrawImage Auto1, posx1, posy2 ;Auto1 zeichnen
DrawImage Auto2, posx2, posy2 ;Auto2 zeichnen

Wend ;ende der Hauptschleife
End

Artemis

BeitragSo, März 27, 2005 16:38
Antworten mit Zitat
Benutzer-Profile anzeigen
3Sachen:
1. Pack die Sch**** mal in den BB-Code Tag.
2. Formatier deinen Code mal, dann siehst du wo der Fehler ist!
3. Hier
BlitzBasic: [AUSKLAPPEN]
;Mein Persönliches Rennspiel!!!!!!!!!!!
;________________________________________________________________________________________________________
Graphics 800 ,600,32,2
SetBuffer BackBuffer ()
Auto1 = LoadImage (\"Auto1.jpg\") ;Auto1 laden
Auto2 = LoadImage (\"Auto2.jpg\") ;Auto2 laden
strasse = LoadImage (\"strasse.jpg\") ;strasse laden
Global posx1 = 10 ; X Position Auto1
Global posy1 = 300 ; Y Position Auto1
Global posx2 = 300 ; X Position Auto2
Global posy2 = 300 ; Y Position Auto2
Global speedx = 0 ;Speed des Autos
Global speedy = 0 ;Speed des Autos
;;;;;;;;;;;;;;;;;
Const speedplusx = 1
Const speedplusy = 1
;;;;;;;;;;;;;;;;;

While Not KeyHit (1) ;Hauptschleife

If KeyDown (200) Then ;nach vorne
posy1 = posy1 - speedplusy
Else If KeyDown (17) Then
posy2 = posy2 - speedplusy
EndIf

If KeyDown (208) Then ;nach hinten
posy1 = posy1 + speedplusy
Else If KeyDown (31)
posy2 = posy2 + speedplusy
EndIf

If (Not KeyDown (200) ) And (Not KeyDown (208) ) Then

If speedx => 0 Then
speedx = speedx / speedplusx
EndIf

EndIf

If KeyDown (203) Then ;nach links
posx1 = posx1 - speedplusx
Else If KeyDown (30) Then
posx2 = posx2 - speedplusx
EndIf

If KeyDown (205) Then
posx1 = posx1 + speedplusx
Else If KeyDown (32) Then ;nach rechts
posx2 = posx2 + speedplusx
EndIf

If (Not KeyDown (203) ) And (Not KeyDown (205) ) Then

If speedy => 0 Then
speedy = spedy / speedplusy
EndIf

If auto1x < 0 Then auto1x = 0
If auto2x < 0 Then auto2x = 0

If auto1x2 > GraphicsWidth () Then auto1x2 = 799
If auto2x2 > GraphicsWidth () Then auto2x2 = 799

DrawImage strasse,0,0 ;stass zeichnen
DrawImage Auto1, posx1, posy2 ;Auto1 zeichnen
DrawImage Auto2, posx2, posy2 ;Auto2 zeichnen
;#################################################
EndIf;<--------------------------------------------------------------DA
;#################################################

Wend ;ende der Hauptschleife

End

 

Shark

BeitragSo, März 27, 2005 16:48
Antworten mit Zitat
Benutzer-Profile anzeigen
also ich habe dein mal duruch meine ersetzt und der klappt halb erstens länder langen und die autos wollen net fahren komisch ???

wie machst du den das dein bb code so dahin ich kopiert das immer aus bb dahin ???

Artemis

BeitragSo, März 27, 2005 16:52
Antworten mit Zitat
Benutzer-Profile anzeigen
also du schreibst, was normal sein soll ganz normal!!
Dann drückst du in der leiste über dem eingabefenster auf den button BB-Code!
Dann fügst du deinen Code ein und drückst danach wieder BB-Code!!

Dieses nennt man Tags!
 

Shark

BeitragSo, März 27, 2005 17:02
Antworten mit Zitat
Benutzer-Profile anzeigen
danke aber dadurch fahren meine autos immer noch nicht da ist irgendwo ein fehler so ein mist!!!!
 

Gerhard

BeitragSo, März 27, 2005 22:12
Antworten mit Zitat
Benutzer-Profile anzeigen
Vorschlag: Flip Very Happy

Und was soll dies?
If (Not KeyDown (203) ) And (Not KeyDown (205) ) Then ...

posy2 beim auto1?

spedy?
 

Shark

BeitragDi, März 29, 2005 19:54
Antworten mit Zitat
Benutzer-Profile anzeigen
Also so jetzt will statt das Rennspiel lieber ein spaceshooter machen das ist denk ich einwenig leichter doch ich komme beim menu nicht weiter kann jemand helfen???BlitzBasic: [AUSKLAPPEN]
;Spaceshooter!
;_____________________________

Global posx4 = 0
Global posy4 = 0
Global posx5 = 1
Global posy5 = 1
Dim Schrift (2)
Schrift(1) = LoadFont(\"Arial\", 50, 0, 0, 0)
Schrift(2) = LoadFont(\"front\", 30, 0, 0, 0)




Print \"Spieler Nummer 1:\"
Input ()
Print \"Spieler Nummer 2:
Input ()

Graphics 800,600,32,2
SetBuffer BackBuffer ()
menu = LoadImage (\"menu.bmp\")
DrawImage menu, posx4, posy4

Rect 100,75, 600,450,(gefuellt)
Rect 120,95, 560,410,(gefuellt)
SetFont Schrift(2)
Text 350,150, \"Start Game\"
Text 350,300, \"Highscore\"
Text 390,400, \"End\"



Function Menue()

Repeat
Cls


If MouseDown(1)
If RectsOverlap(MouseX(),MouseY(),1,1,350,150,100,10)

Return menue_quit = 1
ElseIf RectsOverlap (MouseX(),MouseY(),1,1,390,400,100,10)
End
EndIf
EndIf

Flip
Until menue_quit = 1


End Function





 

Shark

BeitragDi, März 29, 2005 19:58
Antworten mit Zitat
Benutzer-Profile anzeigen
sorry für den dopple ein trag aber ich muss noch eins los werden ich will erst wenn ich startgame drücke das man den name eingibt machen nicht so rum das ist schwachsinnich Smile

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group