Zeit simulieren?
Übersicht

FruscianteBetreff: Zeit simulieren? |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Also, ich bin seit einigen Tagen daran einen kleinen Fussballmanager zu programmieren. Momentan bin ich daran die Simulation eines Spiels zu verfeinern. Dabei stoße ich aber gerade auf ein Problem. Das Programm sollte an bestimmten Stellen ja quasi nicht weiterlaufen, (ein PC rechnet ja sehr schnell) da sonst viel zu schnell Tore fallen würden. In dieser Zeit möchte ich aber dennoch z.B. Text ausgeben, für einen Liveticker. Da komme ich zu den 2 Fragen:
1.Wie lässt es sich einrichten das mein Programm in einer bestimmten Zeit (eine festgelegte Zeit, z.b. 10 Sekunden) nur bestimmte Befehle ausführt und das Programm dann entweder weiterführt oder wieder an die Stelle springt. 2.Wie kann ich überhaupt eine bestimmte reale Zeit berechnen? Z.B. ein Programm das sich von allein nach 10 Skunden beendet. Delay ist ja quatsch, dabei kann ich ja nichts anderes mehr machen. Evtl. mit waittimer? Habe überlegt das ich einen Timer erstelle der einen Takt pro sekunde gibt und dann eine Variable immer plus 1 zählt wenn waittimer("1 sekunde") vorbei ist. Allerdings weiß ich nicht wie ich so etwas verwirkliche, mein Programm soll ja nicht tatsächlich dann 1 sekunde anhalten. Hoffe ich hab mich klar ausgedrückt ![]() mfg Frusciante |
||
![]() |
Tankbuster |
![]() Antworten mit Zitat ![]() |
---|---|---|
Versuch mal mit Millisecs() ![]() Das müsste klappen! |
||
Twitter
Download Jewel Snake! Windows|Android |
FruscianteBetreff: hm |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Meinst du so etwas in der Art?
Code: [AUSKLAPPEN] a = MilliSecs()/1000 + 10 Repeat Text 100,100, MilliSecs()/1000 Cls Until a = MilliSecs()/1000 Print "10 sek. sind um!" WaitKey |
||
![]() |
Tankbuster |
![]() Antworten mit Zitat ![]() |
---|---|---|
Zitat: zeit_bis_zum_event=10000 ;10000 Millisekunden
anfang = MilliSecs() While Not lol=True zeit=anfang-MilliSecs()+zeit_bis_zum_event If Zeit<=0 Then tuwas() Cls Text 100,100, zeit/1000 Flip Wend Ehr sowas, kommt aber aufs selbe raus! PS: "Text" und danach "Cls" macht nicht sehr viel sinn ![]() |
||
Twitter
Download Jewel Snake! Windows|Android |
Frusciante |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ich muss ehrlich sagen damit bin ich nicht weiter gekommen. Wenn ich das Spiel künstlich verlangsamen will, weiß ich immer noch nicht wie ich z.B. trotzdem eine flüssige Mausführung erreiche und ein mögliches Abbrechen des Programmes zu jederzeit. Delay und waittimer halten beides das Programm an (beide auf ihre art und weise), und Millisecs() kann mir dabei ja auch nicht wirklich weiterhelfen :/
Habe eine vollkommene Gehirn Sperre, mir fällt nichts dazu ein! Wäre für ein paar Anregungen sehr dankbar. Frusciante |
||
![]() |
Noobody |
![]() Antworten mit Zitat ![]() |
---|---|---|
Du lässt gewisse Befehle (wie zum Beispiel Ballbewegung und Spielerbewegungen), sobald dass eine Variable, zum Beispiel "slo_mo" 1 ist, nur jedes zweites Frame ausführen. Das würde schon zum doppelt so langsamen Spielverlauf führen und der Programmablauf mit Maus usw. würde nicht beeinträchtigt. | ||
Man is the best computer we can put aboard a spacecraft ... and the only one that can be mass produced with unskilled labor. -- Wernher von Braun |
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich verstehe dein Problem nicht ganz - Was spricht dagegen festzulegen dass zB 1 Sekunde Echtzeit 1 Minute 'Spielzeit' entspricht ?
Jedes mal wenn 1000 millisekunden Verstrichen sind (Du speicherst den Millisecswert zum Spiestart und vergleichst damit) erhöhst Du den Spielstand um eine Minute und lässt die Grafiklogik für das Spielfeld einmal laufen. Die restliche Gamelogik liegt ausserhalb dieser Bedingung und läuft somit immer, wodurch Mausabfrage etc. gewährleistet sind. Code: [AUSKLAPPEN] if millisecs() >= lastmillisecs+1000 then
lastmillisecs = millisecs() spielminute = spielminute +1 bewegespieler() maldasspielfeld() endif fragmausab() zeichneGUI() ... |
||
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 |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group