Versuchen Sie, Ihr eigenes Intro-Quiz mit Python zu verbessern

Einführungsquiz mit Python und VLC zuvor, aber als ich dies versuchte, indem ich einen Anruf mit einem Freund mit Discord verband, war es mehr als ich erwartet hatte. Ich war glücklich. Obwohl es allen Spaß machte, war ich mit dem eigentlichen Spiel unzufrieden und versuchte, diesen Punkt zu verbessern. Der Kern des Codes vor der Verbesserung ist hier Der Kern des verbesserten Codes ist hier

Umgebung

Gleich wie der vorherige. Python: 3.8.2 python-vlc: 3.0.7110 VLC Media Player: 3.0.8 Vetinari

Unzufriedenheitspunkt

Ich werde die Punkte auflisten, auf die tatsächlich hingewiesen wurde oder die ich beim Spielen als unpraktisch empfunden habe. Es ist der Einfachheit halber nummeriert, damit wir es mit dem Problem vergleichen und die Verbesserungspunkte später beschreiben können.

1. Kann nicht wiedergegeben werden

Wenn ich das Quiz machte, erhielt ich manchmal die Aufforderung, es noch einmal zu spielen, aber ich konnte es nicht, weil ich es nicht implementiert hatte.

2. Streng zwischen Groß- und Kleinschreibung unterscheiden

Zum Beispiel gibt es ein Lied namens "Nirv luc E". Wenn dieses Lied korrekt ist, werden "nirv luce" und "Nirvluc E" als falsch beurteilt. Selbst im Programm vor der Verbesserung wurden die perfekte (genaue Übereinstimmung) und die richtige Antwort (teilweise Übereinstimmung) getrennt, aber ich dachte, dass es kein Problem wäre, wenn die richtige Antwort aufgrund des Unterschieds im Fall als vollständig falsche Antwort behandelt würde.

3. Das nächste Lied beginnt sofort, nachdem die richtige Antwort angezeigt wurde

Dieses Programm wurde ursprünglich für das Spielen alleine entwickelt, daher gab es kein Problem, aber als ich mit allen spielte, bekam ich die richtige Antwort oder gab auf und war dann glücklich oder bedauerte, die richtige Antwort zu sehen. Ich wollte.

4. Einige Songs haben einen langen stillen Abschnitt im Intro

In seltenen Fällen wechselte das Intro zum Antworteingabebildschirm, ohne dass die Musik gestartet wurde.

5. Wenn Sie es oft tun, wird sich jeder daran erinnern

Es gab ein Problem, dass es langweilig wurde, als ich mich allmählich daran erinnerte, weil ein fester Teil für eine feste Zeit floss.

6. Es gab einen Teilbeurteilungsfehler

Um zu verhindern, dass Sie nur ein Zeichen in den Songtitel eingeben und die richtige Antwort geben, habe ich versucht, mindestens drei Zeichen einzugeben (obwohl dies der Erklärung entspricht). ) Selbst wenn ich den Songtitel mit 2 oder weniger Zeichen richtig eingebe, habe ich das Urteil erhalten, dass "die Anzahl der eingegebenen Zeichen zu gering ist".

7. Es gab ein Beispiel, in dem ich ein wenig eingegeben und die richtige Antwort erhalten habe.

Im Gegensatz zu Problem 6 sogar lange Songtitel (zum Beispiel "eine Betrachtung einer fantastischen Weltanschauung in mir und ein Ereignis in einer bestimmten Realität, das mich an seine Manifestation erinnerte") "in mir" und "der Welt" Es gab eine Lücke, die als richtige Antwort behandelt würde, wenn Sie "Ansicht" und "Ereignis" eingeben würden. Es gibt nicht viele Songs mit sehr langen Titeln, aber ich wollte keine solchen Lücken haben.

Verbesserung

Wir werden die sieben oben aufgeführten Probleme lösen.

1. Implementieren Sie das Befehlssystem

Um Problem 1 zu lösen und eine Hinweisfunktion zu implementieren, haben wir es möglich gemacht, Befehle auf dem Eingabebildschirm für den Songtitel einzugeben. Ich habe beschlossen, die Zeichenfolge, die mit "_" beginnt, als Befehl zu behandeln. Ich habe den Unterstrich als Präfix gewählt, weil ich dachte, es gäbe keinen Songtitel, der mit dem Unterstrich beginnt (weil es so etwas wie "!!! Chaos Time !!!" für "!" Gibt). Wir haben Abgabe- und Hinweisfunktionen in dieses Befehlssystem integriert. Unten finden Sie eine Liste der tatsächlich implementierten Befehle. --_giveup: Funktion aufgeben. Geben Sie ein, wenn Sie die Antwort nicht kennen. --_replay: Wiedergabefunktion. Nochmal abspielen. --_length: Zeigt die Länge des Songtitels an. --_letter: Zeigt das erste Zeichen des Songtitels an.

