Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Patrick-Ratz
Anmeldungsdatum: 22.12.2008 Beiträge: 34
|
Verfasst am: 01.12.2010, 13:59 Titel: nur 2 tasten abfragen |
|
|
Hallo , ich bin seit neusten wieder mit qbasic am toch
und habe auch gleich eine frage:
ich hab jetzt ein menü programmiert und es tuts auch soweit.
zum auswählen habe ich nen pfeil gemacht ->
und man kann hoch und runter klicken
aber wenn ich versehntlich auf leertaste komme oder ne andere
taste kommt sofort die meldung:
"beliebige taste zum fortfaren drücken..."
und dann geht mein programm aus -
wie kann ich das unterbinden ??? also dass wenn ich trotzdem leertaste
drücke mein programm NICHT aus geht?
achja und welcher CHR$() ist denn enter ? _________________ Wie kastriert man Windows-User?
Man schneidet das Mauskabel durch... |
|
Nach oben |
|
 |
St_W

Anmeldungsdatum: 22.07.2007 Beiträge: 956 Wohnort: Austria
|
Verfasst am: 01.12.2010, 14:05 Titel: Re: nur 2 tasten abfragen |
|
|
Patrick-Ratz hat Folgendes geschrieben: | [...]wenn ich versehntlich auf leertaste komme oder ne andere taste kommt sofort die meldung:
"beliebige taste zum fortfaren drücken..."
und dann geht mein programm aus -
wie kann ich das unterbinden ??? also dass wenn ich trotzdem leertaste
drücke mein programm NICHT aus geht? |
Die Meldung bedeutet dass dein Programm beendet wurde. Da ich deinen Code nicht kenne kann ich nur grundsätzlich antworten:
Ein Programm hält sich normalerweise mit einer Endlosschleife am Leben, in der immer wieder auf Benutzereingaben geprüft wird (wie z.B. Mausaktionen, Tastendrücke) und dann entsprechend darauf reagiert wird.
Patrick-Ratz hat Folgendes geschrieben: | achja und welcher CHR$() ist denn enter ? |
13, afair
ansonsten kannst du dies mit einem Programm wie folgenden leicht herausfinden (ungetestet!):
Code: | do
Taste$ = INKEY$
print ASC(Taste$); " "; ASC(RIGHT$(Taste$,1))
loop until Taste$ = chr(27)
|
_________________ Aktuelle FreeBasic Builds, Projekte, Code-Snippets unter http://users.freebasic-portal.de/stw/
http://www.mv-lacken.at Musikverein Lacken (MV Lacken) |
|
Nach oben |
|
 |
Patrick-Ratz
Anmeldungsdatum: 22.12.2008 Beiträge: 34
|
Verfasst am: 01.12.2010, 14:48 Titel: |
|
|
also der code sieht so aus:
Code: |
CLS
xarrow = 8
yarrow = 18
PRINT " -------------------"
PRINT " | |"
PRINT " | Smilly-Runner 1.2 |"
PRINT " | |"
PRINT " | |"
PRINT " -------------------"
PRINT " Spiel Start"
PRINT " Spiel Option"
PRINT " Spiel Beenden"
1
LOCATE xarrow, yarrow
PRINT "->"
DO:
taste$ = INKEY$:
LOOP WHILE taste$ = ""
IF taste$ = CHR$(0) + CHR$(80) THEN
LOCATE xarrow, yarrow
PRINT " "
xarrow = xarrow + 1
GOTO 1
END IF
IF taste$ = CHR$(0) + CHR$(72) THEN
LOCATE xarrow, yarrow
PRINT " "
xarrow = xarrow - 1
GOTO 1
END IF
|
der code ist erst paar stunden alt deswegen auch noch sehr "nackt"
achja gibs es auch was besseres als goto ??? _________________ Wie kastriert man Windows-User?
Man schneidet das Mauskabel durch... |
|
Nach oben |
|
 |
MOD Fleißiger Referenzredakteur

