J'ai fait Othello pour enseigner Python3 aux enfants (2)

La programmation doit être exprimée en mots

Si vous souhaitez créer un jeu Othello, vous avez d'abord besoin d'un plateau 8x8. Il y a 64 carrés en tout.

Afin de représenter la position des carrés, j'ai décidé d'utiliser les nombres 1 à 8 comme X dans le sens horizontal et les nombres 1 à 8 comme Y dans le sens vertical. En général, il semble que l'axe horizontal d'Othello soit souvent représenté par a à h, mais lors de l'étude de la programmation, les nombres sont plus faciles à comprendre, alors faites-le de sorte qu'il soit représenté par le même 1 à 8 à la fois horizontalement et verticalement. Il y a.

C'est le seul programme principal du jeu Othello que j'ai créé pour enseigner à mes enfants. Comme je l'ai écrit dans l'article précédent, les bases du programme ne sont que des instructions de contrôle, des instructions conditionnelles et des instructions répétitives. Cet Othello est également fait en utilisant pleinement ces trois. Expliquons le programme suivant.

Programme principal du jeu Othello

if __name__ == '__main__':

    #Créer une instance de la classe Othello
    myot = OthelloCls()
    #Affichage du tableau
    myot.ot_display()

    #Répéter pour toujours
    while True:
        #Déterminez si le jeu est terminé ou s'il y a un endroit pour mettre votre main
        sts = myot.ot_checkendofgame()
        if sts == 1:            #Jeu terminé
            break
        elif sts < 0:           #Je ne peux pas mettre ma main
            continue
        #Appeler une fonction qui affiche qui est le tour
        myot.ot_yourturn()
        #Entrez les coordonnées X et Y
        myx = myot.ot_inputXY("X = ")
        myy = myot.ot_inputXY("Y = ")

        #Placez votre main aux coordonnées spécifiées
        myot.ot_place(myx,myy)

Début du programme principal

ʻSi name == En déclarant '__ main __': `, les indentations suivantes à partir d'ici indiquent qu'il s'agit du programme principal. Comme le bloc du programme principal doit être mis en retrait, l'indentation se fait dans 4 espaces et le programme est écrit.

Description du programme principal

Lorsque vous exécutez le programme pour la première fois, vous verrez un écran comme celui-ci, attendant l'entrée du clavier.

スクリーンショット 2020-05-23 22.54.49.png

La première ligne du programme matérialise une instance de la classe Othello. Il ne fait aucun doute que la classe Othello est remplie de diverses fonctions requises pour Othello, mais soyez assuré que les détails seront décrits plus tard.

La planche d'Othello dans le tout premier état est affichée à l'écran. Lorsque vous appelez la fonction ʻot_display () `, elle affichera la carte dans l'état où elle a été appelée.

Le programme principal commence par se répéter indéfiniment à la partie «whilt True:».

Dans le jeu d'Othello, le blanc et le noir se relaient, mais cela arrive quand l'une ou l'autre des mains ne peut pas être placée ou les deux mains ne peuvent pas être placées.

La seule condition pour sortir de cette éternelle répétition est de décider que le jeu est terminé. Une fonction appelée ʻot_checkendofgame () ʻest chargée de vérifier le comportement suivant dans une itération permanente. La valeur renvoyée par cette fonction détermine l'action suivante.

Valeur de retour de la fonction sens Prochaine action
0 Continuez parce que vous pouvez mettre vos propres mains Aller à l'entrée des coordonnées X et Y où mettre à partir du clavier
1 Jeu terminé Échapper à la répétition éternelle
-1 Je ne peux pas mettre ma propre main, alors j'ai changé pour la main de l'autre partie Retour au début de la répétition éternelle

Comme mentionné ci-dessus, lorsque la valeur de retour de la fonction est 0, la fonction ʻot_yourturn () ʻindique qui est le tour, comme "● la main!" Ou "○ la main!".