Dieses Bild verwendet tatsächlich die Befehlsfunktion. Ich benutze es im 5. Lied. スクリーンショット 2020-09-07 14.31.09.png

Die Struktur ist so, dass Befehle frei hinzugefügt werden können, sodass Hinweise weiter verbessert werden können.

2. Vereinheitlichen Sie Buchstaben mit Kleinbuchstaben und entfernen Sie Leerzeichen

Um Problem 2 zu lösen, wird das eingegebene Alphabet in Kleinbuchstaben umgewandelt. Dafür habe ich die in Python bereitgestellte Methode "lower ()" verwendet. Ich versuche jedoch, den ursprünglichen richtigen Songtitel für ein perfektes Urteilsvermögen beizubehalten. Einzelheiten finden Sie im Code, der auf Gist hochgeladen wurde.

  1. Machen Sie ein perfektes Urteil, indem Sie die eingegebene Zeichenkette mit dem ursprünglichen Songtitel vergleichen
  2. Wenn 1 falsch ist Die richtige Antwort wird beurteilt, indem die eingegebene Zeichenkette mit "lower ()" und der ursprüngliche Songtitel mit "lower ()" verglichen wird. 3.2 Wenn es falsch ist, wird es als falsch beurteilt.

Es wird nach dem Verfahren beurteilt.

3. Stellen Sie ein Intervall zwischen dem nächsten Song ein

Dies gab einfach "input ()" ein, so dass ich die Eingabetaste drücken musste, um zum nächsten Song zu gelangen. Zuerst dachte ich über die Verwendung von "time.sleep ()" nach, aber mir wurde klar, dass ich die Zeit hier nicht auf eine feste Länge einstellen musste, also implementierte ich sie so.

4/5. Wiedergabe Teil / Zeit wurde randomisiert

Um die Probleme 4 und 5 gemeinsam zu lösen, wird das Lied von einem zufälligen Punkt in der Mitte anstelle des Intro gespielt. Außerdem wird die Wiedergabezeit zufällig zwischen 3 und 7 Sekunden ausgewählt, so dass hohe und niedrige Schwierigkeitsgrade ausgewogen gemischt werden können.

6/7. Die Beurteilung erfolgt nach dem Verhältnis zur Anzahl der richtigen Zeichen

Die Probleme 6 und 7 werden gemeinsam erklärt. Fügen Sie den Code für das entsprechende Teil unten ein.

