millisecs ist ungenau [Nochmal neues problem xD^^]

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

mas93

Betreff: millisecs ist ungenau [Nochmal neues problem xD^^]

BeitragMo, Jul 09, 2007 19:20
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi leute,
Ich habe gerade Probleme mit dem Millisecs befehl.

Ich hab das vor dem mainloop:
Code: [AUSKLAPPEN]

ms=millisecs()


und dann das in dem mainloop:
Code: [AUSKLAPPEN]

DrawImage3D(miene_metall0,-500,200,0,0,150,100,1,0)   
        If MouseHit3D Then If metall>100 And gold>100 Then If MilliSecs()-ms>5000 Then miene_metall=miene_metall+1

so, nun werden aber keine 5 secs gewaretet sondern das Bild erscheint glich wenn man drückt.

Jetzt hab ich mal zum test 50 secs genommen und siehe da, es hat gewartet. Zwar nicht genau 50 aber es hat gewartet.

Jetzt wollte ich wissen warum das nicht funktioniert.

Ich hab den code in nem ganz neuen programm getestet, dass ganz leer war und da hat alles geklappt.

Es liegt glaube ich daran, dass viel in der main drinn ist und passiert.


mfg
marius

Wäre nett wenn ihr mir helfen würdet
www.lpbase.de
Meine Linkin Park Fanseite[Noch im Aufbau]
  • Zuletzt bearbeitet von mas93 am Mo, Jul 09, 2007 20:39, insgesamt einmal bearbeitet
 

Dreamora

BeitragMo, Jul 09, 2007 19:31
Antworten mit Zitat
Benutzer-Profile anzeigen
ich glaub du hast ms als global definiert und schreibst an verschiedenen Orten drüber was nur in der Katastrophe enden kann
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

mas93

BeitragMo, Jul 09, 2007 19:33
Antworten mit Zitat
Benutzer-Profile anzeigen
hmm darf es nich global sein?
was ist wenn es global is?
www.lpbase.de
Meine Linkin Park Fanseite[Noch im Aufbau]
 

Dreamora

BeitragMo, Jul 09, 2007 19:35
Antworten mit Zitat
Benutzer-Profile anzeigen
Es darf global sein, das ist kein Problem.

Aber du musst darauf achten, dass du nur an einem Ort ms = XXX setzt und nicht an verschiedenen sonst kann sein das du durchgehend frühere änderungen rückgängig oder gar "falsch" machst.
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

BladeRunner

Moderator

BeitragMo, Jul 09, 2007 19:38
Antworten mit Zitat
Benutzer-Profile anzeigen
Du gibst ms VOR deiner Mainloop den Wert. Dann statet dein Spiel hoch, du gehst auf die Option die du haben willst und klickst sie an. All das kostet Zeit. Zeit die von den 5 Sekunden abgeht.

Deswegen klappt es auch mit den 50 Sekunden... Selbes Procedere, aber Du wartest geduldig 50-x sekunden bis sie voll sind.

Was Du aber willst ist das nach dem Klicken Zeit vergeht bis dein Bild auftaucht.
Das bedeutet dass Du für dieses Bild erst in dem Moment den Timer setzen darfst indem Du es anklickst, und später an anderer Stelle überprüfst ob irgendwelche Timer ausgelaufen sind.
Hier bietet sich ein Type an.
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92

mas93

BeitragMo, Jul 09, 2007 20:02
Antworten mit Zitat
Benutzer-Profile anzeigen
hmm ich habs dann mal so versucht.Es kommt aber nix.
Code: [AUSKLAPPEN]

Type ms
Field secs
End Type

Graphics 400,300,0,2
SetBuffer BackBuffer()


While Not KeyHit(1)


If KeyHit(2)Then
m.ms =New ms
m\secs=MilliSecs()

For m.ms=Each ms
If MilliSecs()-m\secs>4000 Then RuntimeError "4 Sekunden sind vorbei!

Next
EndIf
Wend


mfg
marius
www.lpbase.de
Meine Linkin Park Fanseite[Noch im Aufbau]

BladeRunner

Moderator

BeitragMo, Jul 09, 2007 20:16
Antworten mit Zitat
Benutzer-Profile anzeigen
Beispiel für einen Timer:
Code: [AUSKLAPPEN]
Type test
    Field ms
End Type

Repeat
If KeyHit(200) Then
    Print "Type erschafft"
    b.test = New test
    b\ms = MilliSecs()
EndIf

For abfrage.test = Each test
    If abfrage\ms + 4000 < MilliSecs() Then
        Print "dieser Type hat vier Sekunden gelebt und stirbt nun."
        Delete abfrage
    EndIf
Next
Until KeyHit(1)


EDIT: Bitte mach deine Signatur kleiner , Mas
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92

mas93

BeitragMo, Jul 09, 2007 20:21
Antworten mit Zitat
Benutzer-Profile anzeigen
ok habs selber rausgefunden.
Hab aber ein neues Problem.

Also wenn ich jetzt ein gebäude baue geht alles.
Wenn ich jetzt aber danach nochmal eins bauen möchst und ich den gleichen typ verwende wird das Gebäude sofort gebaut.

Da stimmt wieder etwas nich xD^^


Code: [AUSKLAPPEN]

   Select miene_metall  ;Das bild für die dazugehörige Stufe zeichnen
    Case 0
      DrawImage3D(miene_metall0,-530,200,0,0,150,100,1,0)   
        If MouseHit3D Then If metall>100 And gold>100 Then ;Wenn mausgeklickt wird
         m.ms =New ms            ;Neuer Typ wird erstellt
         m\secs=MilliSecs()      ;millisecs werden gezählt
        EndIf
        For m.ms=Each ms
         If MilliSecs()-m\secs>4000 Then miene_metall=miene_metall+1 :gold=gold-100 :metall=metall-100  ;Typ wird abgefragt und millisecs berechnet
        Next
          Text3D(font,-450,230,"Gold:-100 Metall:-100 ",0,0) ;Kosten werden angezeigt
    Case 1
      DrawImage3D(miene_metall1,-530,200,0,0,150,100,1,0)
        If MouseHit3D Then If metall>150 And gold>150 Then
          m.ms =New ms            ;Neuer Typ wird erstellt
          m\secs=MilliSecs()      ;millisecs werden gezählt
        EndIf
        For m.ms=Each ms
         If MilliSecs()-m\secs>4000 Then miene_metall=miene_metall+1 :gold=gold-150 :metall=metall-150 ;Typ wird abgefragt und millisecs berechnet
        Next

          Text3D(font,-450,230,"Gold:-150 Metall:-150 ",0,0)
   End Select


wäre nett wenn ihr mich nocheinmal helfen könntet

mfg
marius
www.lpbase.de
Meine Linkin Park Fanseite[Noch im Aufbau]

BladeRunner

Moderator

BeitragMo, Jul 09, 2007 20:46
Antworten mit Zitat
Benutzer-Profile anzeigen
Mach erstmal deine Sig. kleiner ....



Und dann überlege was Du mit den alten Timern machst...
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92

mas93

BeitragMo, Jul 09, 2007 20:53
Antworten mit Zitat
Benutzer-Profile anzeigen
ohh, klar^^

ELIMINIEREN^^


delete m^^

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group