Wiederholen eines befehls
Übersicht

SamqBetreff: Wiederholen eines befehls |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
ich möchte einen befehl aller 15 sekunden ausführen, eine schleife kann ich zwar erstellen aber da wird das programm zu langsam.
wie mach ich das am besten? REPEAT frameTimer=CREATETIMER(15) WAITTIMER (frameTimer) Notify "dieser befhel soll aller 15 sekendungen aufgerufen werden" FOREVER |
||
![]() |
SpionAtom |
![]() Antworten mit Zitat ![]() |
---|---|---|
Code: [AUSKLAPPEN] z = 1000 ;Dauer in Millisekunden Repeat If sz + z < MilliSecs() sz = MilliSecs() Print "Aufruf..." End If Until KeyDown(1) End |
||
os: Windows 10 Home cpu: Intel Core i7 6700K 4.00Ghz gpu: NVIDIA GeForce GTX 1080 |
Samq |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
danke | ||
![]() |
The_Nici |
![]() Antworten mit Zitat ![]() |
---|---|---|
Mit einer Variable weniger:
Code: [AUSKLAPPEN] While not Keydown(1) If Millisecs()-zeit>=1000 then Print "Eine Sekunde vergangen. :O" zeit=Millisecs() EndIf Wend |
||
phil217 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
oder wenn du das ganze etwas performancesparender willst:
Code: [AUSKLAPPEN] timer = CreateTimer(1) Repeat WaitTimer(timer) counter = counter + 1 If counter = 15 ;dein befehl Print "test" counter = 0 EndIf Until KeyHit(1) End |
||
![]() |
The_Nici |
![]() Antworten mit Zitat ![]() |
---|---|---|
Phil, dein Vorschlag ist Müll, es ist nichts anderes als Samq selber dachte. Nur blöder. | ||
![]() |
Hip Teen |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hab zwar grad kein Basic da zum ausprobieren, aber geht ein
Code: [AUSKLAPPEN] timer = CreateTimer( 1/15 )
nicht zum erstellen eines Timers, der alle 15 Sekunden einen Tick gibt? |
||
Spruch der Woche: "Ahh, ein neues Gesicht?!" - "Nein, das hab ich schon länger" |
![]() |
the FR3AK |
![]() Antworten mit Zitat ![]() |
---|---|---|
So wird doch das ganze Programm verlangsamt oder? | ||
phil217 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
createtimer(1/15) gibt bei mir ein "Integer divide by zero"
und mein Vorschlag war nicht blöder, weil er immerhin tatsächlich alle 15 Sekunden was ausführt und nicht 15 mal in der Sekunde wie die Idee von Samq. Allerdings hast du recht, Nici, dass der restliche Programmablauf durch den Timer gestört wird. |
||
![]() |
Hip Teen |
![]() Antworten mit Zitat ![]() |
---|---|---|
Zitat: createtimer(1/15) gibt bei mir ein "Integer divide by zero"
ah, du hast warscheinlich BB2D, oder? In B+ müsste es eigentlich gehen (jedenfalls hab ich so schon programmiert) Zitat: und mein Vorschlag war nicht blöder
Naja, sagen wir so, er ist etwas unelegant |
||
Spruch der Woche: "Ahh, ein neues Gesicht?!" - "Nein, das hab ich schon länger" |
phil217 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hip Teen hat Folgendes geschrieben: ah, du hast warscheinlich BB2D, oder?
BB3D, kA wies mit B+ ausschaut und wieso unelegant... nachdem normalerweise sowieso ein timer in die hauptschleife gehört(frames regulieren und so...) kann man den ja wohl gleich benutzen um so was wie 15 sekunden abzuwarten... man muss halt den timer dementsprechend regulieren dass er das programm nich unnötig ausbremst aber immerhin hat meine lösung nich 50% prozessorauslastung wie die andere... |
||
![]() |
The_Nici |
![]() Antworten mit Zitat ![]() |
---|---|---|
phil, bei einem Spiel ist das ungünstig, keiner will mit einem FPS spielen wegen einer Zeitabfrage.
Dazu kann man die Prozessorauslastung auch mit einem anderen Timer runterdrücken. Fang nich' gleich an zu weinen. |
||
![]() |
Hip Teen |
![]() Antworten mit Zitat ![]() |
---|---|---|
phil, warum unelegant? Weil du mehr machst zur problemlösung, als notwendig wäre. Das ist in meinen Augen eine sehr nahekommende Definition für unelegant (in der Programmierung, bei Menschen ist das anders).
Zitat: nachdem normalerweise sowieso ein timer in die hauptschleife gehört(frames regulieren und so...) kann man den ja wohl gleich benutzen um so was wie 15 sekunden abzuwarten...
Zitat: aber immerhin hat meine lösung nich 50% prozessorauslastung wie die andere...
Wenn du sowieso von nem ganzen Programm ausgehst, wird der Timerteil keine 50% Auslastung in Anspruch nehmen |
||
Spruch der Woche: "Ahh, ein neues Gesicht?!" - "Nein, das hab ich schon länger" |
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Wie wärs mit ql:CreateTimer(1) und If ql:TimerTicks(timer) mod 15 = 0 then executeBlabla | ||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group