Habe ein Problem mit millisecs und delay.
Übersicht

Razor1994Betreff: Habe ein Problem mit millisecs und delay. |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ich muss für die Schule ein Programm schreiben das 4 Farben zufällig aufleuchten lässt. Das habe ich auch geschafft aber kann man die Dauer die die Farben aufleuchten nicht anders programmiern ohne das das ganze Programm anhält?
Bin dankbar für jeden Beitrag. Code: [AUSKLAPPEN] Graphics 640,480,16,0
;variablen Global zeit = Input("Wie lange sollen die Farben erscheinen?In Sekunden. ") ;Hauptprogramm Repeat zufall dauer schwarz dauer Until KeyHit(1) End ;Funktionen Function zufall() z = Rand(4) If z = 1 Then Color 1, 32, 243 Rect 0, 0, 640, 480, 1 ;blau If z = 2 Then Color 255, 255, 0 Rect 0, 0, 640, 480, 1 ;gelb If z = 3 Then Color 255, 0, 0 Rect 0, 0, 640, 480, 1 ;rot If z = 4 Then Color 0, 255, 0 Rect 0, 0, 640, 480, 1 ;grün End Function Function dauer() Delay zeit * 1000 End Function Function schwarz() Color 0, 0, 0 Rect 0, 0, 640, 480, 1 End Function |
||
- Zuletzt bearbeitet von Razor1994 am So, Feb 14, 2010 20:34, insgesamt 2-mal bearbeitet
![]() |
Hubsi |
![]() Antworten mit Zitat ![]() |
---|---|---|
Millisecs![]() |
||
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn... |
![]() |
ozzi789 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Achja fürs den nächsten Post bitte einen aussagekräftigen Titel verwenden ![]() mfg |
||
0x2B || ! 0x2B
C# | C++13 | Java 7 | PHP 5 |
Razor1994 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
@hubsi
hab ich schon versucht weiss aber nicht wie ichs schreiben soll. @ozzi wollte ich ja wusste nur nicht wie formulieren. |
||
![]() |
Goodjee |
![]() Antworten mit Zitat ![]() |
---|---|---|
Code: [AUSKLAPPEN] time=millisecs() repeat if(millisecs()-time>dauer) farbewechselnundfarbeinvariablespeichern() time=millisecs() endif farbemalen until keyhit(1) |
||
"Ideen sind keine Coladosen, man kann sie nicht recyclen"-Dr. House
http://deeebian.redio.de/ http://goodjee.redio.de/ |
Razor1994 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
sry aber das hat mir nicht gerade weitergeholfen. | ||
da_poller |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Das war pseudocode Wie du das ungefähr angehen kannst. Deine hausaufgabe musst du dann schon selber machen! | ||
Razor1994 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hab ich ja versucht aber ich checks nicht. | ||
![]() |
Goodjee |
![]() Antworten mit Zitat ![]() |
---|---|---|
du speicherst die zeit zum programmstart und guckst immer ob die differenz zwischen der aktuellen zeit und der gespeicherten größer ist als die zeitdauer die du warten willt.
sobald das der fall ist kannst du die farbe ändern oder sonst was machen |
||
"Ideen sind keine Coladosen, man kann sie nicht recyclen"-Dr. House
http://deeebian.redio.de/ http://goodjee.redio.de/ |
Razor1994 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hab heute keine Zeit mehr versuchs morgen weiter und gebe dann bescheid. | ||
Razor1994 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ich habe den code jetzt abgeändert aber die Farben kommen zu schnell. Und ich weiss nicht warum.
Code: [AUSKLAPPEN] Graphics 640,480,16,0
;variablen Global zeit = Input("Wie lange sollen die Farben erscheinen?In Sekunden. ") Global time = MilliSecs() ;Hauptprogramm Repeat zufall dauer1 dauer2 Until KeyHit(1) End ;Funktionen Function zufall() z = Rand(4) If z = 1 Then Color 1, 32, 243 Rect 0, 0, 640, 480, 1 ;blau If z = 2 Then Color 255, 255, 0 Rect 0, 0, 640, 480, 1 ;gelb If z = 3 Then Color 255, 0, 0 Rect 0, 0, 640, 480, 1 ;rot If z = 4 Then Color 0, 255, 0 Rect 0, 0, 640, 480, 1 ;grün End Function Function dauer1() If MilliSecs() - time > zeit *1000 schwarz time=MilliSecs() EndIf End Function Function dauer2() If MilliSecs() - time > zeit *1000 zufall time=MilliSecs() EndIf End Function Function schwarz() Color 0, 0, 0 Rect 0, 0, 640, 480, 1 End Function |
||
![]() |
NightPhoenix |
![]() Antworten mit Zitat ![]() |
---|---|---|
Wozu brauchst du 2 mal Eine "dauer" funktion? Eine reicht.
Die Funktion "schwarz" ist sinnfrei, in der einen Zeile könntes tdu genausogut den Inhalt der Funktion hinschreiben. Du rufst in deiner Hauptschleife alle Funktionen auf, d.h. sie werden alle nacheinander jede Schleife ausgeführt. Da in deiner Hauptschleife auch die Funktion "zufall" steht wird in jedem Schleifendurchgang unabhängig von der Zeiteingabe die Farbe gewechselt. Du solltest die Funktion "zufall" also nur aufrufen wenn die Zeit um ist, sprich wenn die bedingung in der Funktion "dauer1" erfüllt ist. Du hast die Logik hinter der Programmierung nicht mal ansatzweise verstanden, ich bezweifel dass du sie überhaupt verstehen willst. Du magst das Fach Info nicht wirklich gerne oder? |
||
Razor1994 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
1. Zitat: Die Funktion "schwarz" ist sinnfrei, in der einen Zeile könntes tdu genausogut den Inhalt der Funktion hinschreiben.
Lass mich entscheiden was ich in eine Funktion stecke und was nicht. 2. Zitat: Wozu brauchst du 2 mal Eine "dauer" funktion? Eine reicht.
Hast du genau gelesen? Ich denke nicht, denn dann hättest du gesehen das die eine Dauer Funktion für die Dauer der Farbe und die andere für die Dauer vom schwarzen Bildschirm ist. 3. Zitat: Du rufst in deiner Hauptschleife alle Funktionen auf, d.h. sie werden alle nacheinander jede Schleife ausgeführt.
Sie sollen ja auch nacheinander ausgeführt werden. Und ich will ja nicht nur eimal eine zufällige Farbe.
Da in deiner Hauptschleife auch die Funktion "zufall" steht wird in jedem Schleifendurchgang unabhängig von der Zeiteingabe die Farbe gewechselt 4. Zitat: Du solltest die Funktion "zufall" also nur aufrufen wenn die Zeit um ist, sprich wenn die bedingung in der Funktion "dauer1" erfüllt ist. versuch ich ja
5. Zitat: Du hast die Logik hinter der Programmierung nicht mal ansatzweise verstanden, ich bezweifel dass du sie überhaupt verstehen willst. Du magst das Fach Info nicht wirklich gerne oder? Ich glaube du hast mehr Probleme mit der Logik als ich. Und doch ich will sie verstehen darum schreibe ich ja hier rein, für konstruktive Bemerkungen. (Was deine nicht gerade war.) Und welches Fach? Ich programmiere privat.
|
||
![]() |
Goodjee |
![]() Antworten mit Zitat ![]() |
---|---|---|
wenn du willst das man dir hilfst, solltest du vllt die leute die dir helfen wollen nicht beleidigen...
naja, ich versuchs trotzdem nochmal speicher die farbe die momentan angezeigt wird in einer variable speicher die zeit hauptschleife momentane farbe malen wenn die differenz der zeit zu groß ist: die farbvariable ändern und die zeitvariable ändern ende |
||
"Ideen sind keine Coladosen, man kann sie nicht recyclen"-Dr. House
http://deeebian.redio.de/ http://goodjee.redio.de/ |
![]() |
Midimaster |
![]() Antworten mit Zitat ![]() |
---|---|---|
Razor1994
die Aussagen von NightPhoenic solltest Du als Anregungen sehen, etwas mehr über deinen Code nachzudenken. Er versucht damit, deine Überlegungen in ganz neue Bahnen zu lenken. Nur weil Du nicht verstehst, was du damit erreichenen könntest, würde ich keine so großen Töne spucken.... Am Ende bist du es, dem die Logik fehlt? So nun aber was konstruktives: Du kannst Variablen in der Funktion dazu benutzen, sie unterschiedliche Dinge tun zu lassen: BlitzBasic: [AUSKLAPPEN] Function dauer() Der Aufruf erfolg jetzt für die Zufallssituationen mit BlitzBasic: [AUSKLAPPEN] Typ=0 im Falle von schwarz einfach mit BlitzBasic: [AUSKLAPPEN] Typ=1 Und auch das Malen von schwarzem oder buntem Bildschirm ist ja eigentlich das Gleiche und lässt sich mit einer gemeinsamen Funktion erledigen: BlitzBasic: [AUSKLAPPEN] Function Malen() Hier rufst du nun also das Malen entweder mit der Zufallszahl... BlitzBasic: [AUSKLAPPEN] Zufall=Rand(1,4) ...oder dem Wert 0 auf und schon ist es schwarz- BlitzBasic: [AUSKLAPPEN] Zufall=0 So, wenn du das gecheckt hast, dann nochmal zu unserer Dauer()-Funktion Wir machen als Vorbereitung Zufall% GLOBAL, damit wir wissen, was zuletzt gewählt war. In der Funktion passiert folgendes: Ist Zufall 0, dann wird als nächstes eine Zufallszahl zwischen 1 und 4 gewählt und danach ein Rechteck gemalt. Ist anschließend Zufall jetzt 1-4, dann wird bei nächsten Mal Zufall=0 gesetzt und schwarz gemalt. Danach beginnt das Spiel von vorn: BlitzBasic: [AUSKLAPPEN] Function dauer() Da kannste jetzt den ganzen Abend drüber nachdenken.... noch eine kleine Anmerkung: Male Schwarz in BB immer mit Color 1,1,1 und nicht mit Color 0,0,0. Es könnte sein, dass dies zufällig die aktuelle "Trasparent-Farbe" ist und Du dann von BB keine Schwarz gemalt bekommts. |
||
- Zuletzt bearbeitet von Midimaster am Di, Feb 16, 2010 16:10, insgesamt einmal bearbeitet
Razor1994 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Zitat: die Aussagen von NightPhoenic solltest Du als Anregungen sehen, etwas mehr über deinen Code nachzudenken. Er versucht damit, deine Überlegungen in ganz neue Bahnen zu lenken. Nur weil Du nicht verstehst, was du damit erreichenen könntest, würde ich keine so großen Töne spucken.... Am Ende bist du es, dem die Logik fehlt?
Also am meisten hat mich die Art gestört wie er es geschrieben hat. Vorallem der letzte Abschnitt. Aber egal. Ich habe es jetzt geschafft. Danke trotzdem. Code: [AUSKLAPPEN] Graphics 640,480,16,0
;variablen Global zeit = Input("Wie lange sollen die Farben erscheinen?In Sekunden. ") Global time = MilliSecs() Global z = Rand(4) ;Hauptprogramm Repeat dauer malen Until KeyHit(1) End ;Funktionen Function dauer() If MilliSecs() - time > zeit *1000 If z = 0 Then z = Rand(4) Else z = 0 EndIf Time=MilliSecs() EndIf End Function Function malen() If z = 1 Then Color 1, 32, 243 ;blau ElseIf z = 2 Then Color 255, 255, 0 ;gelb ElseIf z = 3 Then Color 255, 0, 0 ;rot ElseIf z = 4 Then Color 0, 255, 0 ;grün ElseIf z = 0 Then Color 1,1,1 ;schwarz EndIf Rect 0, 0, 640, 480 End Function |
||
![]() |
NightPhoenix |
![]() Antworten mit Zitat ![]() |
---|---|---|
Sorry war nicht böse gemeint. Deine Aussage dass es eine Schulaufgabe ist und deine extremen Logikfehler im Code (die ich offen gesagt so nicht mal von Anfängern kenne) lies mich denken, dass du jemand bist der seine Hausaufgaben für sein Hassfach Informatik gemacht haben möchte und nicht mal verstehen will was er da schreibt, Hauptsache das Schulfach irgendwie hinter sich bringen. Wir haben in letzter Zeit viele desinteressierte und frustrierte Neueinsteiger durch ihre Schule hier im Forum.
Aufgrund dieser Faktoren hab ich wohl direkt einen schlechten Eindruck von dir gehabt ![]() |
||
Razor1994 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
schon vergessen. | ||
User posted image
kommt in meinen Runescape clan |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group