设计一个智能下棋python程序
时间: 2024-05-02 13:18:40 浏览: 30
python《五子棋(控制台版)》+源码+使用教程+程序配置+可执行程序,可作为毕业设计或者期末作业
5星 · 资源好评率100%
以下是一个简单的智能下棋Python程序,可以实现人机对战。
```
import random
# 初始化棋盘
board = [[' ' for i in range(3)] for j in range(3)]
# 输出棋盘
def print_board():
print(' 0 1 2')
for i in range(3):
print(i, end=' ')
for j in range(3):
print('|'+board[i][j], end='')
print('|')
# 判断是否有一方胜利
def check_win(player):
for i in range(3):
if board[i][0] == board[i][1] == board[i][2] == player:
return True
if board[0][i] == board[1][i] == board[2][i] == player:
return True
if board[0][0] == board[1][1] == board[2][2] == player:
return True
if board[0][2] == board[1][1] == board[2][0] == player:
return True
return False
# 人类玩家下棋
def human_player():
while True:
row = int(input('Please input row: '))
col = int(input('Please input column: '))
if board[row][col] == ' ':
board[row][col] = 'X'
break
else:
print('The position is already taken, please choose another one.')
# AI玩家下棋
def ai_player():
for i in range(3):
for j in range(3):
if board[i][j] == ' ':
board[i][j] = 'O'
if check_win('O'):
return
board[i][j] = ' '
for i in range(3):
for j in range(3):
if board[i][j] == ' ':
board[i][j] = 'X'
if check_win('X'):
board[i][j] = 'O'
return
board[i][j] = ' '
while True:
row = random.randint(0, 2)
col = random.randint(0, 2)
if board[row][col] == ' ':
board[row][col] = 'O'
return
# 游戏主循环
while True:
print_board()
human_player()
if check_win('X'):
print_board()
print('You win!')
break
ai_player()
if check_win('O'):
print_board()
print('Computer win!')
break
if all([' ' not in row for row in board]):
print_board()
print('Tie game!')
break
```
这个程序使用了一个简单的AI算法,通过枚举所有未下过的位置,并在每个位置尝试下'O'和'X'两种棋子,来预测下一步最优的位置。如果无法预测,就随机选择一个未下过的位置。这个算法并不是最优的,但足够用于这个简单的棋盘游戏。
阅读全文