Ensuite, entrez l'un de 1 à 8 avec X et l'un de 1 à 8 avec Y pour savoir quel carré placer à partir du clavier. La fonction ʻot_inputXY ("X =") ʻest une fonction qui effectue une saisie au clavier qui n'accepte pas de valeurs autres que 1 à 8, et implémente la saisie au clavier comme une fonction en spécifiant X = ou Y = comme paramètre. Il y a. Les parties de X = 6 et Y = 5 dans la figure ci-dessus sont exactement réalisées par cette fonction.

Enfin, demandez à la fonction ʻot_place (myx, myy) `de placer le cadre en passant le numéro de coordonnée X entré à partir du clavier et le numéro de coordonnée Y.

Un programme Othello peut être joué comme un jeu Othello en n'appelant que cinq fonctions. Les types de programmes sont divisés en système d'affichage d'écran, système d'entrée et système logique de programme. Afin d'évoluer vers un jeu graphique d'Othello dans le futur, la partie d'affichage d'écran et le système d'entrée et la partie logique sont intentionnellement séparés dans la classe.

Fonctions de création de jeux Othello Type de programme Que fais tu
ot_display() Écran d'affichage Afficher le plateau d'Othello
ot_checkendofgame() logique Vous dit quoi faire ensuite en répétition éternelle
ot_yourturn() Écran d'affichage Montre à qui est le tour
ot_inputXY() La saisie au clavier Entrez les coordonnées pour spécifier l'emplacement où placer le cadre
ot_place() logique Placer un cadre aux coordonnées saisies

Étudier Python dans le programme principal

Il existe deux types de phrases répétitives

Comme je l'ai mentionné brièvement dans l'article précédent, il existe deux types de phrases répétitives. L'une est une phrase répétée qui tourne pour toujours. L'autre est une phrase répétée dans laquelle le nombre de tours est connu. Dans la figure ci-dessous, dans le type qui se répète indéfiniment, lorsqu'un événement qui sort de la répétition se produit, il échappe à la répétition. L'autre est un schéma répétitif dans lequel si vous décidez de faire 10 muscles abdominaux depuis le début, faites-le 10 fois et vous avez terminé. En Python, les itérations permanentes sont écrites comme «while True:». Le bloc d'indentation sous ce while True: sera répété pour toujours à moins qu'un événement ne se produise. Dans l'éternelle répétition, écrivez «continue» pour revenir au début, et écrivez «pause» pour échapper à l'éternelle répétition. Dans la figure ci-dessous, si «Snack?» Est Oui, écrivez «break», sinon écrivez «continue». Dans le programme principal, si vous voulez revenir au début de la répétition au milieu du bloc qui se répète indéfiniment, vous écrivez continue, mais après avoir appelé ʻot_place (), vous ne vous souciez pas d'écrire continue`. Puisqu'il s'agit de la dernière ligne du bloc répétitif, il revient automatiquement au début de la répétition lors du retour de la fonction.

スクリーンショット 2020-05-23 23.37.13.png

Quand j'écris ces deux en Python, ça ressemble à ça. J'écrirai plus sur comment utiliser pour la prochaine fois.

while True:
étude()
si collation=="Yes":
        break
for index in range(10):
Muscle abdominal()

Jugement des conditions

Utilisez ʻif condition: pour déterminer la condition. La logique qui correspond à la condition est décrite dans le bloc avec le retrait abaissé, et la logique qui ne remplit pas la condition est décrite en abaissant le retrait de sous ʻelse: ʻou ʻelif: . Jetons un coup d'œil au programme principal plus tôt. La valeur de retour de la fonction ot_checkendofgame () est stockée dans une variable appelée sts. L'instruction if suivante détermine si sts vaut 1, et si tel est le cas, utilise brek pour sortir de la boucle permanente. Si elif ne remplit pas la première condition, l'instruction de condition suivante détermine si sts est inférieur à 0, et si la condition est remplie, continue reviendra au début de l'itération permanente.

        sts = myot.ot_checkendofgame()
        if sts == 1:            #Jeu terminé
            break
        elif sts < 0:           #Je ne peux pas mettre ma main
            continue
