Timer

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

Holzfäller

Betreff: Timer

BeitragDi, Nov 09, 2004 15:55
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi! Ich bin ein blutiger Anfänger und habe eine Frage zu einem Befehl:

Was bedeutet das?

If MilliSecs()-1000 => timer
timer = MilliSecs()
"Zirp Zirp" Zitat vom Holzfäller
 

Holzfäller

BeitragDi, Nov 09, 2004 15:56
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke im Voraus
"Zirp Zirp" Zitat vom Holzfäller
 

Timo

BeitragDi, Nov 09, 2004 16:00
Antworten mit Zitat
Benutzer-Profile anzeigen
wenn man dies in eine Schleife einbaut, wird alles hinter dem then (was da irgendwie net drinne ist...) gemacht, wenn 1 sec vorbei ist

millisecs() gibt die Windowslaufzeit in Millisekunden zurück. wenn man den Befehl öfters aufruft, kann man die Differenz zwischen den Aufrufen bilden, um zu gucken, wie lange der Letzte zugriff vorbei ist.

Code: [AUSKLAPPEN]

if Millisecs()-1000 => timer then ; wenn eine Sekunde vorbei ist
  timer = Millisecs() ; stelle den timer neu ein
  ...
  ...
endif
 

Holzfäller

BeitragDi, Nov 09, 2004 16:12
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke! Jetzt will ich diesen Timer aber in eine function einbauen, nähmlich so:

Code: [AUSKLAPPEN]
Function neuergegner()
         If MilliSecs()-1000 => timer   
   timer = MilliSecs()
   reset_timer = reset_timer - 1
   EndIf     
   
        If reset_timer = 0
   DrawImage Gegner1,1,1
   EndIf
End Function


Aber irgentwie funktieoniert das nicht, der Gergner leuchtet ca 1 Sekunda auf und verschwindet dann wieder, ich will aber das alle 5 sekunden ein neuer Gegner kommt. Kann mir mal jemand helfen?
"Zirp Zirp" Zitat vom Holzfäller
 

Timo

BeitragDi, Nov 09, 2004 16:16
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]
Function neuergegner()
   If MilliSecs()-5000 => timer   
     timer = MilliSecs()
     DrawImage Gegner1,1,1 
   EndIf       
End Function


Die 1000 sagte oben ,das eine Sekunde gewartet werden soll, mache bei dir einfach ne 5000 hin Wink
 

Holzfäller

BeitragDi, Nov 09, 2004 16:22
Antworten mit Zitat
Benutzer-Profile anzeigen
ajaaaa!!!! Stimmt! O mann... Blitz basic ist wirklich logisch aufgebaut!!
*gg* Laughing
Danke!!
"Zirp Zirp" Zitat vom Holzfäller
 

Holzfäller

BeitragDi, Nov 09, 2004 16:24
Antworten mit Zitat
Benutzer-Profile anzeigen
Jetzt habe ich aber immer noch das Problem das der Gegner nur kurz aufblitz und erst nach 5 sekunden wieder kommt!
"Zirp Zirp" Zitat vom Holzfäller
 

Timo

BeitragDi, Nov 09, 2004 16:42
Antworten mit Zitat
Benutzer-Profile anzeigen
ja das stimmt. das kommt daher das du ihn nur zeichnest, wenn die 5 sec vorbei sind. sofort dannach wird ja das ganze bild gelöscht. statt DrawImage in der Funktion neuergegner() solltest du eher in eine Variable speichern, dass es einen neuen gibt und ihn dann in der schleife zeichnen
 

Holzfäller

BeitragDi, Nov 09, 2004 16:44
Antworten mit Zitat
Benutzer-Profile anzeigen
Das ist n bischen zu kompliziert für mich... Trotzdem danke!
"Zirp Zirp" Zitat vom Holzfäller
 

Holzfäller

BeitragDi, Nov 09, 2004 17:32
Antworten mit Zitat
Benutzer-Profile anzeigen
Ok... Ich hab alles ausprobiert und nichts davon geht! Kanst du mir mal n Beispielcode geben, wie du das machen würdest?
"Zirp Zirp" Zitat vom Holzfäller

Kabelbinder

Sieger des WM-Contest 2006

BeitragDi, Nov 09, 2004 18:06
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich hab mal einen Beispielcode gemacht. alle 500 millisekunden verändert sich die Farbe.
Code: [AUSKLAPPEN]
Graphics 640,480,16,2
SetBuffer BackBuffer()

