[PYTHON] Si vous êtes novice en programmation, pourquoi ne pas créer un "jeu" pour le moment? L'histoire

introduction

J'ai commencé à programmer, mais je ne sais pas à quoi cela sert. Je pense qu'il y a étonnamment beaucoup de débutants qui ne peuvent pas se faire une idée de ce qu'ils peuvent faire.

Eh bien, vous savez que python peut faire de l'automatisation, de l'apprentissage automatique et de la reconnaissance d'images, par exemple. Je sais aussi.

Mais quand je commence réellement à étudier, la première chose est "variables", "types de données", "listes" ... Alors c'est quoi? Est-ce délicieux? ?? N'est-ce pas? Je suis stupide.

Maintenant,

L'introduction est devenue plus longue. Je pense que la formation actuelle en matière de programmation a un grand obstacle. À l'exception des personnes intelligentes, les coûts d'apprentissage sont élevés pour des gens comme moi.

C'est pourquoi je pense qu'il est normal de commencer par quelque chose de plus simple.

Alors qu'est-ce que tu fais?

Faites un "jeu". Cependant, le jeu est extrêmement facile. C'est un jeu simple où vous jouez simplement "Janken" avec votre personnage préféré.

C'est un jeu de ciseaux-papier-pierre qui apparaît souvent dans les livres pour les débutants en programmation. Je vais faire un arrangement à ma manière.

Même s'il ne s'agit que d'un Janken, je pense que le Janken fait avec beaucoup d'amour et de dévouement est intéressant tel quel.

la mise en oeuvre

1. Tout d'abord, faites un simple indésirable

janken.py



import random

# janken head
print("C'est Janken YO!")
print("Première aube! Janken whit! !!")

# define function
def janken():
    global myhand
    global mynum
    global yournum
    yournum = random.randint(1,3)
    mynum = 0
    myhand = input(":")
    if myhand == "goo":
        mynum = 1
    elif myhand == "choki":
        mynum = 2
    elif myhand == "paa":
        mynum = 3
    else:
        print("Faites-le sérieusement!")
    
    if yournum == 1:
        yourhand = "goo"
        print(yourhand)
    elif yournum == 2:
        yourhand = "choki"
        print(yourhand)
    elif yournum == 3:
        yourhand = "paa"
        print(yourhand)
    
    i = 1
    while i ==1:
        result = (yournum - mynum) % 3
        if result == 0:
            print("Aiko!")
            janken()
        elif result == 1:
            print("J'ai perdu ~")
            break
        elif result == 2:
            print("J'ai gagné!")
            break

# execute function
janken()

Nous avons créé un jeu dans lequel vous pouvez jouer avec quelqu'un qui ressemble à Fujiwara. Il y a deux points principaux dans le programme Janken, La première consiste à exprimer ["goo", "choki", "paa"] numériquement comme [1,2,3]. Ensuite, la différence entre votre adversaire et votre propre numéro est décidée en utilisant la formule conjointe de 3. Par exemple, si l'autre partie est "goo" et que vous donnez également "goo", 1-1 = 0 0% 3 = 0, donc Aiko. Si l'adversaire est "goo" et que vous êtes "choki", vous perdez car 1-2 = -1 -1% 3 = 2. Si votre adversaire est "goo" et que vous êtes "paa", vous gagnez car 1-3 = -2 -2% 3 = 1. Etc.

