Grafik anhalten
Kleiner Tipp: Die bereitschaft Code zu korrigieren ist viel größer wenn er kein kopfschmerzenproduzierender Spaghettiteller ist, keine Goto+Label verwenden sondern Prozeduren. Wenn der Code Lesbar ist, ist die wahrscheinlichkeit groß, dass du den Fehler selbst findest.
Als kleinen Denkanstoß wie im generellen "anhalten" funktioniert: Wenn du grade nichts bewegst und alles an seiner stelle bleibt, dann hast du angehalten. Das Programm an sich läuft natürlich weiter, aber so funktioniert jede interaktive software. Selbst Windows ist in der äußersten Hülle nur eine große while-schleife.
Als kleinen Denkanstoß wie im generellen "anhalten" funktioniert: Wenn du grade nichts bewegst und alles an seiner stelle bleibt, dann hast du angehalten. Das Programm an sich läuft natürlich weiter, aber so funktioniert jede interaktive software. Selbst Windows ist in der äußersten Hülle nur eine große while-schleife.
der Code funktioniert so wie er ist eigentlich prima
@Thomas .. Optimieren (was immer das auch ist) kann man später noch.
Der Code ist außerdem in der Hinsicht kein SpaghettiCode, weil
er immernoch gut zu durchschauen ist. Thomas hat halt nur noch
nie was von Array's und/oder Listen gehört.
zum Problem
@Thomas Du musst eigentlich nur die 1 hinter den ba, bb,bc u.s.w.
parametrisieren .. wenn da 'ne variable mit Wert 0 steht dann
scrollt nix , wenn da eine mit Wert 1 steht scrollt es.
also
Die TastaturAbfrage erweiterst Du wie folgt
Du fragst dann die PixelKollision ab (die hier (3.94) so übrigens im Gegensatz zu meinem Geschreibsel per PN sehr wohl funktioniert)
Bei einer Kollision setzt Du diese Variable auf 0 und das Scrollen hält an.
Das machst Du bei Label Schleife in der auch die Verlorenausgabe auf den Schirm gemalt wird.
und bei der F2-Abfrage wird die Variable wieder auf 1 gesetzt
und neu gestartet (Goto Anfang)
Ganz oben im Code schreibst Du succ=1 hion, damit es anfänglich auch
scrollt.

Der Code ist außerdem in der Hinsicht kein SpaghettiCode, weil
er immernoch gut zu durchschauen ist. Thomas hat halt nur noch
nie was von Array's und/oder Listen gehört.
zum Problem
@Thomas Du musst eigentlich nur die 1 hinter den ba, bb,bc u.s.w.
parametrisieren .. wenn da 'ne variable mit Wert 0 steht dann
scrollt nix , wenn da eine mit Wert 1 steht scrollt es.
also
Code: Alles auswählen
ba +succ
bb + succ
bc + succ
bd + succ
u.s.w.
Code: Alles auswählen
; Tastenabfrage
ExamineKeyboard()
If KeyboardPushed(#PB_Key_S) And succ=1
succ=0
EndIf
If KeyboardPushed(#PB_Key_G) And succ=1
succ+0.2
EndIf
If KeyboardPushed(#PB_Key_Right) And succ=1
position_x + 2
If position_x > 700
position_x = 700
EndIf
EndIf
If KeyboardPushed(#PB_Key_Left) And succ=1
position_x - 2
If position_x < 0
position_x = 0
EndIf
EndIf
If KeyboardPushed(#PB_Key_Up) And succ=1
position_y - 1
If position_x < 0
position_y = 0
EndIf
EndIf
If KeyboardPushed(#PB_Key_Down) And succ=1
position_y + 1
If position_y > 450
position_y = 450
EndIf
EndIf
If KeyboardPushed(#PB_Key_F2) And succ=0
stopped=0
Goto Anfang
EndIf
If KeyboardPushed(#PB_Key_Escape)
End
EndIf
ForEver
Du fragst dann die PixelKollision ab (die hier (3.94) so übrigens im Gegensatz zu meinem Geschreibsel per PN sehr wohl funktioniert)
Bei einer Kollision setzt Du diese Variable auf 0 und das Scrollen hält an.
Das machst Du bei Label Schleife in der auch die Verlorenausgabe auf den Schirm gemalt wird.
und bei der F2-Abfrage wird die Variable wieder auf 1 gesetzt
und neu gestartet (Goto Anfang)
Ganz oben im Code schreibst Du succ=1 hion, damit es anfänglich auch
scrollt.
pb aktuel 6.2 windoof aktuell und sowas von 10
Ich hab Tinnitus im Auge. Ich seh nur Pfeifen.
Ich hab Tinnitus im Auge. Ich seh nur Pfeifen.
hi
also ich würde auf schleifen benutzen ... ^^
naja also schreib das erst mal um .....
wenn du in einer schleife arbeitest dann geht es recht einfach.
du setzt eine repeat until schleife so :
[/code]
InitKeyboard()
repeat
;deine abfrage (sollte man die kiste anfahren dann "verloren = 1" und dein sprite setzten)
until verloren = 1
repeat
ExamineKeyboard()
if keyboardpushed(#PB_Key_Escape)
esc = 1
endif
if keyboardpushed(#PB_Key_F2)
esc = 1
endif
until esc = 1
end
also ich würde auf schleifen benutzen ... ^^
naja also schreib das erst mal um .....
wenn du in einer schleife arbeitest dann geht es recht einfach.
du setzt eine repeat until schleife so :
[/code]
InitKeyboard()
repeat
;deine abfrage (sollte man die kiste anfahren dann "verloren = 1" und dein sprite setzten)
until verloren = 1
repeat
ExamineKeyboard()
if keyboardpushed(#PB_Key_Escape)
esc = 1
endif
if keyboardpushed(#PB_Key_F2)
esc = 1
endif
until esc = 1
end
Code: Alles auswählen
@thomas
übrigens gings in deinem anderen thread auch noch weiter, weiß nich ob du das mitgekriegt hast:
["Programm anhalten"]
http://www.purebasic.fr/german/viewtopi ... highlight=
übrigens gings in deinem anderen thread auch noch weiter, weiß nich ob du das mitgekriegt hast:
["Programm anhalten"]
http://www.purebasic.fr/german/viewtopi ... highlight=
Ich würde die 2. repeat in die erste reintuen:Brügge hat geschrieben: InitKeyboard()
repeat
;deine abfrage (sollte man die kiste anfahren dann "verloren = 1" und dein sprite setzten)
until verloren = 1
repeat
ExamineKeyboard()
if keyboardpushed(#PB_Key_Escape)
esc = 1
endif
if keyboardpushed(#PB_Key_F2)
esc = 1
endif
until esc = 1
end
Code: Alles auswählen
InitKeyboard()
repeat
;deine abfrage (sollte man die kiste anfahren dann "verloren = 1" und dein sprite setzten)
if verloren = 1
esc = 0
neustart = 0
repeat
ExamineKeyboard()
if keyboardpushed(#PB_Key_Escape)
esc = 1
endif
if keyboardpushed(#PB_Key_F2)
neustart = 1
endif
until esc = 1 or neustart = 1
if esc = 1
end
elseif neustart = 1
; code zum neustart
endif
endif
forever
end
-
- Beiträge: 17389
- Registriert: 10.11.2004 03:22