Symbole utilisé pour le jugement de condition Comment utiliser La description
signe égal== if sts == 1: sts vaut 1
Inégalité!= if sts != 1: sts n'est pas égal à 1
Plus grand> if sts > 1: sts est supérieur à 1 (2 ou plus)
Petit< if sts < 1: sts est inférieur à 1 (inférieur ou égal à 0)
Plus grand nombre égal>= if sts >= 1: sts vaut 1 ou plus
Petit problème<= if sts <= 1: sts vaut 1 ou moins

Donc, la prochaine fois, je voudrais expliquer brièvement l'exécution réelle du programme et les variables utilisées en Python.

<< J'ai créé un Othello pour enseigner Python3 aux enfants (1) J'ai créé Othello pour enseigner Python3 aux enfants (3) >>

Recommended Posts

J'ai fait Othello pour enseigner Python3 aux enfants (4)
J'ai fait Othello pour enseigner Python3 aux enfants (2)
J'ai fait Othello pour enseigner Python3 aux enfants (5)
J'ai fait Othello pour enseigner Python3 aux enfants (3)
J'ai fait Othello pour enseigner Python3 aux enfants (1)
J'ai essayé de faire d'Othello pour enseigner Python3 aux enfants (6) Final
J'ai fait un générateur de mot de passe pour enseigner Python3 aux enfants (bonus) * Complètement refait
J'ai fait un blackjack avec du python!
J'ai créé un module Python pour traduire les commentaires
J'ai fait un texte Python
J'ai créé une bibliothèque python qui fait rouler le rang
J'ai fait un blackjack avec Python.
Othello fait avec python (comme GUI)
J'ai créé wordcloud avec Python.
J'ai créé un package pour filtrer les séries chronologiques avec python
J'ai fait une animation qui renvoie la pierre d'Othello avec POV-Ray
J'ai fait un Line-bot avec Python!
J'ai essayé de toucher Python (installation)
J'ai créé ma propre bibliothèque Python
J'ai fait une loterie avec Python.
Développement de jeux Othello avec Python
Je veux déboguer avec Python
J'ai créé un démon avec Python
J'ai créé une bibliothèque qui lit facilement les fichiers de configuration avec Python
J'ai essayé d'enseigner Python à des programmeurs inexpérimentés
J'ai essayé de résumer la gestion des exceptions Python
J'ai essayé d'implémenter PLSA en Python
J'ai fait un programme de gestion de la paie en Python!
J'ai fait un compteur de caractères avec Python
J'ai installé Python 3.5.1 pour étudier l'apprentissage automatique
J'ai essayé d'implémenter PLSA dans Python 2
Entrée standard Python3 que j'ai essayé de résumer
Je veux utiliser jar de python
Je voulais résoudre ABC160 avec Python
Je veux créer un environnement Python
Je veux analyser les journaux avec Python
Je veux jouer avec aws avec python
J'ai essayé d'implémenter ADALINE en Python
Je voulais résoudre ABC159 avec Python
J'ai essayé d'implémenter PPO en Python
J'ai fait un script pour afficher des pictogrammes
J'ai fait une carte hexadécimale avec Python
[Python] J'ai essayé de calculer TF-IDF régulièrement
J'ai essayé de toucher Python (syntaxe de base)
Après avoir étudié Python3, j'ai créé un Slackbot
J'ai fait un jeu rogue-like avec Python
Ce que j'étais accro à Python autorun
Je voulais résoudre ABC172 avec Python
J'ai fait un simple blackjack avec Python
J'ai créé un fichier de configuration avec Python
J'ai fait un simulateur de neurones avec Python
Ce que j'ai fait pour économiser la mémoire Python
Application Othello (application iOS) réalisée avec Python (Kivy)
J'ai créé un conteneur Docker pour utiliser JUMAN ++, KNP, python (pour pyKNP).
[Python] J'ai fait un décorateur qui ne semble pas avoir d'utilité.
J'ai créé un outil pour parcourir automatiquement plusieurs sites avec Selenium (Python)
J'ai créé une application Web en Python qui convertit Markdown en HTML
Maintenance de l'environnement réalisée avec Docker (je souhaite post-traiter GrADS en Python