Problem mit KeyDown

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

Both

Betreff: Problem mit KeyDown

BeitragSo, Dez 17, 2006 22:02
Antworten mit Zitat
Benutzer-Profile anzeigen
problem mit keydown :

Code: [AUSKLAPPEN]
AppTitle "Wer wird Milliadaer"
Graphics 640,480
Print "Wählen sie Ein Menü"
Print "1.Start"
Print "2.Readme"
Print "3.Ende"
Print(" Was möchten sie tun?")
WaitKey 
If KeyDown(4) = 1 Then End
If KeyDown(3) = 1 Then Print "Kommt bald"
If KeyDown(2) = 1 Then Goto fragen
.fragen
Cls
Locate 0,0
Name$ = Input$("Dein Name : ")
Print
Print "Hallo " + Name$ + " wollen wir doch mal dein Wissen prüfen"
WaitKey
Cls
Locate 0,0
.Marke1
Print
Frage = Input$("Welche Frage möchten sie?")
Print
Cls
Locate 0,0
Select Frage
 Case 1 Print "Können Züge auf Reifen fahren?"
        Print "1.Ja"
        Print "2.Nein"Print
        WaitKey
        Cls
        Locate 0,0
        If KeyDown(2) Then Print "Richtig!" Print
        If KeyDown(3) Then Print "Falsch!" Print                 
          Print"Einige U-Bahnzüge in Paris fahren auf Reifen"
          WaitKey
Case 2 Print "Erzeugt Verdampfung Hitze oder Kälte?"
        Print "1.Hitze"
        Print "2.Kälte"Print
        WaitKey
        Cls
        Locate 0,0
        If KeyDown(3) Then Print "Richtig!" Print
        If KeyDown(2) Then Print "Falsch!" Print         
        WaitKey
Case 3 Print "Wie Lange dauert es ein Straußenei zu kochen?"
        Print "1.2h
        Print "2.40min"Print
        Antwort1 = Input$("Welche Ziffer?")
          If Antwort1 = 1 Then Print "Falsch!" Print
          If Antwort1 = 2 Then Print "Richtig!" Print
          Print
          WaitKey
Case 4 Print "Wie viele Erdbeben, die Schaden anrichten gibt es pro jahr ca.?"
        Print "1.100"
        Print "2.500"Print
        Antwort1 = Input$("Welche Ziffer?")
          If Antwort1 = 2 Then Print "Falsch!" Print
          If Antwort1 = 1 Then Print "Richtig!" Print
          Print
          WaitKey
         
End Select
Cls
Locate 0,0
Print"weiter: 1"
Print "Ende : 2"
Ende = Input$()
Select Ende
Case 1 
Cls
Locate 0,0
Goto Marke1
Case 2 End
End Select




also ganz am anfang egal welche taste ich drück es kommt immer Dein name:
wie bekomm ich das hin das wenn man im anfangsmenü wenn man auf 2 drückt "kommt bald" angezeigt wird und bei 3 beendet wird?
und kein kommentar zu goto Embarassed

Edit: Codetags eingefügt. bitte selber dran denken. Und Code einrücken macht auch was her.
MfG BladeRunner

skey-z

BeitragSo, Dez 17, 2006 22:21
Antworten mit Zitat
Benutzer-Profile anzeigen
Zitat:

If KeyDown(4) = 1 Then End
If KeyDown(3) = 1 Then Print "Kommt bald"
If KeyDown(2) = 1 Then Goto fragen
.fragen
Cls
Locate 0,0
Name$ = Input$("Dein Name : ")
Print
Print "Hallo " + Name$ + " wollen wir doch mal dein Wissen prüfen"
WaitKey
Cls
Locate 0,0


ganz einfach, weil Blitz Basic eine prozedurale sprache ist, also alles hintereinander abarbeitet.
Hier machst du ne tastenabfrage und hast danach ne Marke gesetzt, Blitz registiert diese marke und macht mit der nächsten Zeile weiter

ersetze mal folgende Zeile:
Zitat:

If KeyDown(3) = 1 Then Print "Kommt bald": waitkey():end


und bei Waitkey[b]()[/] immer die klammern setzen, da die Funktion einen Rückgabewert hat.

für den Anfang, um mit den Grundbefehlen rumzuspielen ist das Programm ok, aber schlechter Stil, schau dir hier im Forum mal ein paar codes an, wie man richtig formatiert, etc
Awards:
Coffee's Monatswettbewerb Feb. 08: 1. Platz
BAC#57: 2. Platz
Twitter
  • Zuletzt bearbeitet von skey-z am So, Dez 17, 2006 22:23, insgesamt einmal bearbeitet
 

Dreamora