Anmeldungsdatum: 10.09.2007 Beiträge: 1003
|
Verfasst am: 01.12.2010, 15:33 Titel: |
|
|
GOTO und GOSUB sollte man nicht verwenden. Ersatzweise kann man Schleifen daraus machen, wie etwa eine DO ... LOOP oder eine WHILE ... WEND. Eine andere Möglichkeit ist es, die Teile in Unterprogramme auszugliedern, also in eine SUB oder eine FUNCTION.
Wie man es auch macht, bitte nicht mit GOTO.
Ein Beispiel:
Code: | CLS
xarrow = 8
yarrow = 18
PRINT " -------------------"
PRINT " | |"
PRINT " | Smilly-Runner 1.2 |"
PRINT " | |"
PRINT " | |"
PRINT " -------------------"
PRINT " Spiel Start"
PRINT " Spiel Option"
PRINT " Spiel Beenden"
DO
LOCATE xarrow, yarrow
PRINT "->"
DO
taste$ = INKEY$:
LOOP WHILE taste$ = ""
IF taste$ = CHR$(0) + CHR$(80) THEN
LOCATE xarrow, yarrow
PRINT " "
xarrow = xarrow + 1
ELSEIF taste$ = CHR$(0) + CHR$(72) THEN
LOCATE xarrow, yarrow
PRINT " "
xarrow = xarrow - 1
ELSE
EXIT DO
END IF
LOOP
|
|
|
Nach oben |
|
 |
volta
Anmeldungsdatum: 04.05.2005 Beiträge: 1876 Wohnort: D59192
|
Verfasst am: 01.12.2010, 16:05 Titel: |
|
|
oder so
Code: | Cls
xarrow = 8
yarrow = 18
Print " -------------------"
Print " | |"
Print " | Smilly-Runner 1.2 |"
Print " | |"
Print " | |"
Print " -------------------"
Print " Spiel Start"
Print " Spiel Option"
Print " Spiel Beenden"
Locate xarrow, yarrow
Print "->"
Do
taste$ = InKey$
If (taste$ = Chr$(0) + Chr$(80)) And (xarrow < 9) Then
Locate xarrow, yarrow
Print " "
xarrow = xarrow + 1
Locate xarrow, yarrow
Print "->"
End If
If (taste$ = Chr$(0) + Chr$(72)) And (xarrow > 7) Then
Locate xarrow, yarrow
Print " "
xarrow = xarrow - 1
Locate xarrow, yarrow
Print "->"
End If
Loop until taste$ = Chr$(13)
If xarrow = 7 Then Print "Start"
If xarrow = 8 Then Print "Option"
If xarrow = 9 Then Print "Beenden"
sleep |
_________________ Warnung an Choleriker:
Dieser Beitrag kann Spuren von Ironie & Sarkasmus enthalten.
Zu Risiken & Nebenwirkungen fragen Sie Ihren Therapeuten oder Psychiater. |
|
Nach oben |
|
 |
dreael Administrator

Anmeldungsdatum: 10.09.2004 Beiträge: 2529 Wohnort: Hofen SH (Schweiz)
|
Verfasst am: 01.12.2010, 16:44 Titel: |
|
|
Von mir sonst ein Codebeispiel:
http://beilagen.dreael.ch/QB/MENUE.BAS
Wie dieses Beispiel zeigt, können komplexere Benutzeroberfläche mit geschickter Verwendung von SUB-Unterprogrammen mit sehr wenig Code realisiert werden. _________________ Teste die PC-Sicherheit mit www.sec-check.net |
|
Nach oben |
|
 |
Patrick-Ratz
Anmeldungsdatum: 22.12.2008 Beiträge: 34
|
Verfasst am: 01.12.2010, 23:19 Titel: |
|
|
1000 DANK !
aber ich check nicht wie das programm mit enter bestätigt, weil in der if schleife steht ja nur:
Code: |
IF "taste-oben" und "x = 9" DANN ...
...
ende mit esc
|
_________________ Wie kastriert man Windows-User?
Man schneidet das Mauskabel durch... |
|
Nach oben |
|
 |
Patrick-Ratz
Anmeldungsdatum: 22.12.2008 Beiträge: 34
|
Verfasst am: 01.12.2010, 23:21 Titel: |
|
|
upps habs gesehn das über until _________________ Wie kastriert man Windows-User?
Man schneidet das Mauskabel durch... |
|
Nach oben |
|
 |
|