#Längenbeurteilungseinheit
if len(answer) >= min(len(music_name)//3, len(music_name_lower)):
    #Richtige Antwortbeurteilungseinheit
    if answer == music_name:
        print("Perfekt! tolle!")
        break
    elif answer_lower in music_name_lower:
        print("Richtige Antwort! Glückwunsch!")
        break
    else:
        print("Es tut uns leid! Falsche Antwort!")
else:
    print("Es sind zu wenige Zeichen eingegeben!")

Wie Sie in der zweiten Zeile sehen können, wurde die Bedingung von "3 Zeichen oder mehr" in "1/3 oder mehr des Songtitels" geändert (Problem 7 lösen). Auf diese Weise funktioniert der Songtitel auch dann normal, wenn er ein Zeichen ist (gelöstes Problem 6).

Was ich nicht verbessern / korrigieren konnte / wollte

Gelegentlich tritt ein Fehler auf

スクリーンショット 2020-09-07 14.31.18.png Gelegentlich wird das Lied nicht abgespielt und ich erhalte diese Art von Fehler, aber ich kenne die Ursache nicht und habe es vorerst verlassen.

Ich möchte mit Discord arbeiten

Heutzutage spiele ich dieses Musikquiz oft mit meinen Freunden auf Discord, deshalb möchte ich das Urteil ein wenig erleichtern, indem ich die von meinen Freunden eingegebenen Antworten so in das Programm einbaue, wie sie sind. An dieser Stelle muss ich alle Antworten selbst kopieren und einfügen.

Ich möchte die maximale Anzahl von Malen festlegen

Ich möchte festlegen, wie viele Songs zuerst abgespielt werden sollen, und die Obergrenze festlegen, die beantwortet werden kann.

Ich möchte den Songtitel direkt anstelle des Dateinamens erhalten

Es gibt ein Lied namens "Tiama T: F-Moll", aber da ":" ein Zeichen ist, das nicht in Dateinamen verwendet werden kann, wurde es durch Notationen wie "Tiama T-F-Moll" und "Tiama TF-Moll" ersetzt. Der in der Datei selbst festgelegte Songtitel ist korrekt, daher möchte ich ihn zur Beurteilung verwenden.

Zusammenfassung

Am Ende hatte ich ein Musikquiz anstelle eines Intro-Quiz, aber ich bin glücklich, weil mir weniger langweilig ist. Außerdem möchte ich eine CD kaufen und mit mehr Variationen von Songs spielen.

Recommended Posts

Versuchen Sie, Ihr eigenes Intro-Quiz mit Python zu verbessern
Versuchen Sie, die LED in Ihren eigenen PC einzubauen (leicht)
[Road to Intermediate Python] Definieren Sie in Ihrer eigenen Klasse
[Python] Anmelden Ihres eigenen Moduls
Versuchen Sie, Trace in Python zu berechnen
Versuchen Sie, Ihre eigenen Objekte mit Prioritätswarteschlangen in Python zu sortieren
Versuchen Sie, sich mit Python bei qiita anzumelden
Erstellen Sie Ihre eigenen Linux-Befehle in Python
[LLDB] Erstellen Sie Ihren eigenen Befehl mit Python
Verwenden Sie einfach Ihre eigenen Funktionen in Python
Versuchen Sie, sich mit Python auf Ihrem PC automatisch bei Netflix anzumelden
Versuchen Sie, Ihr Tagebuch mit Python zu durchsuchen
Holen Sie sich Ihre eigene IP-Adresse in Python
Versuchen Sie, Ihr eigenes AWS-SDK mit bash zu erstellen
Erste Schritte zum Testen von Google CloudVision in Python
Berechnen wir das statistische Problem mit Python
3,14 π Tag, versuchen Sie also, in Python auszugeben
Versuchen Sie automatisch, Enum in Python 3.6 automatisch zu bewerten
So definieren Sie Ihr eigenes Ziel in Sage
Versuchen Sie, RPN mit Python zu berechnen (für Anfänger)
Importieren Sie Ihre eigenen Module mit der Python-Entwicklung von Grasshopper
Versuchen Sie gRPC in Python
Probieren Sie 9 Slices in Python aus
Erstellen Sie Ihre eigenen Big Data in Python zur Validierung
Versuchen Sie, ein Python-Modul in C-Sprache zu erstellen
[Einführung in die Udemy Python3 + -Anwendung] 66. Erstellen einer eigenen Ausnahme
Verwenden Sie CASA Toolkit in Ihrer eigenen Python-Umgebung
So löschen Sie stdout in Python
Versuchen Sie, Python selbst zu verstehen
Melden Sie sich auf der Website in Python an
Versuchen Sie LINE Notify mit Python
Sprechen mit Python [Text zu Sprache]
Lassen Sie uns Yuma in Python 3 implementieren
Wie man in Python entwickelt
Post an Slack in Python
Versuchen Sie es mit GUI, PyQt in Python
Wie Sie pyenv und pyenv-virtualenv auf Ihre eigene Weise verwenden
Versuchen Sie einfach, einen Webhook mit ngrok und Python zu erhalten
[Python] Wenn Sie Ihr eigenes Paket im oberen Verzeichnis importieren und verwenden möchten
Versuchen Sie, eine Blackjack-Strategie zu entwickeln, indem Sie das Lernen stärken (③ Stärkung des Lernens in Ihrer eigenen OpenAI Gym-Umgebung).
[Python] Erstelle deinen eigenen LINE-Bot
Konvertieren Sie Markdown in Python in PDF
Versuchen Sie, die Thread-Liste der Nachrichten (Abneigung) mit Python zu erhalten.
So sammeln Sie Bilder in Python
Versuchen Sie, Facebook mit Python zu betreiben
Verwendung von SQLite in Python
Versuchen Sie es mit LevelDB mit Python (plyvel)
Versuchen Sie, k-NN selbst zu implementieren
Versuchen wir es mit Fizz Buzz mit Python
Im Python-Befehl zeigt Python auf Python3.8
Erstellen Sie Ihre eigene Diagrammstrukturklasse und deren Zeichnung mit Python
Docker ausprobieren: Erstellen Sie Ihr eigenes Container-Image für eine Python-Web-App
Versuchen Sie den Zugriff auf das SPS-Register in Python
Versuchen Sie, Daten in MongoDB abzulegen
Versuchen Sie, die cloudmonkey-CLI in python3 -1 zu konvertieren
Wie man MySQL mit Python benutzt