ImageTimer
Übersicht

![]() |
N0XBetreff: ImageTimer |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hey!
Ich möchte mit Zahlen (in .png geschpeichert) einen Timer erstellen der von 5 auf 1 runterzählt. Ich weiß aber nicht, wie ich die MilliSecs() Sachen einstellen muss. Wie mache ich das? Code: [AUSKLAPPEN] If dead=1 Then
disableAllKeys = 1 ;Text (GraphicsWidth()/2)-78,(GraphicsHeight()/2)-6,"You are dead!" DrawImage tot,(GraphicsWidth()/2)-50,(GraphicsHeight()/2)-10 DrawImage font_5,0,0 If MilliSecs()-ttime>1000 Then DrawImage font_4,0,0 EndIf If MilliSecs()-ttime>2000 Then DrawImage font_3,0,0 EndIf If MilliSecs()-ttime>3000 Then DrawImage font_2,0,0 EndIf If MilliSecs()-ttime>4000 Then DrawImage font_1,0,0 EndIf If MilliSecs()-time>5000 Then disableAllKeys = 0 x# = 0:y# = 0 dead = 0 EndIf EndIf Mfg, N0X |
||
Projekte: |Tibario| http://www.blitzforum.de/worklogs/325/ | 5% |
![]() |
M0rgenstern |
![]() Antworten mit Zitat ![]() |
---|---|---|
Also, du musst Millisecs() übergeben.
Biepsiel: Code: [AUSKLAPPEN] If dead = 1 then
Start = millisecs() if (Millisecs()-start)> 1000 then . . . if (Millisecs()-start)>2000 then . . . Lg, M0rgenstern |
||
![]() |
N0X |
![]() Antworten mit Zitat ![]() |
---|---|---|
Also so?
Das geht aber noch nicht... da wird nur die 5 angezeigt. ![]() Code: [AUSKLAPPEN] If dead=1 Then
disableAllKeys = 1 ;Text (GraphicsWidth()/2)-78,(GraphicsHeight()/2)-6,"You are dead!" DrawImage tot,(GraphicsWidth()/2)-50,(GraphicsHeight()/2)-10 ttime = MilliSecs() DrawImage font_5,0,0 If MilliSecs()-ttime>1000 Then DrawImage font_4,0,0 EndIf If MilliSecs()-ttime>2000 Then DrawImage font_3,0,0 EndIf If MilliSecs()-ttime>3000 Then DrawImage font_2,0,0 EndIf If MilliSecs()-ttime>4000 Then DrawImage font_1,0,0 EndIf ;If MilliSecs()-time>5000 Then ; disableAllKeys = 0 ; x# = 0:y# = 0 ; dead = 0 ;EndIf EndIf |
||
Projekte: |Tibario| http://www.blitzforum.de/worklogs/325/ | 5% |
![]() |
Hubsi |
![]() Antworten mit Zitat ![]() |
---|---|---|
Weil ttime immer wieder neu der Wert von MilliSecs zugewiesen wird. Für das Programm wird also in hundert Jahren noch keine Zeit (rechnerisch) vergangen sein. Das nächste Problem wird werden das zuerst font_5 dargestellt wird, nach einer Sekunde wird über font_5 noch font _4 gepinselt usw. Denn wenn die Differenz größer 2000 ist ist sie auch größer 1000. Du verstehst was ich meine? | ||
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn... |
Hangman |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
mit anderen worten ttime = millisecs() aus der schleife nehmen(nur einmal zum todeszeitpunkt ausführen) | ||
Ich habe Berthold gebrochen. |
![]() |
N0X |
![]() Antworten mit Zitat ![]() |
---|---|---|
Gut, hab ich verstanden, aber wie kann ich wenn ich "dead=1" ist, etwas nur EINMAL ausführen?
Mfg, N0X |
||
Projekte: |Tibario| http://www.blitzforum.de/worklogs/325/ | 5% |
![]() |
derAtomkeksehemals "Sethus" |
![]() Antworten mit Zitat ![]() |
---|---|---|
Du könntest eine weitere Variable einbauen. Nachdem deine Aktion, die du nur einmal ausführen willst, ausgeführt wurde, setzt du sie auf 1, und bevor die Aktion ausgeführt wird, überprüfst du, ob sie schon gesetzt ist:
Code: [AUSKLAPPEN] If dead = 1 Then If Not done Then do_anything() done = True End If End If Alternativ könntest du auch nach der Abfrage, ob "dead" gesetzt ist, eine Schleife laufen lassen, aber ich weiß ja nicht, was du im Rest der Hauptschleife noch tust und ob das weiterhin getan werden soll, auch wenn der Spieler tot ist. |
||
![]() |
N0X |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ok, danke, aber es klappt immernoch nicht.
Code: [AUSKLAPPEN] If timeStart = 1 Then
ttim = MilliSecs() timeStart = 0 EndIf If dead=1 Then timeStart = 1 disableAllKeys = 1 DrawImage tot,(GraphicsWidth()/2)-50,(GraphicsHeight()/2)-10 ;DrawImage font_5,0,0 If (MilliSecs()-ttim)>1000 Then DrawImage font_4,0,0 EndIf If (MilliSecs()-ttim)>2000 Then DrawImage font_3,0,0 EndIf If (MilliSecs()-ttim)>3000 Then DrawImage font_2,0,0 EndIf If (MilliSecs()-ttim)>4000 Then DrawImage font_1,0,0 EndIf ;If MilliSecs()-time>5000 Then ; disableAllKeys = 0 ; x# = 0:y# = 0 ; dead = 0 ;EndIf EndIf |
||
Projekte: |Tibario| http://www.blitzforum.de/worklogs/325/ | 5% |
![]() |
derAtomkeksehemals "Sethus" |
![]() Antworten mit Zitat ![]() |
---|---|---|
Code: [AUSKLAPPEN] If dead=1 Then If timeStart = 0 Then ttim = MilliSecs() timeStart = 1 EndIf disableAllKeys = 1 DrawImage tot,(GraphicsWidth()/2)-50,(GraphicsHeight()/2)-10 ;DrawImage font_5,0,0 If (MilliSecs()-ttim)>1000 Then DrawImage font_4,0,0 EndIf If (MilliSecs()-ttim)>2000 Then DrawImage font_3,0,0 EndIf If (MilliSecs()-ttim)>3000 Then DrawImage font_2,0,0 EndIf If (MilliSecs()-ttim)>4000 Then DrawImage font_1,0,0 EndIf ;If MilliSecs()-time>5000 Then ; disableAllKeys = 0 ; x# = 0:y# = 0 ; dead = 0 ;EndIf EndIf Du darfst "timeStart" auch nur setzen, wenn es noch nicht gesetzt ist, und nicht jeden Schleifenfdruchlauf aufs neue ![]() |
||
![]() |
Snade |
![]() Antworten mit Zitat ![]() |
---|---|---|
Probiere es dochmal so:
BlitzBasic: [AUSKLAPPEN] Function wait(time%) Code: [AUSKLAPPEN] wait(1000)
DrawImage test,50,50 wait(1000) DrawImage test2,50,100 wait(1000) usw. lg. Snade |
||
![]() |
derAtomkeksehemals "Sethus" |
![]() Antworten mit Zitat ![]() |
---|---|---|
Das meinte ich eben mit der Schleife nach der Abfrage. ![]() Aber anscheinend will er, dass in der Hauptschleife weiterhin etwas passiert, der Hintergrund neu gemalt wird oä? |
||
![]() |
Snade |
![]() Antworten mit Zitat ![]() |
---|---|---|
oh hab wohl nicht aktualisiert hatte deinen Post nicht mehr gelesen ![]() |
||
![]() |
N0X |
![]() Antworten mit Zitat ![]() |
---|---|---|
Jo, hat schon geklappt, danke! ![]() Endlich hab ich nen Respawn-Zähler nach'm Sterben! ![]() Mfg, N0X |
||
Projekte: |Tibario| http://www.blitzforum.de/worklogs/325/ | 5% |
![]() |
das wurgel |
![]() Antworten mit Zitat ![]() |
---|---|---|
Zitat: Function wait(time%)
OldTime = MilliSecs() While (MilliSecs() < OldTime + time%) Wend End Function Da kann man auch gleich Delay nehmen. Außerdem vebraucht das 100% CPU Auslastung. @nox Mach das timestart=1 weg und setz es vor die haupschleife und da wo spieler wieder leben soll. Das verhindert, dass das ttim = MilliSecs() jede schleife neu aufgerufen wird. |
||
1 ist ungefähr 3 |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group