BeitragSo, Dez 17, 2006 22:21
Antworten mit Zitat
Benutzer-Profile anzeigen
Bin mir ziemlich sicher, dass KeyDown in der Konsole nicht geht.

Aber selbst wenn doch: Nimm den Rückgabewert von Waitkey (Ja das gibt was zurück Smile ) und schaue ob es Asc("1") ... ist. Damit sparst du dir den Aufwand, denn du kannst direkt den Rückgabewert selecten und entsprechenden Code ausführen.

Dann gibts auch kein Goto mehr Very Happy
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.
  • Zuletzt bearbeitet von Dreamora am So, Dez 17, 2006 22:24, insgesamt 2-mal bearbeitet

BladeRunner

Moderator

BeitragSo, Dez 17, 2006 22:22
Antworten mit Zitat
Benutzer-Profile anzeigen
Er verzweigt vielleicht sogar in das kommt bald.
Da Du aber danach keine weiteren Anweisungen stehen hast wird der Code danach ausgeführt, und das ist deine .fragen Sektion, bei der zu allererst mal der Bildschirm gelöscht wird.
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92
 

Both

BeitragSo, Dez 17, 2006 22:41
Antworten mit Zitat
Benutzer-Profile anzeigen
So erstmal vielen dank für die antworten. Dank der Hilfe von Skey-z funktioniert es jetzt Laughing
und das mit meiner codeart...
naja ich bin halt anfänger und ich find den befehl goto gar niht so unpraktisch Wink also noch mal danke der code sieht jetzt so aus:

Code: [AUSKLAPPEN]

AppTitle "Wer wird Milliadaer"
Graphics 640,480
.start
Print "Wählen sie Ein Menü"
Print "1.Start"
Print "2.Readme"
Print "3.Ende"
Print(" Was möchten sie tun?")
WaitKey
If KeyDown(4) = 1 Then End
If KeyDown(3) = 1 Then
Cls
Locate 0,0
Print "Kommt bald"
WaitKey
Cls
Goto start
If KeyDown(2) = 1 Then Goto fragen
.fragen
Cls
Locate 0,0
Name$ = Input$("Dein Name : ")
Print
Print "Hallo " + Name$ + " wollen wir doch mal dein Wissen prüfen"
WaitKey
Cls
Locate 0,0
.Marke1
Print
Frage = Input$("Welche Frage möchten sie?")
Print
Cls
Locate 0,0
Select Frage
 Case 1 Print "Können Züge auf Reifen fahren?"
        Print "1.Ja"
        Print "2.Nein"Print
        WaitKey
        Cls
        Locate 0,0
        If KeyDown(2) Then Print "Richtig!" Print
        If KeyDown(3) Then Print "Falsch!" Print                 
          Print"Einige U-Bahnzüge in Paris fahren auf Reifen"
          WaitKey
Case 2 Print "Erzeugt Verdampfung Hitze oder Kälte?"
        Print "1.Hitze"
        Print "2.Kälte"Print
        WaitKey
        Cls
        Locate 0,0
        If KeyDown(3) Then Print "Richtig!" Print
        If KeyDown(2) Then Print "Falsch!" Print         
        WaitKey
Case 3 Print "Wie Lange dauert es ein Straußenei zu kochen?"
        Print "1.2h
        Print "2.40min"Print
        Antwort1 = Input$("Welche Ziffer?")
          If Antwort1 = 1 Then Print "Falsch!" Print
          If Antwort1 = 2 Then Print "Richtig!" Print
          Print
          WaitKey
Case 4 Print "Wie viele Erdbeben, die Schaden anrichten gibt es pro jahr ca.?"
        Print "1.100"
        Print "2.500"Print
        Antwort1 = Input$("Welche Ziffer?")
          If Antwort1 = 2 Then Print "Falsch!" Print
          If Antwort1 = 1 Then Print "Richtig!" Print
          Print
          WaitKey
         
End Select
Cls
Locate 0,0
Print"weiter: 1"
Print "Ende : 2"
Ende = Input$()
Select Ende
Case 1
Cls
Locate 0,0
Goto Marke1
Case 2 End
End Select
EndIf   


Edit : oh mist mir is gerade aufgefallen das jetzt meine fragen nicht mehr gehn
edit die 2.^^: jetzt gehts doch ich muss dass endif am ende nach oben verschieben
 

Dreamora

BeitragSo, Dez 17, 2006 22:57
Antworten mit Zitat
Benutzer-Profile anzeigen
Das ist worst case code sorry.

du hast einen IF Block und springst mit Goto innerhalb dieses Blocks herum, selectest noch mitten drin etc etc und eingerückt ist der ganze Spass auch nicht. Das ist, um es gelinde auszudrücken, kein Codestil sondern ein Teller Buchstabensuppe.
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group