python实现井字棋
一、代码展示
import random
import numpy
def draw():
print('\t'*15, back_ground[0][0], back_ground[0][1], back_ground[0][2])
print('\t'*15, back_ground[1][0], back_ground[1][1], back_ground[1][2])
print('\t'*15, back_ground[2][0], back_ground[2][1], back_ground[2][2])
# 绘制棋盘
def play_turn(i, j):
print('你的回合')
i = int(input('请输入行数\n'))
j = int(input('请输入列数\n'))
if i < 0 or i > 2 or j < 0 or j > 2:
print('越界啦!')
draw()
play_turn(i, j)
elif back_ground[i][j] == 'x':
print('请不要占用ai的棋位,谢谢')
draw()
play_turn(i, j)
elif back_ground[i][j] == 'o':
print('你已经在这里下过棋了')
draw()
play_turn(i, j)
else:
print('落子无悔')
back_ground[i][j] = 'o'
# 玩家下棋
def ai_turn():
print('ai回合')
i, j = random.randint(0, 2), random.randint(0, 2)
while back_ground[i][j] == 'x' or back_ground[i][j] == 'o':
i, j = random.randint(0, 2), random.randint(0, 2)
back_ground[i][j] = 'x'
draw()
# ai下棋
def win_conduct():
for i in range(3):
if (back_ground[i:i + 1, :] == 'o').all():
print('你赢了!')
return 0
elif (back_ground[i:i + 1, :] == 'x').all():
print('ai赢了!')
return 0
elif (back_ground[:, i:i + 1] == 'o').all():
print('你赢了!')
return 0
elif (back_ground[:, i:i + 1] == 'x').all():
print('ai赢了!')
return 0
if back_ground[0][0] == back_ground[1][1] == back_ground[2][2] == 'o':
print('你赢了!')
return 0
elif back_ground[0][0] == back_ground[1][1] == back_ground[2][2] == 'x':
print('ai赢了!')
return 0
elif back_ground[0][2] == back_ground[1][1] == back_ground[2][0] == 'o':
print('你赢了!')
return 0
elif back_ground[0][2] == back_ground[1][1] == back_ground[2][0] == 'x':
print('ai赢了!')
return 0
if '_' not in back_ground:
print('和棋!')
return 0
return 1
# 胜利判断
if __name__ == '__main__':
back_ground = numpy.empty((3, 3), dtype=str)
for i in range(3):
for j in range(3):
back_ground[i][j] = '_'
draw()
while win_conduct():
if win_conduct():
ai_turn()
if win_conduct():
play_turn(i, j)
二、效果展示
1.ai胜利
2.玩家胜利
3.和棋
具体效果请自行运行代码查看.