Kann nicht richtig schlafen!

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

Ironstorm

Erstklassiger Contest-Veranstalter

Betreff: Kann nicht richtig schlafen!

BeitragMi, Okt 20, 2004 19:14
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi @ all!
Ich habe bei meinem Spiel ein Bett gemacht und wenn man auf das Bett klickt soll man 8 Stunden schlafen. Aber der rechnet des net richtig. Er schaltet automatisch auf 0:00. Hier ist mein code:

Code: [AUSKLAPPEN]

...
If zeit = 16 then
zeit=0
tag=tag +1
endif
if zeit > 16 then
zeit=zeit+8
zeit=zeit -24
tag=tag+1
endif
...


Zwar kann ich da nichts rausfinden aber eigentlich müsste das mit der Zeit funktionieren. Wenn man über 16 Uhr ist z. b. 17 Uhr dann müsste er 8 Stunden dazu rechnen, das wäre dann 25 Uhr. Dann rechnet er gleich 25 - 24, das wäre dann 1:00 Uhr. Oder? Also ich weiß net aber des will net so funktionieren. THX
..:: blackbird design : blackbird photography : Futuro Verde : X-Commander ::..
MacBook | Intel Core 2 Duo 2,1 GHz | 2048 MB RAM | 80 GB HDD | Mac OS X 10.6.2 (Snow Leopard) | Adobe CS4 Design Premium
 

Steffen

Betreff: Re: Kann nicht richtig schlafen!

BeitragMi, Okt 20, 2004 19:23
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]

...
zeit=zeit+8
if zeit >= 24 then
    zeit=zeit -24
    tag=tag+1
endif
...
>PC: Pentium III 750MHz, ATI Rage 128 mit 32Mb, Windows Me, Blitz3D 1.87
>Laptop: Pentium M 1,4GHz, 512 Mb DDR, ATI Mobility Radeon 9000 mit 64Mb DDR, Windows XP Home, Blitz3D 1.87

Egon Dragon

BeitragDo, Okt 21, 2004 14:29
Antworten mit Zitat
Benutzer-Profile anzeigen
Versuchs doch so:
Code: [AUSKLAPPEN]

For i=0 to 8
Zeit=Zeit+1
  If Zeit>24
  Zeit=0
  Tag=Tag+1
  Endif
next
 

Steffen

BeitragFr, Okt 22, 2004 7:55
Antworten mit Zitat
Benutzer-Profile anzeigen
egon hat Folgendes geschrieben:
Versuchs doch so:
Code: [AUSKLAPPEN]

For i=0 to 8
Zeit=Zeit+1
  If Zeit>24
  Zeit=0
  Tag=Tag+1
  Endif
next


Und dann wundern, dass es langsam läuft. Außerdem stimmt es nichtmal. Die Zeit wird auf 0 gesetzt, wenn 25 Uhr ist, also 1, d.h. die Zeit zwischen 0 und 1 Uhr wird doppelt gezählt, dein Tag hat also 25 Stunden.
>PC: Pentium III 750MHz, ATI Rage 128 mit 32Mb, Windows Me, Blitz3D 1.87
>Laptop: Pentium M 1,4GHz, 512 Mb DDR, ATI Mobility Radeon 9000 mit 64Mb DDR, Windows XP Home, Blitz3D 1.87
 

walski

Ehemaliger Admin

BeitragFr, Okt 22, 2004 18:05
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenn du einfach einen "ewigen Stundenzähler" hernimmst, also einfach eine Variable immer um 1 inkrementierst ohne jemals wieder etwas von ihr abzuziehen sollte du hiermit:

Code: [AUSKLAPPEN]

tag = ( ( zeit - (zeit Mod 24) ) / 24 ) + 1
stunde = zeit Mod 24


den aktuellen Tag bzw die aktuelle Stunde errechen können.

Vorteil:

du kannst einfach:

Code: [AUSKLAPPEN]


stundeVorDemSchlafen = ewigerStundenZaehler

While stundeVorDemSchlafen + 8 > ewigerStundenZaehler

 ewigerStundenZaehler = ewigerStundenZaehler + 1

Wend



machen...

aber naja, da gibts wohl tausend und eine Möglichkeit das zu lösen, diese hier hätte eben nur wirklich den Vorteil direkt miteinander vergleichbarer "Timestamps" jedenfalls solange sich die vergangenen Stunden nicht über den Integer-Raum hinaus bewegen.

walski
buh!

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group