Maison >développement back-end >Tutoriel Python >Créer un simple jeu de tic-tac-toe en Python
Dans ce tutoriel, je vais vous montrer comment créer un jeu de tic-tac-toe en utilisant Python. Cela inclura des fonctions, des listes, des instructions if, des boucles while, des boucles for, la gestion des erreurs, etc.
Tout d'abord, nous allons créer deux fonctions. La première fonction imprimera le modèle d'arrière-plan du jeu de tic-tac-toe :
def print_board(): for i in range(0,3): for j in range(0,3): print map[2-i][j], if j != 2: print "|", print ""
.
Ici, nous utilisons deux boucles for pour parcourir une variable de liste nommée map
. Cette variable est une liste bidimensionnelle qui contiendra des informations pour chaque emplacement.
Puisque je vais comparer les positions en fonction des chiffres sur le clavier (comme vous le verrez plus tard), nous définissons la première valeur sur (2-i)
, puis nous voulons utiliser "|"
pour diviser nos positions, donc après chaque position est imprimé, nous imprimons un "|"
pour cela. Nous utilisons ici des virgules print map[2-i][j],
pour nous assurer qu'ils sont imprimés sur la même ligne.
Désormais, cette fonction peut imprimer l'arrière-plan d'un jeu. Cela ressemble à ceci :
| | | | | |
X | X | O | X | O | O | X
X | X | X X | X | X X | X | X
.
Ensuite, nous créons une fonction check_done()
qui vérifiera si le jeu est terminé après chaque tour. Si le jeu est terminé, renvoyez True et imprimez un message.
def check_done(): for i in range(0,3): if map[i][0] == map[i][1] == map[i][2] != " " \ or map[0][i] == map[1][i] == map[2][i] != " ": print turn, "won!!!" return True if map[0][0] == map[1][1] == map[2][2] != " " \ or map[0][2] == map[1][1] == map[2][0] != " ": print turn, "won!!!" return True if " " not in map[0] and " " not in map[1] and " " not in map[2]: print "Draw" return True return False
Premièrement, nous vérifierons s'il y a trois lignes dans les directions horizontale et verticale qui sont identiques et non vides (il ne considérera donc pas trois lignes vides consécutives comme éligibles). Deuxièmement, nous vérifions les lignes diagonales de la même manière.
Si l'une de ces 8 lignes remplit les conditions, le jeu se terminera et "Gagné !!!" sera imprimé et True
sera renvoyé en même temps, faites attention à la variable turn
. déterminez quel camp joue aux échecs maintenant, et enfin affichez le message qui apparaîtra "X gagné !!" ou "O gagné !!".
Ensuite, cette fonction jugera que si aucune position n'est vide, cela signifie que personne ne peut gagner la partie (jugée plus tôt), elle imprimera alors une égalité et reviendra True
.
S'il n'y a aucune des deux situations ci-dessus, alors le jeu n'est pas encore terminé et revenez à False
.
OK, maintenant nous avons deux fonctions, commençons notre vrai programme, créons d'abord trois variables :
turn = "X" map = [[" "," "," "], [" "," "," "], [" "," "," "]] done = False
Je vous ai déjà expliqué ce que signifient ces trois variables. Si vous oubliez, jetez un œil ci-dessous :
tour : Qui devrait partir
map : La carte de fond du jeu
terminé : Ce jeu est-il terminé ?
Ensuite, écrivez comme ceci :
while done != True: print_board() print turn, "'s turn" print moved = False while moved != True:
Il y a une boucle while à l'intérieur, jusqu'à ce que done soit True, nous imprimons à qui c'est le tour d'aller.
Créez ensuite une variable nommée moved
pour vérifier si le joueur a bougé. Sinon, entrez dans la boucle suivante.
Ensuite, nous imprimons comment le joueur doit procéder :
print "Please select position by typing in a number between 1 and 9, see below for which number that is which position..." print "7|8|9" print "4|5|6" print "1|2|3" print
Suivant :
try: pos = input("Select: ") if pos <=9 and pos >=1:
Nous voulons que le joueur entre un nombre, puis nous vérifions s'il est compris entre 1 et 9. En même temps, nous devons ajouter une gestion des erreurs. Par exemple, si le joueur entre "Bonjour", le programme ne peut pas simplement quitter. .
Maintenant, il faut vérifier s'il peut franchir cette étape :
Y = pos/3 X = pos%3 if X != 0: X -=1 else: X = 2 Y -=1
Haha, gardez les yeux ouverts. Tout d'abord, nous obtenons une valeur de X et Y, puis nous les utilisons pour vérifier si la position qu'il souhaite placer est vide. Ensuite, je vais vous expliquer comment fonctionnent X et Y :
Vous pouvez faire le calcul ci-dessous, et je vais directement à la conclusion (Merde, le modèle par défaut d'Hexo n'affiche pas de tableaux. Quand je l'ai édité sur mou, il était bien plus joli que celui ci-dessous !) :
aha,这个位置和我们键入的是一样的!
print "7|8|9" print "4|5|6" print "1|2|3"
现在我们完成大部分工作了,但是还有几行代码:
map[Y][X] = turn moved = True done = check_done() if done == False: if turn == "X": turn = "O" else: turn = "X" except: print "You need to add a numeric value"
嗯,我们给moved变量复制为True,并检查是否结束了,木有结束的话变换角色换下一个人走。
OK,差不多结束了,假如你只是想Ctrl+C 和 Ctrl+V的话,下面是全部的代码,希望你学到了点什么,( ^_^ )/~~拜拜。
def print_board(): for i in range(0,3): for j in range(0,3): print map[2-i][j], if j != 2: print "|", print "" def check_done(): for i in range(0,3): if map[i][0] == map[i][1] == map[i][2] != " " \ or map[0][i] == map[1][i] == map[2][i] != " ": print turn, "won!!!" return True if map[0][0] == map[1][1] == map[2][2] != " " \ or map[0][2] == map[1][1] == map[2][0] != " ": print turn, "won!!!" return True if " " not in map[0] and " " not in map[1] and " " not in map[2]: print "Draw" return True return False turn = "X" map = [[" "," "," "], [" "," "," "], [" "," "," "]] done = False while done != True: print_board() print turn, "'s turn" print moved = False while moved != True: print "Please select position by typing in a number between 1 and 9, see below for which number that is which position..." print "7|8|9" print "4|5|6" print "1|2|3" print try: pos = input("Select: ") if pos <=9 and pos >=1: Y = pos/3 X = pos%3 if X != 0: X -=1 else: X = 2 Y -=1 if map[Y][X] == " ": map[Y][X] = turn moved = True done = check_done() if done == False: if turn == "X": turn = "O" else: turn = "X" except: print "You need to add a numeric value"
原文出处: Vswe
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!