(Kivy) Quizauswertung mit bestehendem / neuem Screen / Popup

Hier werden alle anderen GUI-Toolkits sowie Spezial-Toolkits wie Spiele-Engines behandelt.
Antworten
H3llo
User
Beiträge: 7
Registriert: Montag 9. Mai 2022, 10:17

Hallo, ich möchte ein Quiz machen, bei dem der Spieler sagen soll, ob eine Behauptung stimmt oder nicht stimmt.

Nachdem der Spieler geantwortet hat, soll die Antwort natürlich ausgewertet werden. Wenn die Antwort richtig ist,
soll der Score des Spielers hoch gesetzt werden, wenn die Antwort falsch ist, soll das Spiel beendet werden,
der Score des Spielers soll ggf. in der Liste der Highscores gespeichert werden und der Spieler soll natürlich
auch benachrichtigt werden, falls sein Score im Highscore gelandet ist. Falls die Behauptung nicht stimmt,
soll außerdem die Behauptung so angezeigt werden, wie sie korrekt ist (also die Behauptung ist zum Beispiel
"Madrid ist die Hauptstadt von Frankreich" - dann soll "Madrid ist die Hauptstadt von Spanien" angezeigt werden).

Meine Frage ist: Wie kann ich die Auswertung der Antwort hinsichtlich des UI sinnvoll umsetzen? Kann man den gleichen Screen
benutzen (z. B. indem man ein neues Layout mit neuen Grafikelementen lädt (Geht das?)), kann man einen neuen Screen benutzen
(Wie "übergebe" ich den Score, die Behauptung und die Antwort des Nutzers vom alten zum neuen Screen?) oder kann man ein
"Popup"-Fenster nutzen (auch hier die Fragen: Wie "übergebe" ich den Score, die Behauptung und die Antwort des Nutzers vom
Screen zum Popup-Fenster?). Ich hoffe, mein Problem ist verständlich. Bin dankbar für alle Antworten!

Hier mein Code:

Buttons, die der Spieler nutzt, um zu antworten; aus der kv-Datei:

Code: Alles auswählen

Button:
                    text: "Ja"
                    font_name: "fonts/GloriaHallelujah-Regular.ttf"
                    font_size: "25dp"
                    background_normal: ''
                    background_color: 0, 0, 0, 0
                    color: .63, .63, 0, 1
                    on_press: root.antwort_pruefen(True)
                    size_hint: 1, 1
Button:
                    text: "Nein"
                    font_name: "fonts/GloriaHallelujah-Regular.ttf"
                    font_size: "25dp"
                    background_normal: ''
                    background_color: 0, 0, 0, 0
                    color: .63, .63, 0, 1
                    on_press: root.antwort_pruefen(False)
                    size_hint: 1, 1
Klasse Quiz aus der main-Datei:

Code: Alles auswählen

class Quiz(Screen):

    score = StringProperty("0")
    frage_und_richtige_behauptung = frageErmitteln()
    frage = StringProperty(frage_und_richtige_behauptung[0])
    korrekte_behauptung = StringProperty(frage_und_richtige_behauptung[1])
    
    def antwort_pruefen(self, antwort):
        if antwort == True and self.korrekte_behauptung == "" or antwort == False and self.korrekte_behauptung != "":
            self.score = str(int(self.score) + 1000)
        self.frage_und_richtige_behauptung = frageErmitteln()
        self.frage = self.frage_und_richtige_behauptung[0]
        self.korrekte_behauptung = self.frage_und_richtige_behauptung[1]
__deets__
User
Beiträge: 12103
Registriert: Mittwoch 14. Oktober 2015, 14:29

H3llo
User
Beiträge: 7
Registriert: Montag 9. Mai 2022, 10:17

Ich weiß nicht, ob es damit schon geklärt ist, aber meine Frage ist, wie ich eine Variable, z. B. "antwort" (in der die Antwort des Spielers gespeichert ist) vom ersten, dem "Quiz"-Screen, zum zweiten, dem "Auswertungs"-Screen, übergebe.
__deets__
User
Beiträge: 12103
Registriert: Mittwoch 14. Oktober 2015, 14:29

Du musst die teilen. Zb indem du die aus dem einen Screen in den anderen übergibst in dem Code, der durch die Eingabe der Antwort ausgelöst wird.
H3llo
User
Beiträge: 7
Registriert: Montag 9. Mai 2022, 10:17

Kannst du mir zeigen, wie der Code dafür beispielhaft aussehen würde?
Benutzeravatar
Dennis89
User
Beiträge: 479
Registriert: Freitag 11. Dezember 2020, 15:13

Hallo,

schau dir mal meine kv-Datei an, zum Beispiel das Internetradio mit der Lautstärkeeinstellung. Das Prinzip müsstest du anwenden können. Nur halt auf einen weiteren Screen übergeben.
https://forum-raspberrypi.de/forum/thre ... hgeraeten/

Grüße
Dennis

Edit: Bin am Handy, deswegen nur der Link und du musst dir die Stelle selbst aussuchen.
“A ship is always safe at the shore, but that is not what it is built for.”
Antworten