井字棋与AI下

import random
 
# 定义棋盘
board = [[' ' for _ in range(3)] for _ in range(3)]
 
 
# 打印棋盘
def print_board():
    print('-------------')
    for i in range(3):
        print('|', board[i][0], '|', board[i][1], '|', board[i][2], '|')
        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('请输入行号(1-3):'))
        col = int(input('请输入列号(1-3):'))
        if row < 1 or row > 3 or col < 1 or col > 3:
            print('输入有误,请重新输入!')
        elif board[row - 1][col - 1] != ' ':
            print('该位置已经有棋子了,请重新输入!')
        else:
            board[row - 1][col - 1] = 'X'
            break
 
 
# AI玩家落子
def ai_player():
    while True:
        row = random.randint(1, 3)
        col = random.randint(1, 3)
        if board[row - 1][col - 1] == ' ':
            board[row - 1][col - 1] = 'O'
            break
 
 
# 主函数
def main():
    print('欢迎来到人工智能PK棋盘游戏!')
    print_board()
    while True:
        human_player()
        print_board()
        if check_win('X'):
            print('恭喜你获胜了!')
            break
        if ' ' not in [cell for row in board for cell in row]:
            print('平局!')
            break
        ai_player()
        print_board()
        if check_win('O'):
            print('很遗憾,你输了!')
            break
 
 
# 运行主函数
if __name__ == '__main__':
    main()

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值