La seconde est de bien exprimer ce cas. Janken est un algorithme qui provoque une boucle uniquement à ce moment. Donc, à ce stade, vous devez écrire un processus pour recommencer (j'appelle à nouveau la fonction, mais il y a peut-être un meilleur moyen).

Au fait, c'est amusant de jouer avec quelqu'un comme Fujiwara, et pour un livre d'étude générale, c'est la fin, mais cette fois j'aimerais m'arranger davantage.

2. Obtenez 3 à l'avance

En parlant de Janken, il est environ trois heures d'avance. Donc, je vais prendre 3 de ces programmes à l'avance.

janken.py



import random

# janken head
print("C'est un Janken YO à trois volets!")
print("Première aube! Janken whit! !!")

count = [0,0]   # [mypoint,yourpoint]

# define function
def janken():
    global myhand
    global mynum
    global yournum
    yournum = random.randint(1,3)
    mynum = 0
    myhand = input(":")
    if myhand == "goo":
        mynum = 1
    elif myhand == "choki":
        mynum = 2
    elif myhand == "paa":
        mynum = 3
    else:
        print("Faites-le sérieusement!")
    
    if yournum == 1:
        yourhand = "goo"
        print(yourhand)
    elif yournum == 2:
        yourhand = "choki"
        print(yourhand)
    elif yournum == 3:
        yourhand = "paa"
        print(yourhand)
    
    global count
    i = 1
    while i ==1:
        result = (yournum - mynum) % 3
        if result == 0:
            print("Aiko!")
            janken()
        elif result == 1:
            print("J'ai perdu ~")
            if count[0] < 2:
                print("Je ne perdrai pas la prochaine fois ~")
                count[0] += 1
                print(str(count[0]) + "Gagner"+ str(count[1]) + "C'est une défaite!")
                janken()
            elif count[0] == 2:
                print("J'ai été tué ~")
                break
        elif result == 2:
            print("J'ai gagné!")
            if count[1] < 2:
                print("Le perdant écoute ce que dit le gagnant ~")
                count[1] += 1
                print(str(count[0]) + "Gagner"+ str(count[1]) + "C'est une défaite!")
                janken()
            elif count[1] == 2:
                print("Hourra! J'ai gagné ~")
                break

# execute function
janken()

Avec cela, j'ai pu en obtenir trois à l'avance. Le taux de réussite est-il d'environ 50%? Quand je l'essaye, je ne peux pas gagner de façon inattendue. Cette fois, c'est facile à mettre en œuvre car vous créez simplement une variable appelée count et ajoutez 1 point pour chaque victoire ou perte. Jusqu'à ce que nous en ayons trois à l'avance, nous appelons la fonction et la boucle de la même manière qu'auparavant.

Au fait, c'est amusant de jouer avec le secrétaire Fujiwara, et peut-être qu'un jour passera simplement avec le secrétaire Fujiwara. Quelque chose comme ça ... ce n'est pas suffisant.

3. Augmentez le nombre de caractères

Je suis d'accord. La véritable identité de l'insatisfaisant est le manque de caractères. Eh bien, le secrétaire Fujiwara est aussi mignon, mais j'en ai assez de passer toute la journée avec le secrétaire Fujiwara (ou plutôt, j'en ai assez du secrétaire Fujiwara). Alors augmentons le nombre de caractères.

janken.py



import random

#Comptez le nombre de victoires
count = [0,0]   # [mypoint,yourpoint]

# define class and function
class Shuchiin:
    def __init__(self,name,words_list):
        self.name = name
        self.words_list = words_list
    
    def janken_head(self,words_list):
        self.words_list = words_list
        print(words_list[0])
        print(words_list[1])

    def janken(self,words_list):
        self.words_list = words_list
        global myhand
        global mynum
        global yournum
        yournum = random.randint(1,3)
        mynum = 0
        myhand = input(":")
        if myhand == "goo":
            mynum = 1
        elif myhand == "choki":
            mynum = 2
        elif myhand == "paa":
            mynum = 3
        else:
            print(words_list[2])
        
        if yournum == 1:
            yourhand = "goo"
            print(yourhand)
        elif yournum == 2:
            yourhand = "choki"
            print(yourhand)
        elif yournum == 3:
            yourhand = "paa"
            print(yourhand)
        
        global count
        i = 1
        while i ==1:
            result = (yournum - mynum) % 3
            if result == 0:
                print(words_list[3])
                self.janken(words_list)
            elif result == 1:
                if count[0] < 2:
                    print(words_list[4])
                    print(words_list[5])
                    count[0] += 1
                    print(str(count[0]) + "Gagner"+ str(count[1]) + "C'est une défaite")
                    self.janken(words_list)
                elif count[0] == 2:
                    print(words_list[6])
                    break
            elif result == 2:
                if count[1] < 2:
                    print(words_list[7])
                    print(words_list[8])
                    count[1] += 1
                    print(str(count[0]) + "Gagner"+ str(count[1]) + "C'est une défaite")
                    self.janken(words_list)
                elif count[1] == 2:
                    print(words_list[9])
                    break

# define each words_list
Kei_list = ["Est-ce Janken?","Au début, goo, janken, hoi","Si tu ne le prends pas au sérieux, j'arrêterai","Aiko, non?","Euh","La prochaine fois ...","Vous êtes fort. Mais la prochaine fois je ne perdrai pas","Ouf","Le faites-vous toujours?","C'est ma victoire. Vous devriez commencer par pratiquer la méthode de mise à mort d'aujourd'hui"]
Huziwara_list = ["C'est un Janken YO à trois volets!","Première aube! Janken whit! !!","Faites-le sérieusement!","Aiko!","J'ai perdu ~","Je ne perdrai pas la prochaine fois ~","J'ai été tué ~","J'ai gagné!","Le perdant écoute ce que dit le gagnant ~","Hourra! J'ai gagné ~"]
Shinomiya_list = ["Oh, tu veux jouer avec moi?  Comme c'est mignon. Est-il acceptable d'en obtenir trois à l'avance?","Au début, goo, janken, hoi","Pourriez-vous le prendre au sérieux","Aiko","Oh, j'ai perdu","Je ne perdrai pas la prochaine fois","Admettons que je perds","Oh, j'ai gagné","Tu devrais penser à ta volonté","Comme c'est mignon"]

