Mehrere Probleme in einem Spiel! Schleife, etc
Übersicht

![]() |
ReLeNtLeSSBetreff: Mehrere Probleme in einem Spiel! Schleife, etc |
![]() Antworten mit Zitat ![]() |
---|---|---|
Code: [AUSKLAPPEN] Graphics 1280,1024,32 SetBuffer BackBuffer() ;LoadImage;Loadsound Global auto=LoadImage("auto.bmp") Global autoruck=LoadImage("autoruck1.bmp") Global crash=LoadImage("crash.bmp") Global baum=LoadImage("baum.bmp") Global crash2=LoadImage("crash2.bmp") MaskImage auto,255,0,255 MaskImage autoruck,255,0,255 MaskImage crash,255,0,255 MaskImage baum,255,0,255 MaskImage crash2,255,0,255 ;Benötigte festgelegte Zustaende und Vars font$=LoadFont("Arial",40,True,False,False) SetFont font$ Global y1=100 Global y11=400 Global y21=700 Global autox=750 Global autoy=950 Global counter=0 Global points=0 Global counter_spielzeit=0 Global punkte_timer=0 Global aut_timer=0 Global by1=-20 Global by2=-180 Global by3=-350 Global by4=0 Global by5=-250 Global by6=-450 Global crashcount=0 Global displaytext=1 ;Types Type auto Field car_x Field car_y End Type ;Hautpschleife time1=MilliSecs() Repeat landscape() auto() create_autos() autos_bewegen() kollisionen() If displaytext=1 Then Color(255,0,0) Text 0,0,"Aktuelle Punktzahl: "+points Text 0,30,"Aktuelle Spielzeit: "+time4+" Secs" Text 0,60,"Bisherige Crashes: "+crashcount Color(255,255,255) EndIf time2=MilliSecs() time3=time2-time1 time4=time3/600 Flip Cls Until KeyHit(1) ;Functions Function menu() End Function ;__________________ Function landscape() Color(162,156,156) Rect 401,0,500,1024 Color(0,255,0) Rect 0,0,400,1024 Rect 901,0,400,1024 Color(255,255,255) Rect 650,y1,3,100,1 Rect 650,y11,3,100,1 Rect 650,y21,3,100,1 Rect 400,0,1,1024 Rect 900,0,1,1024 DrawImage(baum,60,by1) DrawImage(baum,230,by2) DrawImage(baum,310,by3) DrawImage(baum,900,by4) DrawImage(baum,1100,by5) DrawImage(baum,1200,by6) by1=by1+2 by2=by2+2 by3=by3+2 by4=by4+2 by5=by5+2 by6=by6+2 y1=y1+2 y11=y11+2 y21=y21+2 If by1=1024 Then by1=-20 If by2=1024 Then by2=-180 If by3=1024 Then by3=-350 If by4=1024 Then by4=0 If by5=1024 Then by5=-250 If by6=1024 Then by6=-450 If y1=1024 Then y1=0 If y11=1024 Then y11=0 If y21=1024 Then y21=0 End Function ;________________ Function auto() DrawImage auto,autox,autoy If KeyDown(205)=1 Then autox=autox+4 If KeyDown(203)=1 Then autox=autox-4 If KeyDown(200)=1 Then autoy=autoy-4 If KeyDown(208)=1 Then autoy=autoy+2 If autox<402 Then autox=402 If autox>850 Then autox=850 If autoy<0 Then autoy=0 If autoy>926 Then autoy=926 End Function ;______________________ Function create_autos() counter=counter+1 If counter>=30 Then counter=0 info.auto = New auto info\car_x = Rnd(402,850) info\car_y = -20 DrawImage autoruck,info\car_x,info\car_y points=points+10 End If End Function ;__________________ Function kollisionen() For info.auto = Each auto If ImagesCollide(auto,autox,autoy,0,autoruck,info\car_x,info\car_y ,0) Then DrawImage crash,450,450 crashcount=crashcount+1 points=points-10 EndIf If crashcount>=3 Then displaytext=0 Cls DrawImage crash2,0,0 Text 345,500,"Youve totally Crashed! Save Highscore? (y/n)? WaitKey() If KeyDown(44) Then highscorefile$=WriteFile("Your_Highscore.txt") CloseFile highscorefile$ stream$=OpenFile("Your_Highscore.txt") WriteLine stream$,"Points: "+points+" Zeit: "+time4 End EndIf If KeyDown(49) Then menu=1 EndIf EndIf Next End Function ;------------------------ Function autos_bewegen() For info.auto = Each auto info\car_y=info\car_y+6 DrawImage autoruck,info\car_x,info\car_y Next End Function ;----------------------- ;__________________________ So meine Probleme sind folgende: 1. Er zeigt mir bei der Highscore Spielzeit nur "0" an 2. Wie schaff ich es das der nich kontinurirlich überprüft ob es ein crash is sondern das er wirklich nur einen punkt abzieht? Vielen Dank für Hilfe ![]() |
||
![]() |
Meoqan |
![]() Antworten mit Zitat ![]() |
---|---|---|
hi!
so wie ich das sehe soltest du nicht alles in Functionen packen wenn dann mit gosub. und einen einfachen klapp schalter bekommst du so: Code: [AUSKLAPPEN] If ImagesCollide(auto,autox,autoy,0,autoruck,info\car_x,info\car_y ,0) Then if points_check=0 then points_check=1 points=points-10 endif .... else points_check=0 endif |
||
![]() |
ReLeNtLeSS |
![]() Antworten mit Zitat ![]() |
---|---|---|
danke teste ich mal! ![]() /edit: sorry, aber das löst nich mein problem... |
||
- Zuletzt bearbeitet von ReLeNtLeSS am Mo, Okt 22, 2007 22:04, insgesamt einmal bearbeitet
HyDr0x |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Meoqan hat Folgendes geschrieben: hi!
so wie ich das sehe soltest du nicht alles in Functionen packen wenn dann mit gosub. Das ist wohl das dümmste was ich je gehört habe wenn ich das mal so sagen darf. ![]() Edit: vermutung war wie vermutet falsch ^^. Aber eigentlich sollte der Timer doch funtzen. habs bei mir versucht und es ging ... |
||
![]() |
ReLeNtLeSS |
![]() Antworten mit Zitat ![]() |
---|---|---|
HyDr0x hat Folgendes geschrieben: Meoqan hat Folgendes geschrieben:
hi!
so wie ich das sehe soltest du nicht alles in Functionen packen wenn dann mit gosub. Das ist wohl das dümmste was ich je gehört habe wenn ich das mal so sagen darf. ![]() Edit: vermutung war wie vermutet falsch ^^. Aber eigentlich sollte der Timer doch funtzen. habs bei mir versucht und es ging ... Worauf beziehst du das? Ich hab das Problem, das er bei einem Crash nur EINMAL plus eins machen soll, aber er macht es so lang wie die bilder sich schneiden... |
||
HyDr0xBetreff: Re: Mehrere Probleme in einem Spiel! Schleife, etc |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Zitat: So meine Probleme sind folgende: 1. Er zeigt mir bei der Highscore Spielzeit nur "0" an Da drauf beziehe ich mich, dachte du hast probs mit der Spielzeit anzeige ... |
||
![]() |
ReLeNtLeSS |
![]() Antworten mit Zitat ![]() |
---|---|---|
die habich gelöst, ich hatte time4 nicht global... es geht also nur noch um das crash problem,
trotzdem danke^^ |
||
![]() |
Meoqan |
![]() Antworten mit Zitat ![]() |
---|---|---|
juhu ich bin dumm *freu*... dann werd ich mich gleich mal mit diesem thema auseinander setzen!
...5min später... also: so finde ich die function am sinvollsten: Code: [AUSKLAPPEN] ergebnis=Rechnen(15,3) END FUNCTION Rechnen(Zahl1,Zahl2) RETURN Zahl1*Zahl2 END FUNCTION für einen bereich der keinen wert zurück liefert nehme ich gosub was nen kleinen ticken schneller ist... naja ist hose wie jacke... =) nur wenn man global vergisst gibts nen problem |
||
![]() |
ReLeNtLeSS |
![]() Antworten mit Zitat ![]() |
---|---|---|
logo xD
habich ja auch korrigiert... |
||
![]() |
Meoqan |
![]() Antworten mit Zitat ![]() |
---|---|---|
so ich hab jetzt dein programm etwas verändert und probiert und probiert und probiert aber ich bekomme kein crash hin... ganze 5 min war meine längste spielzeit...
zu den änderungen: wenn dein gegnerisches auto auserhalb vom bildschirm ist soltest du es nicht weiter fahren lassen sondern mit DELETE löschen. die type habe ich einen wert hinzgefügt jetzt funktioniert die kollision richtig dem image vom auto habe ich einen anderen namen gegeben dasonst die type nicht funkt (ich hoffe es war so vorgesehen) hab ich das bild cash über das auto gelegt ansonsten mach das rückgänig versuch mal den debug modus dann weisst du genau wo der fehler liegt. Code: [AUSKLAPPEN] Graphics 1280,1024,32 SetBuffer BackBuffer() ;LoadImage;Loadsound Global i_auto=LoadImage("auto.bmp") Global autoruck=LoadImage("autoruck1.bmp") Global crash=LoadImage("crash.bmp") Global baum=LoadImage("baum.bmp") Global crash2=LoadImage("crash2.bmp") MaskImage i_auto,255,0,255 MaskImage autoruck,255,0,255 MaskImage crash,255,0,255 MaskImage baum,255,0,255 MaskImage crash2,255,0,255 ;Benötigte festgelegte Zustaende und Vars font$=LoadFont("Arial",40,True,False,False) SetFont font$ Global y1=100 Global y11=400 Global y21=700 Global autox=750 Global autoy=950 Global counter=0 Global points=0 Global counter_spielzeit=0 Global punkte_timer=0 Global aut_timer=0 Global by1=-20 Global by2=-180 Global by3=-350 Global by4=0 Global by5=-250 Global by6=-450 Global crashcount=0 Global displaytext=1 ;Types Type auto Field car_x Field car_y Field points_check End Type Global auto.auto ;Hautpschleife time1=MilliSecs() Repeat Gosub landscape Gosub goauto Gosub create_autos Gosub autos_bewegen Gosub kollisionen If displaytext=1 Then Color(255,0,0) Text 0,0,"Aktuelle Punktzahl: "+points Text 0,30,"Aktuelle Spielzeit: "+time4+" Secs" Text 0,60,"Bisherige Crashes: "+crashcount Color(255,255,255) EndIf time2=MilliSecs() time3=time2-time1 time4=time3/600 Flip Cls Until KeyHit(1) ;gosubs ;P ;__________________ .landscape Color(162,156,156) Rect 401,0,500,1024 Color(0,255,0) Rect 0,0,400,1024 Rect 901,0,400,1024 Color(255,255,255) Rect 650,y1,3,100,1 Rect 650,y11,3,100,1 Rect 650,y21,3,100,1 Rect 400,0,1,1024 Rect 900,0,1,1024 DrawImage(baum,60,by1) DrawImage(baum,230,by2) DrawImage(baum,310,by3) DrawImage(baum,900,by4) DrawImage(baum,1100,by5) DrawImage(baum,1200,by6) by1=by1+2 by2=by2+2 by3=by3+2 by4=by4+2 by5=by5+2 by6=by6+2 y1=y1+2 y11=y11+2 y21=y21+2 If by1=1024 Then by1=-20 If by2=1024 Then by2=-180 If by3=1024 Then by3=-350 If by4=1024 Then by4=0 If by5=1024 Then by5=-250 If by6=1024 Then by6=-450 If y1=1024 Then y1=0 If y11=1024 Then y11=0 If y21=1024 Then y21=0 Return ;________________ .goauto DrawImage i_auto,autox,autoy If KeyDown(205)=1 Then autox=autox+4 If KeyDown(203)=1 Then autox=autox-4 If KeyDown(200)=1 Then autoy=autoy-4 If KeyDown(208)=1 Then autoy=autoy+2 If autox<402 Then autox=402 If autox>850 Then autox=850 If autoy<0 Then autoy=0 If autoy>926 Then autoy=926 Return ;______________________ .create_autos counter=counter+1 If counter>=30 Then counter=0 auto = New auto auto\car_x = Rnd(402,850) auto\car_y = -20 DrawImage autoruck,auto\car_x,auto\car_y points=points+10 End If Return ;__________________ .kollisionen For auto.auto = Each auto If ImagesCollide(i_auto,autox,autoy,0,autoruck,auto\car_x,auto\car_y ,0) Then DrawImage crash,autox,autoy If auto\points_check=0 auto\points_check=1 crashcount=crashcount+1 points=points-10 EndIf Else auto\points_check=0 EndIf If crashcount>=3 Then displaytext=0 Cls DrawImage crash2,0,0 Text 345,500,"Youve totally Crashed! Save Highscore? (y/n)? WaitKey() If KeyDown(44) Then highscorefile$=WriteFile("Your_Highscore.txt") CloseFile highscorefile$ stream$=OpenFile("Your_Highscore.txt") WriteLine stream$,"Points: "+points+" Zeit: "+time4 End EndIf If KeyDown(49) Then menu=1 EndIf EndIf Next Return ;------------------------ .autos_bewegen For auto.auto = Each auto auto\car_y=auto\car_y+6 DrawImage autoruck,auto\car_x,auto\car_y If auto\car_y>1024 Then Delete auto Next Return ;----------------------- ;__________________________ |
||
meine codes sind die essenz des bössen. nicht du veränderst meine codes sondern meine codes verändern dich! |
![]() |
ReLeNtLeSS |
![]() Antworten mit Zitat ![]() |
---|---|---|
GoSub?
Funktionen sind ja wohl mal viel besser oO Aber trtzdem danke für deine Mühe, ich guck was ich daraus entnehmen kann... /Edit: Probleme gelöst! |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group