hallo,
ich hab ein problem mit QuickBasic. ich habe eine reihe von befehlen in einem packet. dieses packet soll der rechner mehrmals gleichzeitig abarbeiten. welchen befehl muß ich verwenden?
vielen dank im vorraus
mfg
steffen
Programmieren - alles kontrollieren 4.941 Themen, 20.708 Beiträge
z.B. eine Schleife !
ein paar mehr Infos wären hilfreich !
repi
ok. also, hier mein quelltext:
screen 7
RANDOMIZE TIMER
spalte% = INT(RND * 40)
zeichen% = INT(RND * 93) + 33
zeit2% = INT(RND * 2)
zeile% = 1
zeit% = 1
SLEEP zeit2%
LOCATE zeile%, spalte%
COLOR 10
PRINT CHR$(zeichen%)
SLEEP zeit%
COLOR 2
LOCATE zeile%, spalte%
PRINT CHR$(zeichen%)
COLOR 10
zeile% = zeile% + 1
LOCATE zeile%, spalte%
PRINT CHR$(zeichen%)
schleife% = 0
1 IF schleife% = 21 THEN
SLEEP zeit%
COLOR 2
LOCATE zeile%, spalte%
PRINT CHR$(zeichen%)
COLOR 8
zeile% = zeile% - 1
LOCATE zeile%, spalte%
PRINT CHR$(zeichen%)
SLEEP zeit%
COLOR 8
zeile% = zeile% + 1
LOCATE zeile%, spalte%
PRINT CHR$(zeichen%)
COLOR 0
GOTO 2
END IF
schleife% = schleife% + 1
SLEEP zeit%
COLOR 2
LOCATE zeile%, spalte%
PRINT CHR$(zeichen%)
COLOR 8
zeile% = zeile% - 1
LOCATE zeile%, spalte%
PRINT CHR$(zeichen%)
COLOR 10
zeile% = zeile% + 2
LOCATE zeile%, spalte%
PRINT CHR$(zeichen%)
GOTO 1
2 END
und diese befehle sollen gestartet werden und wärend sie laufen soll der dieses paket wieder gestertet werden, so das es 2x läuft. falls dich ineressiert, was es bwirkt, es soll so ne art matrix sein, wo die buchstaben herunterfallen. die vorab version findest du unter www.SteffenPhilippi.de.vu unter download.
mfg
steffen
Ich würde sagen: Such Dir ne ordentliche Programmiersprache. Mit Basic kannst Du das vergessen. Wahrscheinlich wäre es irgendwie zu machen - aber nur unter wahnsinnig großem Aufwand. Das wird jeder innerhalb kürzester Zeit feststellen der sich mal QBasic angeschaut hat.
Gruß, Chris.
Hi!
Nun, es wäre wohl am einfachsten, wenn man dein Programm mehrfach parallel ausführen könnte. Genau genommen wäre das dann Multitasking und genau dass ist der Haken.
QBASIC ist ein DOS-Tool und solche Extras wie Multitasking sind erst 10 Jahre später in Mode gekommen... ;-)
Das geht also leider mit QBASIC nicht.
Aber du kannst dein Programm natürlich so umschreiben, dass es statt (nur) einer Spalte immer gleich mehrere verwendet. Man muss also pro Zeile mehrer Spalten bearbeiten. Das ganze geht, wenn man dein Programm etwas umstellt, FOR-Schleifen und Array verwendet und auf GOTO verzichtet, eigentlich ganz einfach.
Ich hab' das mal umgesetzt:
SCREEN 7
zeit2% = INT(RND * 2)
zeile% = 1
zeit% = 1
REM Anzahl der parallel dargestellten Spalten
Zeichenanzahl = 5
REM Spalten und Zeichen bestimmen:
FOR i = 1 TO Zeichenanzahl
RANDOMIZE TIMER
spalte%(i) = INT(RND * 39) + 1
zeichen%(i) = INT(RND * 93) + 33
NEXT
REM Kopletter Durchlauf (20 Zeilen)
FOR zeile% = 1 TO 20
REM Innere Schleife für Spalten
FOR i = 1 TO Zeichenanzahl
LOCATE zeile%, spalte%(i)
COLOR 10
PRINT CHR$(zeichen%(i))
COLOR 2
LOCATE zeile%, spalte%(i)
PRINT CHR$(zeichen%(i))
COLOR 10
LOCATE zeile% + 1, spalte%(i)
PRINT CHR$(zeichen%(i))
schleife% = 0
REM Nur IF/ELSE/ENDIF keine GOTOs mehr ;-)
1 IF schleife% = 21 THEN
COLOR 2
LOCATE zeile%, spalte%(i)
PRINT CHR$(zeichen%(i))
COLOR 8
LOCATE zeile% - 1, spalte%
PRINT CHR$(zeichen%(i))
COLOR 8
LOCATE zeile%, spalte%(i)
PRINT CHR$(zeichen%(i))
COLOR 0
ELSE
COLOR 2
LOCATE zeile% + 1, spalte%(i)
PRINT CHR$(zeichen%(i))
COLOR 8
LOCATE zeile%, spalte%(i)
PRINT CHR$(zeichen%(i))
COLOR 10
LOCATE zeile% + 1, spalte%(i)
PRINT CHR$(zeichen%(i))
END IF
REM Nur hier wird gewartet
SLEEP zeit%
NEXT
NEXT
2 END
Für den Anfang dürfte das zum Experimentieren reichen. ;-)
Falls du Fragen hast dazu hast, dann melde dich.
Bis denn
Andreas