timer = MilliSecs()
farbe = 1

Repeat

If MilliSecs()-timer>=500
timer = MilliSecs()
If farbe = 1 Then
farbe = 2
Else
farbe = 1
EndIf
EndIf

If farbe = 1 Then Color 255,0,0
If farbe = 2 Then Color 0,0,255
Rect 100,100,100,100

Flip
Cls
Until KeyHit(1)
End
<Wing Avenger Download> ◊◊◊ <Macrophage Download>

eXceptION

BeitragDi, Nov 09, 2004 20:25
Antworten mit Zitat
Benutzer-Profile anzeigen
Gameskeleton:Code: [AUSKLAPPEN]
type enemy
  field x, y ;position
  field hp ;lebenspunkte
  field kind ;gegnertyp
end type

graphics(640, 480, 32, 0)
setbuffer(backbuffer())

while not keyhit(1) ;mainloop
  acquireinput()
  gamelogic()
  drawenemies()
  drawplayers()
  flip()
wend

end ;programende

;--functions--------

function acquireinput()
  ;hier tasten / mouse / joystick testen und darauf reagieren
end function

function gamelogic()
  for gegner.enemy = each enemy
    ;hier alle sachen ausrechnen (AI - artificial intelligence), bewegungen, etc...
    if (gegner\hp <= 0) then ;monster hat 0 oder weniger hp
      delete gegner ;dann muss er weg! (hier könntest du stattessen die death-anim starten)
    end if
  next

  ;beispielsweise (wegen topic):
  if (millisecs() >= spawntime) then
    gegner.enemy = new enemy
    gegner\x = 320 ;horizontal mitte vom bildschirm
    gegner\y = 240 ;vertical mitte vom bildschirm
    gegner\hp = 50 ;muss ja hp haben
    gegner\kind = rand(0, 2) ;drei verschiedene monsters? :)
    spawntime = millisecs() + 5000 ;nächste monster kommt in 5 sekunden
  end if
end function

function drawenemies()
  for gegner.enemy = each enemy
    drawenemy(gegner\x, gegner\y, gegner\kind)
  next
end function

function drawenemy(x, y, kind)
  ;teste welche kind (gegnertyp) das ist, zeichne richtiges bild
end function

function drawplayers()
  ;zeichne die players hier
end function
Norweger...

Spreche aber verdammt gut 8086
 

Holzfäller

BeitragDi, Nov 09, 2004 20:42
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke das du dir die Mühe gemacht hast mir n Halbes Programm zu schrieben! Danke!
"Zirp Zirp" Zitat vom Holzfäller
 

Holzfäller

BeitragDi, Nov 09, 2004 20:48
Antworten mit Zitat
Benutzer-Profile anzeigen
Leider bin ich draufgekommen das ich mit dem nicht viel anfangen kann, weil ich mich nicht mit Types auskenne Embarassed Embarassed Embarassed
Trotzdem Danke!
"Zirp Zirp" Zitat vom Holzfäller
 

Another progger

BeitragDi, Nov 09, 2004 21:15
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi,hier ein "programm" das alle 1000 millisecs ein bild dazuzeichnet.


Code: [AUSKLAPPEN]


Graphics 800,600,0,1
SetBuffer BackBuffer()
a=MilliSecs()
bild=LoadImage("bild.bmp")


Repeat


If a+1000<MilliSecs()
 Flip
 DrawImage bild,Rand(800),Rand(600)
 Flip
 
 a=MilliSecs()
EndIf


Until KeyHit(1)

 

ich hab 2* flip um immer in den selben buffer zu malen

eXceptION

BeitragDi, Nov 09, 2004 21:49
Antworten mit Zitat
Benutzer-Profile anzeigen
holzfäller hat Folgendes geschrieben:
Leider bin ich draufgekommen das ich mit dem nicht viel anfangen kann, weil ich mich nicht mit Types auskenne
gerade deswegen habe ich typen benutzt... so dass du es dir beibringen kannst...

EDIT: ob du es benutzen willst oder nicht, ist mir eigentlich egal, denn schliesslich bist du der jenige der dabei was verpasst... ausserdem habe ich nur 5 minuten benutzt... Smile
Norweger...

Spreche aber verdammt gut 8086

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group