欢迎来到代码驿站!

Python代码

当前位置:首页 > 软件编程 > Python代码

python实现井字棋游戏

时间:2021-05-28 07:59:23|栏目:Python代码|点击:

本文实例介绍了python实现井字棋游戏的方法,分享给大家,具体内容如下

windows7下python3.4.0编译运行通过。由于采用了cmd调用,所以与Linux不兼容,无法在Linux下运行。
游戏就是井字棋,小键盘上的数字位置对应棋盘位置。

#本游戏python3.4.0下编写调试,只能在windows下运行。
import random
import subprocess
import time
#定义函数
def draw_board(the_board):
 subprocess.call("cls", shell = True)
 print(' -------\n' + ' |' + the_board[9] + '|' + the_board[8] + '|' + the_board[7] + '|\n' + ' -------\n' + ' |' + the_board[6] + '|' + the_board[5] + '|' + the_board[4] + '|\n' + ' -------\n' + ' |' + the_board[3] + '|' + the_board[2] + '|' + the_board[1] + '|\n' + ' -------')
def input_player_letter():
 letter = ' '
 while not (letter == 'X' or letter == 'O'):
 print('请选择X或O作棋子:', end = '')
 letter = input().upper()
 if letter == 'X':
 return ['X', 'O']
 else:
 return ['O', 'X']
def who_first():
 if 1 == random.randint(1, 2):
 return 'computer'
 else:
 return 'player'
def is_again():
 print('再一次?(Yes or No)')
 return input().lower().startswith('y')
def is_space_free(the_board, move):
 return the_board[move] == ' '
def choose_random_from_list(the_board, move_from_list):
 possible_moves = []
 for i in move_from_list:
 if is_space_free(the_board, i):
 possible_moves.append(i)
 if len(possible_moves) != 0:
 return random.choice(possible_moves)
 else:
 return None
def make_move(the_board, the_letter, the_move):
 the_board[the_move] = the_letter
def get_board_copy(the_board):
 duplicated_board = []
 for i in board:
 duplicated_board.append(i)
 return duplicated_board
def is_board_full(the_board):
 for i in range(1, 9):
 if is_space_free(the_board, i):
 return False
 else:
 return True
def get_player_move(the_board):
 the_move = 0
 while the_move not in list(range(1, 9)) or not is_space_free(the_board, the_move):
 print('请输入走步:', end = '')
 the_move = int(input())
 return the_move
def is_winner(the_board, the_letter):
 return (the_board[1] == the_letter and the_board[2] == the_letter and the_board[3] == the_letter) or (the_board[4] == the_letter and the_board[5] == the_letter and the_board[6] == the_letter) or (the_board[7] == the_letter and the_board[8] == the_letter and the_board[9] == the_letter) or (the_board[1] == the_letter and the_board[5] == the_letter and the_board[9] == the_letter) or (the_board[2] == the_letter and the_board[5] == the_letter and the_board[8] == the_letter) or (the_board[3] == the_letter and the_board[5] == the_letter and the_board[7] == the_letter) or (the_board[1] == the_letter and the_board[4] == the_letter and the_board[7] == the_letter) or (the_board[2] == the_letter and the_board[5] == the_letter and the_board[8] == the_letter) or (the_board[3] == the_letter and the_board[6] == the_letter and the_board[9] == the_letter)
def get_computer_move(the_board, computer_letter):
 global player_letter
 global move
 if player_letter == 'X':
 computer_letter = 'O'
 else:
 player_letter = 'O'
 computer_letter = 'X'
 #虚拟棋盘查看是否自己可一步得胜
 for i in range(1,9):
 copy = get_board_copy(board)
 if is_space_free(board, i):
 make_move(copy, computer_letter, i)
 if is_winner(copy, computer_letter):
 return i
 #虚拟棋盘查看是否对手可一步得胜
 for i in range(1,9):
 if is_space_free(board, i):
 copy = get_board_copy(board)
 make_move(copy, player_letter, i)
 if is_winner(copy, player_letter):
 return i
 move = choose_random_from_list(board, [1, 3, 7, 9])
 if move != 0:
 return move
 if is_space_free(board, 5):
 return 5
 return choose_random_from_list(board, [2, 4, 6, 8, 7])
