
Springen
Hier mal der Code, des Prog bleibt im ersten Scrren hängen und reagiert auf nichts.
Code: Alles auswählen
InitSprite()
InitKeyboard()
UseJPEGImageDecoder()
headx=0
heady=470
coverx = Random(700)
speed=3
covery=0
p=0
Procedure fall()
Repeat
covery+speed
Until covery>700
EndProcedure
Procedure pplus()
StartDrawing(ScreenOutput())
p+10
DrawText("You've got Str(p()) Points")
StopDrawing()
EndProcedure
Procedure pminus()
StartDrawing(ScreenOutput())
p-10
DrawText("You've got Str(p)) Points")
StopDrawing()
EndProcedure
OpenScreen(800,600,32,"R+ vs TH")
LoadSprite(0,"is.jpg",0)
LoadSprite(1,"TH.jpg",0)
LoadSprite(2,"R+.jpg",0)
LoadSprite(3,"titel.jpg",0)
Repeat
ExamineKeyboard()
If KeyboardPushed(#PB_Key_Return)
con=1
EndIf
If KeyboardPushed(#PB_Key_Escape)
quit=1
EndIf
FlipBuffers()
ClearScreen(0,0,0)
ExamineKeyboard()
DisplayTransparentSprite(3,130,150)
If quit=1
End
EndIf
Until con=1
Repeat
ExamineKeyboard()
FlipBuffers()
ClearScreen(0,0,0)
DisplayTransparentSprite(0,headx,heady)
DisplaySprite(1,coverx,covery)
DisplaySprite(2,coverx,covery)
fall()
If SpriteCollision(0,headx,heady,2,headx,heady)
pplus()
EndIf
If SpriteCollision(0,headx,heady,1,headx,heady)
pminus()
EndIf
If KeyboardPushed(#PB_Key_Right)
headx + 5
If headx > 680
headx = 680
EndIf
EndIf
If KeyboardPushed(#PB_Key_Left)
headx - 5
If headx < 0
headx = 0
EndIf
EndIf
Until KeyboardPushed(#PB_Key_Escape)
-
- Beiträge: 17389
- Registriert: 10.11.2004 03:22
grundsätzliche denkfehler:
- deine procedure fall() beinhaltet eine komplette schleife,
würde also erst verlassen, wenn covery größer als 700 wird.
- deine variablen sind nicht global, also sind die covery und speed,
die du in der procedure verwendest lokale variablen.
also ist speed innerhalb der proc = 0, also addierst du immer 0 zu covery,
also wird die nier größer als 700, also bleibt dein proggi innerhalb dieser proc hängen.
- deine procedure fall() beinhaltet eine komplette schleife,
würde also erst verlassen, wenn covery größer als 700 wird.
- deine variablen sind nicht global, also sind die covery und speed,
die du in der procedure verwendest lokale variablen.
also ist speed innerhalb der proc = 0, also addierst du immer 0 zu covery,
also wird die nier größer als 700, also bleibt dein proggi innerhalb dieser proc hängen.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Der Weise weiß, dass er ein Narr ist.
-
- Beiträge: 17389
- Registriert: 10.11.2004 03:22
weil du sie nicht als global definierst.
damit werden innerhalb der Proc neue lokale variablen generiert,
mit denen rechnest du dann.
es wäre aber eigentlich müßig, die variablen global zu definieren,
du kannst den vorgang genausogut innerhalb der hauptschleife abhandeln, ohne proc.
wobei es natürlich auch praktisch wäre, für den lerneffekt zumindest,
wenn du die proc so änderst, dass sie das gewünschte ergebnis bringt...
damit werden innerhalb der Proc neue lokale variablen generiert,
mit denen rechnest du dann.
es wäre aber eigentlich müßig, die variablen global zu definieren,
du kannst den vorgang genausogut innerhalb der hauptschleife abhandeln, ohne proc.
wobei es natürlich auch praktisch wäre, für den lerneffekt zumindest,
wenn du die proc so änderst, dass sie das gewünschte ergebnis bringt...
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Der Weise weiß, dass er ein Narr ist.
Also bei dem neuen Code schmiert er schobn mal nicht ab.
Dafür fallen die Typen aber nicht.
Dafür fallen die Typen aber nicht.
Code: Alles auswählen
InitSprite()
InitKeyboard()
UseJPEGImageDecoder()
headx=0
heady=470
coverx = Random(700)
speed=3
covery=0
p=0
Procedure fall()
coverx1 = Random(700)
coverx2 = Random(700)
speed=3
covery=0
Repeat
covery+speed
Until covery>700
EndProcedure
Procedure pplus()
p=0
StartDrawing(ScreenOutput())
p+10
DrawText("You've got Str(p) Points")
StopDrawing()
EndProcedure
Procedure pminus()
p=0
StartDrawing(ScreenOutput())
p-10
DrawText("You've got Str(p) Points")
StopDrawing()
EndProcedure
OpenScreen(800,600,32,"R+ vs TH")
LoadSprite(0,"is.jpg",0)
LoadSprite(1,"TH.jpg",0)
LoadSprite(2,"R+.jpg",0)
LoadSprite(3,"titel.jpg",0)
Repeat
ExamineKeyboard()
If KeyboardPushed(#PB_Key_Return)
con=1
EndIf
If KeyboardPushed(#PB_Key_Escape)
quit=1
EndIf
FlipBuffers()
ClearScreen(0,0,0)
ExamineKeyboard()
DisplayTransparentSprite(3,130,150)
If quit=1
End
EndIf
Until con=1
Repeat
ExamineKeyboard()
FlipBuffers()
ClearScreen(0,0,0)
DisplayTransparentSprite(0,headx,heady)
DisplaySprite(1,coverx2,covery)
DisplaySprite(2,coverx1,covery)
fall()
If SpriteCollision(0,headx,heady,2,headx,heady)
pplus()
EndIf
If SpriteCollision(0,headx,heady,1,headx,heady)
pminus()
EndIf
If KeyboardPushed(#PB_Key_Right)
headx + 5
If headx > 680
headx = 680
EndIf
EndIf
If KeyboardPushed(#PB_Key_Left)
headx - 5
If headx < 0
headx = 0
EndIf
EndIf
Until KeyboardPushed(#PB_Key_Escape)
-
- Beiträge: 17389
- Registriert: 10.11.2004 03:22
> Also bei dem neuen Code schmiert er schobn mal nicht ab
beim alten is er auch nich abgeschmiert, er hat nur nicht beendet.
> Dafür fallen die Typen aber nicht.
da hast du wieder das gleiche problem drin.
eine procedure ist ein unterprogramm, das komplett bearbeitet wird,
bevor zurückgesprungen wird.
wenn du komplett durchzählst bis 700, dann kommt er auch erst zurück,
wenn du bis 700 gezählt hast...
beim alten is er auch nich abgeschmiert, er hat nur nicht beendet.
> Dafür fallen die Typen aber nicht.
da hast du wieder das gleiche problem drin.
eine procedure ist ein unterprogramm, das komplett bearbeitet wird,
bevor zurückgesprungen wird.
wenn du komplett durchzählst bis 700, dann kommt er auch erst zurück,
wenn du bis 700 gezählt hast...
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Der Weise weiß, dass er ein Narr ist.