# create each instance
Kei = Shuchiin("Kei",Kei_list)
Huziwara = Shuchiin("Huziwara",Huziwara_list)
Shinomiya = Shuchiin("Shinomiya",Shinomiya_list)

# execute function
player = input("Contre qui jouerez-vous?:")
if player == "kei":
    Kei.janken_head(Kei_list)
    Kei.janken(Kei_list)
elif player == "huziwara":
    Huziwara.janken_head(Huziwara_list)
    Huziwara.janken(Huziwara_list)
elif player == "shinomiya":
    Shinomiya.janken_head(Shinomiya_list)
    Shinomiya.janken(Shinomiya_list)
else:
    print("Rentrons à la maison aujourd'hui")

En plus du secrétaire Fujiwara, j'ai appelé Kei-chan et Kaguya-sama (il arrive qu'il n'y ait que des femmes). Maintenant, vous avez beaucoup de variété. Les changements sont que le dialogue a été changé pour chaque personnage, et le joueur adverse peut être sélectionné au début.

Hmm, maintenant vous pouvez jouer toute la journée.

en conclusion

Eh bien, j'ai pensé à implémenter un jeu simple, mais j'ai trouvé que la programmation peut exprimer des «procédures», y compris le branchement conditionnel et la répétition.

On peut dire que Janken est la procédure la plus simple qui comprend la ramification conditionnelle de la victoire et de la défaite et la répétition de batailles consécutives.

Et j'ai trouvé que même un Janken nécessite quatre règles, un branchement conditionnel, des fonctions et des classes.

Je pense que c'est le plus fort de continuer à faire de petites choses régulièrement. Je suis également un débutant en programmation, mais j'aimerais suivre le chemin de la programmation étape par étape.

Recommended Posts

Si vous êtes novice en programmation, pourquoi ne pas créer un "jeu" pour le moment? L'histoire
Faire un histogramme pour le moment (matplotlib)
J'ai créé une fonction pour vérifier si le webhook est reçu dans Lambda pour le moment
Enregistrer une tâche dans cron pour la première fois
Jusqu'à ce que vous exécutiez l'application Flask sur Google App Engine pour le moment
Parlez de l'API d'acquisition du temps dans le langage de programmation
Pourquoi l'instruction main () -if de Python est-elle attachée?
Je veux créer un Dockerfile pour le moment.
Paramètres d'exécution d'un test à chaque fois que vous enregistrez un fichier dans l'éditeur à l'aide de watchmedo (chien de garde)
Décorateur qui notifie sur AWS-SNS si la fonction ne se termine pas dans le délai spécifié
Le premier débutant en programmation à essayer une analyse de données simple avec programmation
Essayez d'utiliser FireBase Cloud Firestore avec Python pour le moment
Un débutant qui programme depuis 2 mois a tenté d'analyser le PIB réel du Japon en séries chronologiques avec le modèle SARIMA.
[Salut Py (Partie 1)] Je veux faire quelque chose pour le moment, alors commencez par fixer un objectif.
L'histoire lorsque différentes distributions sont spécifiées pour le même paramètre dans Optuna
Si vous voulez un singleton en python, considérez le module comme un singleton
Lors d'une erreur de programmation: (1146, "La table '<nom de la table>' n'existe pas") se produit dans Django
Une note utile lors de l'utilisation de Python après une longue période
Si vous obtenez une erreur sans attribut dans boto3, vérifiez la version
Jusqu'à ce que vous gagniez la médaille d'argent (top 3%) dans le concours auquel vous avez participé dans un délai d'un mois pour la première fois en science des données!
Je pensais que je pouvais créer un bon éditeur gitignore, alors j'ai essayé de faire quelque chose comme MVP pour le moment
Changer la liste dans l'instruction for
MongoDB avec Python pour la première fois
Quelle est la raison pour laquelle l'homme n'affiche pas les commandes de base en japonais?
Une solution si vous supprimez accidentellement l'interpréteur python dans / usr / local / bin /.
Un débutant en programmation a essayé de vérifier le temps d'exécution du tri, etc.
Essayez d'ajouter un module externe au poivre. Pour le moment, en demandes.
Transformez plusieurs listes avec l'instruction for en même temps en Python
C'est bon de participer pour la première fois! Un kit de démarrage hackason que vous souhaitez préparer "avant" de participer au hackason!
Prédiction des courses de chevaux: Si vous pensez que le taux de récupération a dépassé 100% en machine learning (LightGBM), c'est une histoire
Même si vous êtes un débutant en python et que vous avez moins d'un an de courses de chevaux, vous avez pu gagner un triple.