print('欢迎玩 井字棋 游戏!')
time.sleep(1)
print('''?}?|?|?|?}?|?|?|?|?|?|?|?y?|?|?|?}?}?|?|?z?y?}?|?|?|?|?|?|?|?|
?}?}?}?z?y?}?}?|?z?{?}?|?y?|?}?~?~?}?}?}?{?y?}?}?}?}?}?}?}?}?|
?}?|?}?| ?x?|?y?z?|?}?|?y?}?}?~?}?|?}?~?{?y?}?}?}?}?}?}?}?}?|
?}?|?}?}?|  ?z?}?|?}?|?y?}?~?}?|?|?}?~?|?y?}?}?}?}?}?}?}?}?|
?}?}?}?}?}?z ?x?|?}?}?{?y?~?~?}?|?|?}?~?|?x?}?}?}?}?}?}?}?}?|
?}?|?}?}?z?y?z?x?x?|?}?{?y?~?~?}?|?}?~?~?|?y?}?}?}?|?|?|?|?|?|
?}?|?}?z?x?|?}?z?x?x?|?|?y?}?~?}?}?~?}?}?{?y?}?|?|?|?|?|?}?}?|
?}?|?}?{?|?}?}?}?{?y?y?z?z?}?}?~?~?}?}?}?|?y?}?}?}?}?}?}?}?}?}
?}?|?{?{?{?{?{?{?{?{?z ?y?|?{?{?z?{?{?{?z?y?|?{?{?|?|?|?|?|?|
?}?|?y?y?y?y?z?z?z?z?z?y ?x?z?y?z?z?z?z?y ?y?z?y?z?z?z?z?z?|
?}?|?}?}?}?~?~?~?~?}?}?|?y?x?{?}?}?}?{?|?{?y?}?}?}?}?}?}?}?}?|
?}?|?}?|?}?~?}?}?}?}?}?{?{?{ ?z?}?y?y?|?{?y?}?|?|?}?|?|?}?}?|
?}?|?|?}?}?~?}?|?}?~?}?{?z?}?y ?y?z?|?}?{?y?}?|?|?|?|?|?|?}?|
?}?|?|?}?~?}?|?|?}?~?~?{?z?}?|?y ?z?}?|?{?y?}?|?|?|?|?|?}?}?|
?}?|?|?}?~?}?|?}?}?~?}?z?y?}?{?y?y?x?z?}?|?y?}?|?|?}?}?}?}?}?|
?}?|?}?}?~?}?}?~?~?}?}?{?y?{?x?{?|?y?x?y?|?y?}?|?}?}?}?}?}?}?|
?}?|?|?}?}?}?~?}?}?}?}?{?x?z?{?}?}?{?y?x?x?y?}?|?|?}?}?}?}?}?|
?}?|?y?y?y?y?z?y?y?y?y?y?x?z?z?z?z?y?x?x  ?y?y?y?y?y?y?z?{?|
?}?}?}?}?}?|?|?|?|?|?|?{?x?|?|?|?|?{?|?|?{ ?x?|?}?|?|?|?|?}?}
?}?}?}?}?}?}?}?}?}?}?}?|?y?}?}?}?}?}?}?}?{?y?z?y?}?}?}?}?|?|?}
?}?}?}?}?}?}?}?}?}?}?}?|?y?}?}?}?}?}?}?}?{?y?}?y?x?|?}?z?z?}?}
?}?}?}?}?}?}?}?}?}?}?}?{?y?}?}?}?}?}?}?}?{?y?}?|?x?x?z?y?|?}?}
?}?}?}?}?}?}?}?}?}?}?}?{?z?}?}?}?}?}?}?}?{?z?}?}?{?x ?|?~?}?|
?}?}?}?}?}?}?}?}?}?}?}?{?y?}?}?}?}?}?}?}?{?z?}?}?{?x?x?x?|?}?|
?}?}?}?}?}?}?}?}?}?}?}?{?y?}?}?}?}?}?}?}?{?z?}?{?y?{?z?x ?|?}
?}?}?}?}?}?}?}?}?}?}?}?|?z?}?}?}?}?}?}?}?|?z?|?x?{?}?}?z?x ?{
?}?}?}?}?}?}?}?}?}?}?}?|?{?}?}?}?}?}?}?}?{?z?}?|?}?}?}?}?{?z?y''')
time.sleep(2)
subprocess.call("cls", shell = True)
while True:
 board = [' '] * 10
 player_letter, computer_letter = input_player_letter()
 turn = who_first()
 print(turn + '先走')
 time.sleep(1)
 game_is_playing = True
 while game_is_playing:
 if turn == 'player':
 draw_board(board)
 move = get_player_move(board)
 make_move(board, player_letter, move)
 if is_winner(board, player_letter):
 draw_board(board)
 print('恭喜!你赢了。')
 game_is_playinig = False
 else:
 if is_board_full(board):
  draw_board(board)
  print('平局!')
  break
 else:
  turn = 'computer'
 else:
 move = get_computer_move(board, computer_letter)
 make_move(board, computer_letter, move)
 if is_winner(board, computer_letter):
 draw_board(board)
 print('电脑胜利,你挂了!')
 game_is_playing = False
 else:
 if is_board_full(board):
  draw_board(board)
  print('平局!')
  break
 else:
  turn = 'player'
 if not is_again():
 break

更多关于python游戏的精彩文章请点击查看以下专题:

python俄罗斯方块游戏集合

python经典小游戏汇总

python微信跳一跳游戏集合

上一篇:Pytorch生成随机数Tensor的方法汇总

栏    目:Python代码

下一篇:python实现域名系统(DNS)正向查询的方法

本文标题:python实现井字棋游戏

本文地址:http://www.codeinn.net/misctech/130231.html

推荐教程

广告投放 | 联系我们 | 版权申明

重要申明:本站所有的文章、图片、评论等,均由网友发表或上传并维护或收集自网络,属个人行为,与本站立场无关。

如果侵犯了您的权利,请与我们联系,我们将在24小时内进行处理、任何非本站因素导致的法律后果,本站均不负任何责任。

联系QQ:914707363 | 邮箱:codeinn#126.com(#换成@)

Copyright © 2020 代码驿站 版权所有