Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

Wie Programm beenden?

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu QBasic.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Sternchen1



Anmeldungsdatum: 28.06.2006
Beiträge: 2

BeitragVerfasst am: 28.06.2006, 17:53    Titel: Wie Programm beenden? Antworten mit Zitat

Hallo,

ich habe eine Ampelschaltung mit Q-Basic geschrieben.Mein Problem ist nur ich wollte eigentlich das Ganze so machen, dass das Programm automatisch beendet wird, sobald man eine beliebige Taste drückt, aber das klappt nicht. Ich muss jedesmal zum beenden "strg"+"alt"+"entf" drücken und dann hängt sich mein Computer auf. Und ich müsste es morgen in der Schule vorführen und da ist es ja nicht gerade sehr professionnel,wenn ich das so mache. verwundert
Kann mir jemand sagen, was ich da eingeben muss, damit es automatisch beendet wird? Wär total nett!! happy
Danke schon mal im Vorraus für alle Antworten!!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Sternchen1



Anmeldungsdatum: 28.06.2006
Beiträge: 2

BeitragVerfasst am: 28.06.2006, 18:05    Titel: Antworten mit Zitat

Also ich hab hier jetzt mal das Programm reinkopiert:

SCREEN 12
CLS
LINE (250, 10)-(300, 180), , B
LINE (450, 10)-(500, 180), , B
LINE (301, 5)-(305, 400), 7, BF
LINE (501, 5)-(505, 400), 7, BF
LOCATE 25, 2
PRINT "Taste drücken beendet die Ampel."
DO
LINE (250, 400)-(350, 405), 7, BF
LINE (450, 400)-(550, 405), 7, BF
FOR i% = 1 TO 12
LINE (251, 11)-(299, 179), 0, BF
LINE (451, 11)-(500, 179), 0, BF
CIRCLE (275, 50), 20, 4
IF i% = 5 OR i% = 6 OR i% = 7 OR i% = 8 OR i% = 9 OR i% = 10 OR i% = 11 OR
CIRCLE (475, 50), 20, 4
IF i% = 1 OR i% = 2 OR i% = 3 OR i% = 4 OR i% = 5 OR i% = 6 OR i% = 11 OR i
CIRCLE (275, 100), 20, 14
IF i% = 4 OR i% = 12 THEN PAINT (275, 90), 14 'Ampel 1 gelb
CIRCLE (475, 100), 20, 14
IF i% = 6 OR i% = 10 THEN PAINT (475, 100), 14 'Ampel 2 gelb
CIRCLE (275, 145), 20, 2
IF i% = 1 OR i% = 2 OR i% = 3 THEN PAINT (275, 145), 2 'Ampel 1 grün
CIRCLE (475, 145), 20, 2
IF i% = 7 OR i% = 8 OR i% = 9 THEN PAINT (475, 145), 2 'Ampel 2 grün
IF i% = 1 OR i% = 2 OR i = 3 THEN OUT 888, 12
IF i% = 4 THEN OUT 888, 10
IF i% = 5 OR i% = 11 THEN OUT 888, 9
IF i% = 6 THEN OUT 888, 25
IF i% = 7 OR i% = 8 OR i% = 9 THEN OUT 888, 33
IF i% = 10 THEN OUT 888, 17
IF i% = 12 THEN OUT 888, 11
SLEEP 3

NEXT i%

LOOP


Tja,und jetzt stellt sich eben noch die Frage, wie man diese Schleife beendet!
Danke fürs Lesen und für alle Antworten!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Lutz Ifer
Grillmeister


Anmeldungsdatum: 23.09.2005
Beiträge: 555

BeitragVerfasst am: 28.06.2006, 18:25    Titel: Antworten mit Zitat

Benutze in Zukunft bitte "[ code]" und "[ /code]".

Zitat:
IF i% = 5 OR i% = 6 OR i% = 7 OR i% = 8 OR i% = 9 OR i% = 10 OR i% = 11 OR
- da fehlt was.

anstatt vieler "if"-anweisungen kannst du select case verwenden:

Code:
select case i%
case 7,8,9 : paint(275,145),2 'Ampel 1 gruen
(...)
case 6 : out 888, 25
end select

ließ dazu am Besten http://select.freebasic.de

Und um deine eigentliche Frage zu beantworten: Du musst eine Abbruchbedingung für deine do-loop-Schleife definieren, in diesem Falle müsste das etwa
Code:

do
 (...)
loop until inkey$<>""

heißen.
ließ dazu am Besten http://do.freebasic.de

Gruß
Lutz böse Ifer
_________________
Wahnsinn ist nur die Antwort einer gesunden Psyche auf eine kranke Gesellschaft.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
jb



Anmeldungsdatum: 14.01.2005
Beiträge: 2010

BeitragVerfasst am: 29.06.2006, 12:26    Titel: Antworten mit Zitat

Generell würde ich eher empfehlen, INKEY$ in einer Variablen zu speichern, da
es bei mehrfacher Abfrage von INKEY$ *ohne Variable* zu Problemen kommen kann.
Code:

DO
 Eingabe$ = INKEY$

 ' Dein Code...

LOOP UNTIL Eingabe$ = CHR$(27)

Damit wartet das Programm auf Escape.

Noch was: Wenn du SLKEEP 3 benutzt, und der Benutzer eine Taste drückt, um die
Wartezeit abzubrechen, dann wird die gedrückte Taste ebenfalls in INKEY$ gespeichert.
Daher würde ich zu einer anderen Warteschleife raten:
Code:

T = TIMER
DO
LOOP UNTIL TIMER >= T + Sekunden

Für Sekunden musst du dann nur die gewünschte Wartezeit in Sekunden eintragen lächeln

jb
_________________
Elektronik und Programmieren
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Thomas Antoni



Anmeldungsdatum: 12.10.2004
Beiträge: 220
Wohnort: Erlangen

BeitragVerfasst am: 29.06.2006, 16:15    Titel: Antworten mit Zitat

Evtl. hilft Folgendes weiter:

www.qbasic.de -> QB-MonsterFAQ -> "Tastatureingabe -> Wie kann ich mein Programm jederzeit mit Esc abbrechbar machen?"

Viel Erfolg :)
_________________
+++ Die beliebte QBasic CD-ROM von QBasic.de - 670 MB QBasic-Stuff mit komfortabler HTML-Oberfläche. Für nur 5 EUR bestellbar auf www.antonis.de/qbcdueb.htm +++
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu QBasic. Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz