Essayez d'améliorer votre propre quiz d'introduction avec Python

Quiz d'introduction réalisé avec Python et VLC auparavant, mais quand j'ai essayé cela en connectant un appel avec un ami avec Discord, c'était plus que ce à quoi je m'attendais. J'étais heureux. Bien que tout le monde l'apprécie, je n'étais pas satisfait du jeu réel, alors j'ai essayé d'améliorer ce point. L'essentiel du code avant l'amélioration est ici L'essentiel du code amélioré est ici

environnement

Identique au précédent. Python: 3.8.2 python-vlc: 3.0.7110 VLC Media Player: 3.0.8 Vetinari

Point d'insatisfaction

Je vais énumérer les points qui ont été effectivement soulignés ou que j'ai trouvé gênants lors de la lecture. Il est numéroté pour des raisons de commodité afin que nous puissions le comparer au problème et décrire les points d'amélioration plus tard.

1. Impossible de rejouer

Quand je faisais le quiz, je recevais parfois une demande de «rejouer», mais je ne pouvais pas parce que je ne l'avais pas implémenté.

2. Strictement sensible à la casse

Par exemple, il y a une chanson appelée "Nirv luc E". Lorsque cette chanson est correcte, "nirv luce" et "Nirvluc E" seront jugés incorrects. Même dans le programme avant l'amélioration, la réponse parfaite (correspondance exacte) et la réponse correcte (correspondance partielle) étaient séparées, mais je pensais que ce ne serait pas un problème que la réponse correcte soit traitée comme une réponse incorrecte complète en raison de la différence de casse.

3. La chanson suivante commence immédiatement après l'affichage de la bonne réponse

Ce programme était à l'origine conçu pour jouer seul, donc il n'y avait pas de problème, mais quand je jouais avec tout le monde, j'obtenais la bonne réponse ou j'abandonnais et ensuite j'étais heureux ou regretté de voir la bonne réponse. J'ai voulu.

4. Certaines chansons ont une longue section silencieuse dans l'intro

Dans de rares cas, l'intro s'est déplacée vers l'écran de saisie de réponse sans que la musique ne démarre.

5. Si vous le faites plusieurs fois, tout le monde s'en souviendra

Il y avait un problème qui devenait ennuyeux au fur et à mesure que je m'en souvenais car une partie fixe coulait pendant un temps fixe.

6. Il y avait un bug de jugement partiel

