Gast
#2577695
Hallo zusammen, Ich arbeite derzeit an einem Quizspiel mit einem Atmega32 und dem Pollin TG12864b Grafikdisplay. Das Spiel soll 15 Fragen haben (im Code habe ich erstmal nur 3 Fragen zum Test vorgesehen). Beim Start soll kurz "Quizmaster 2012" eingeblendet werden, danach soll das Spiel beginnen, erste Frage soll dargestelllt werden. Wenn eine Antwort ausgewählt wurde, soll die Zeile mit der richtigen Antwort invertiert dargestellt werden um die Auswahl zu markieren, die anderen Antworten sollen normal dargestellt werden. Wenn die Antwort falsch ist soll das Programm kurz zur Hauptanzeige Lcdat 4 , 1 , "QUIZMASTER 2012" Springen und dann die erste Frage laden (erstmal ohne zufällige Auswahl der Fragen). Wenn die Antwort richtig ist, soll er den nächsten Frage, Antwort, Geldblock darstellen. Sind alle Fragen durch, soll er zurück zur Hauptanzeige springen. Den Code schreibe ich mit Bascom AVR. Ich hatte mir gedacht das Display so zu gestalten (es stehen mit einer 8x8 Font 8 zeilen und 16 Zeichen zur verfügung): Frage: 50EUR Wer hat im Film. ..die Hauptrolle gespielt? A:(AntwortA) B:(AntwortB) C:(AntwortC) D:(AntwortD) Das ganze möchte ich mit 4 Tasten bedienen (Für jede Antwort eine Taste) Nun zu meiner Frage: Mit welchem Befehl kann ich den nächsten Block darstellen? Mit "Next" funzt das irgendwie nicht so richtig. Oder muss man da mit Cnt = Cnt+1 arbeiten? Ich stehe dort gerade ein bisschen auf dem Schlauch. Der Code sieht bisher so aus: (Da sind sicherlich einige Dinge die noch nicht so optimal gelöst wurden, aber man lernt ja noch dazu) 'Chipkonfiguration und Quarzfrequenz $regfile = "m32def.dat" $crystal = 8000000 'Hauptkonfiguration der Ein-und Ausgänge: Config Portd.3 = Input Config Portd.4 = Input Config Portd.5 = Input Config Portd.6 = Input 'Pullup-Widerstände aktivieren Portd.3 = 1 Portd.4 = 1 Portd.5 = 1 Portd.6 = 1 'Grafik-LCD Konfiguration $lib "glcdKS108.lbx" Wait 2 Print "Config" Config Graphlcd = 128 * 64sed , Dataport = Porta , Controlport = Portc , Ce = 0 , Ce2 = 1 , Cd = 4 , Rd = 3 , Reset = 2 , Enable = 5 Cls Setfont Font8x8 Cls Dim A As Integer Dim X As Integer Dim Loesung(3) As Integer Dim Frage(3) As String * 16 Dim Geldanzeige(3) As String * 16 Dim Antworta(3) As String * 16 Dim Antwortb(3) As String * 16 Dim Antwortc(3) As String * 16 Dim Antwortd(3) As String * 16 Wait 1 Cls Goto Hauptanzeige Hauptanzeige: Lcdat , 4 , 1 , " QUIZMASTER " , 1 Lcdat , 5 , 1 , " 2012 " , 1 Gosub Tasterabfrage Frage(1) = "Was ist ein Aal?" Frage(2) = "Wie heisse ich? " Frage(3) = "Wie alt bin ich?" Loesung(1) = 1 Loesung(2) = 4 Loesung(3) = 2 'Antwortmöglichkeiten (nicht negiert): Antworta(1) = "A:Fischart " Antwortb(1) = "B:Werkzeug " Antwortc(1) = "C:Maschine " Antwortd(1) = "D:Krankheit " Antworta(2) = "A:Peter " Antwortb(2) = "B:Klaus " Antwortc(2) = "C:Matthias " Antwortd(2) = "D:Florian " Antworta(3) = "A:10 Jahre alt " Antwortb(3) = "B:20 Jahre alt " Antwortc(3) = "C:30 Jahre alt " Antwortd(3) = "D:40 Jahre alt " 'Geldanzeige für die drei Fragen: Geldanzeige(1) = "Frage: 50EUR" Geldanzeige(2) = "Frage: 100EUR" Geldanzeige(3) = "Frage: 250EUR" Do Tasterabfrage: For X = 1 To 3 Step 1 'Ersten Frage-und Antwortenblock darstellen Lcdat 1 , 1 , Geldanzeige(x) , 1 Lcdat 2 , 1 , Frage(x) Lcdat 5 , 1 , Antworta(x) Lcdat 6 , 1 , Antwortb(x) Lcdat 7 , 1 , Antwortc(x) Lcdat 8 , 1 , Antwortd(x) If Loesung(x) = A Then Next X 'nächsten Frageblock darstellen! Wie? If Loesung(x) <> A Then Gosub Hauptanzeige 'Zurück zur Hauptanzeige If Loesung(x) = 0 Then Gosub Tasterabfrage 'Die Tasten abragen wenn keine Taste gedrückt wurde 'Antwortzuweisung der jeweiligen Taste, Hauptfunktion des Programms If Pind.3 = 0 Then A = 1 If Pind.4 = 0 Then A = 2 If Pind.5 = 0 Then A = 3 If Pind.6 = 0 Then A = 4 If Pind.3 = 1 And Pind.4 = 1 And Pind.5 = 1 And Pind.6 = 1 Then A = 0 Return Loop End $include "font8x8.font"