Grafik anhalten

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Zaphod
Beiträge: 2875
Registriert: 29.08.2004 00:40

Beitrag von Zaphod »

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.
Benutzeravatar
bobobo
jaAdmin
Beiträge: 3873
Registriert: 13.09.2004 17:48
Kontaktdaten:

Beitrag von bobobo »

der Code funktioniert so wie er ist eigentlich prima :allright:@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

Code: Alles auswählen

    ba +succ
    bb + succ
    bc + succ
    bd + succ
u.s.w.
Die TastaturAbfrage erweiterst Du wie folgt

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.
Benutzeravatar
Thomas
Beiträge: 893
Registriert: 06.07.2006 19:24
Wohnort: Regensburg
Kontaktdaten:

Beitrag von Thomas »

Danke!
werd's mal ausprobieren. :D
Benutzeravatar
Thomas
Beiträge: 893
Registriert: 06.07.2006 19:24
Wohnort: Regensburg
Kontaktdaten:

Beitrag von Thomas »

Übrigens
es darf keine andere Taste auser F2 und Esc akzeptiert werden. :|
Brügge
Beiträge: 359
Registriert: 28.05.2006 16:40
Wohnort: Rheine

Beitrag von Brügge »

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
Benutzeravatar
#NULL
Beiträge: 2238
Registriert: 20.04.2006 09:50

Beitrag von #NULL »

@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=
my pb stuff..
Bild..jedenfalls war das mal so.
a14xerus
Beiträge: 1440
Registriert: 14.12.2005 15:51
Wohnort: Aachen

Beitrag von a14xerus »

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
Ich würde die 2. repeat in die erste reintuen:

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
Brügge
Beiträge: 359
Registriert: 28.05.2006 16:40
Wohnort: Rheine

Beitrag von Brügge »

macht aber keinen unterschied oder? also ob das da drinne steht oder dahinter :mrgreen:


sieht allerdings schöner aus ^^
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

...ich würd beides in einer schleife abhandeln...
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
Thomas
Beiträge: 893
Registriert: 06.07.2006 19:24
Wohnort: Regensburg
Kontaktdaten:

Beitrag von Thomas »

Danke, hab das mit dem Grafik anhalten hingekrigt. :D
Verstehe aber das mit den Array's und den Structuren nicht ganz. Kann mir jemand ein Beispiel machnen?
Antworten