Afin de vous éviter de saisir un seul caractère dans le titre de la chanson et d'en faire la bonne réponse, j'ai essayé de saisir au moins 3 caractères (malgré le fait que cela corresponde à l'explication) ) Même si je saisissais correctement le titre de la chanson avec 2 caractères ou moins, je jugeais que "le nombre de caractères d'entrée est trop petit".

7. Il y a eu un exemple où j'ai entré un peu et obtenu la bonne réponse.

Contrairement au problème 6, même de longs titres de chansons (par exemple, "une considération d'une vision du monde fantastique en moi et un événement dans une certaine réalité qui m'a rappelé sa manifestation") "en moi" et "le monde Il y avait une faille qui serait traitée comme une réponse correcte si vous saisissiez «vue» et «événement». Il n'y a pas beaucoup de chansons avec des titres très longs, mais je ne voulais pas avoir de telles lacunes.

Amélioration

Nous allons résoudre les sept problèmes énumérés ci-dessus.

1. Implémentez le système de commande

Afin de résoudre le problème 1 et d'implémenter une fonction d'indication, nous avons rendu possible la saisie de commandes sur l'écran de saisie du titre de la chanson. J'ai décidé de traiter la chaîne de caractères commençant par _ comme une commande. J'ai choisi le trait de soulignement comme préfixe parce que je pensais qu'il n'y aurait pas de titre de chanson commençant par le trait de soulignement (car il y a quelque chose comme "!!! Chaos Time !!!" pour !). Nous avons intégré des fonctions d'abandon et d'indication dans ce système de commande. Vous trouverez ci-dessous une liste des commandes réellement implémentées. --_giveup: abandonner la fonction. Entrez lorsque vous ne connaissez pas la réponse. --_replay: fonction de relecture. Rejouer. --_length: affiche la longueur du titre de la chanson. --_letter: affiche le premier caractère du titre de la chanson.

Cette image utilise en fait la fonction de commande. Je l'utilise dans la 5ème chanson. スクリーンショット 2020-09-07 14.31.09.png

La structure est telle que les commandes peuvent être ajoutées librement, de sorte que les astuces peuvent être encore améliorées.

2. Unifier les lettres en lettres minuscules et éliminer les espaces

Afin de résoudre le problème 2, l'alphabet saisi est converti en minuscules. Pour cela, j'ai utilisé la méthode lower () fournie en Python. Cependant, j'essaye de garder le titre original de la chanson pour un jugement parfait. Pour plus de détails, veuillez consulter le code téléchargé sur Gist.

  1. Faites un jugement parfait en comparant la chaîne de caractères d'entrée avec le titre original de la chanson
  2. Quand 1 est faux La réponse correcte est jugée en comparant la chaîne de caractères d'entrée avec lower () et le titre original de la chanson avec lower (). 3.2 S'il est faux, il est jugé incorrect.

Il est jugé par la procédure.

3. Définissez un intervalle entre la chanson suivante

Cela a simplement mis ʻinput () pour que je doive appuyer sur Entrée pour passer à la chanson suivante. Au début, je pensais utiliser time.sleep ()`, mais j'ai réalisé que je n'avais pas besoin de régler l'heure ici à une longueur fixe, alors je l'ai implémenté comme ça.

4/5. La partie / l'heure de lecture était aléatoire

Afin de résoudre les problèmes 4 et 5 ensemble, la chanson est jouée à partir d'un point aléatoire au milieu au lieu de l'intro. De plus, la durée de lecture est choisie au hasard entre 3 et 7 secondes, de sorte qu'une difficulté élevée et une difficulté faible peuvent être mélangées de manière bien équilibrée.

6/7. Le jugement se fait par rapport au nombre de caractères corrects

Les problèmes 6 et 7 seront expliqués ensemble. Collez le code de la partie correspondante ci-dessous.

#Unité de jugement de longueur
if len(answer) >= min(len(music_name)//3, len(music_name_lower)):
    #Unité de jugement de la bonne réponse
    if answer == music_name:
        print("Parfait! incroyable!")
        break
    elif answer_lower in music_name_lower:
        print("Bonne réponse! Félicitations!")
        break
    else:
        print("Pardon! Réponse incorrecte!")
else:
    print("Il y a trop peu de caractères à saisir!")

Comme vous pouvez le voir sur la deuxième ligne, la condition est passée de "3 caractères ou plus" à "1/3 ou plus du titre de la chanson" (résolution du problème 7). De plus, en faisant cela, même si le titre de la chanson est un caractère, cela fonctionne normalement (problème 6 résolu).

Ce que je ne pourrais pas / veux améliorer / corriger

Parfois, une erreur se produit

スクリーンショット 2020-09-07 14.31.18.png Parfois, la chanson ne joue pas et j'obtiens ce genre d'erreur, mais je ne connais pas la cause et je l'ai laissée pour le moment.

Je veux travailler avec Discord

De nos jours, je joue souvent ce quiz musical avec mes amis sur Discord, je veux donc rendre le jugement un peu plus facile en mettant les réponses entrées par mes amis dans le programme telles quelles. À ce stade, je dois copier et coller les réponses de chacun par moi-même.

Je souhaite définir le nombre maximum de fois

Je souhaite définir le nombre de chansons à lire en premier et définir la limite supérieure à laquelle il est possible de répondre.

Je veux obtenir le titre de la chanson directement au lieu du nom du fichier

Il existe une chanson appelée "Tiama T: F minor", mais comme : est un caractère qui ne peut pas être utilisé dans les noms de fichiers, il a été remplacé par des notations telles que Tiama T-F minor et Tiama TF minor. Le titre de la chanson défini dans le fichier lui-même est correct, je voudrais donc l'utiliser pour juger.

Résumé

J'ai fini avec un quiz musical au lieu d'un quiz d'introduction, mais je suis content parce que je m'ennuie moins. J'aimerais également acheter un CD pour augmenter la variété de chansons et de jouer.

Recommended Posts

Essayez d'améliorer votre propre quiz d'introduction avec Python
Essayez de mettre des LED dans votre propre PC (légèrement)
[Road to Intermediate Python] Définissez dans votre propre classe
[Python] journalisation dans votre propre module
Essayez de calculer Trace en Python
Essayez de trier vos propres objets avec des files d'attente prioritaires en Python
Essayez de vous connecter à qiita avec Python
Créez vos propres commandes Linux en Python
[LLDB] Créez votre propre commande avec Python
Utilisez facilement vos propres fonctions en Python
Essayez de vous connecter automatiquement à Netflix en utilisant python sur votre PC
Essayez de fouiller votre journal avec Python
Obtenez votre propre adresse IP en Python
Essayez de créer votre propre AWS-SDK avec bash
Premiers pas pour essayer Google CloudVision en Python
Calculons en fait le problème statistique avec Python
3.14 π jour, alors essayez de sortir en Python
Essayez auto pour évaluer automatiquement Enum dans Python 3.6
Comment définir votre propre cible dans Sage
Essayez de calculer RPN avec Python (pour les débutants)
Importez vos propres modules avec le développement Python de Grasshopper
Essayez gRPC en Python
Essayez 9 tranches en Python
Créez votre propre Big Data en Python pour validation
Essayez de créer un module Python en langage C
[Introduction à l'application Udemy Python3 +] 66. Création de votre propre exception
Utilisez CASA Toolkit dans votre propre environnement Python
Pour vider stdout en Python
Essayez de comprendre Python soi
Connectez-vous au site Web en Python
Essayez LINE Notify avec Python
Parler avec Python [synthèse vocale]
Implémentons Yuma dans Python 3
Comment développer en Python
Publier sur Slack en Python
Essayez de le faire avec GUI, PyQt en Python
Comment utiliser pyenv et pyenv-virtualenv à votre manière
Essayez simplement de recevoir un webhook avec ngrok et Python
[Python] Lorsque vous souhaitez importer et utiliser votre propre package dans le répertoire supérieur
Essayez de faire une stratégie de blackjack en renforçant l'apprentissage (③ Renforcer l'apprentissage dans votre propre environnement OpenAI Gym))
[Python] Créez votre propre bot LINE
Convertir Markdown en PDF en Python
Essayez d'obtenir la liste des fils du bulletin d'information (je n'aime pas) avec Python.
Comment collecter des images en Python
Essayez d'exploiter Facebook avec Python
Comment utiliser SQLite en Python
Essayez d'utiliser LevelDB avec Python (plyvel)
Essayez d'implémenter k-NN par vous-même
Essayons Fizz Buzz avec Python
Dans la commande python, python pointe vers python3.8
Créez votre propre classe de structure graphique et son dessin avec python
Essayez docker: créez votre propre image de conteneur pour une application Web Python
Essayez l'accès au registre PLC en Python
Essayez de mettre des données dans MongoDB
Essayez de convertir la CLI cloudmonkey en python3 -1
Comment utiliser Mysql avec python