Python五子棋小游戏

这是一个简单的Python程序,用于模拟五子棋游戏。玩家轮流在15x15的棋盘上下棋,当有五个相同颜色的棋子连成一线时,对应颜色的玩家获胜。程序首先检查当前位置是否为空,然后更新棋盘状态,并通过不同方向检查是否有五个连续的棋子,以判断游戏结束。
摘要由CSDN通过智能技术生成

代码展示:

def set_chess(x,y,color):
    if board[x][y] != ' ':
        print('该位置已有棋子')
        return False
    else:
        board[x][y] = color
        for i in board:
            print(i)
        return True


def check_win(board):
    for list_str in board:
        if ''.join(list_str).find('O'*5) != -1:
            print('白棋获胜')
            return True
        elif ''.join(list_str).find('X'*5) != -1:
            print('黑棋获胜')
            return True
    else:
        return False


def check_win_all(board):
    board_c = [[] for line in range(29)]
    for x in range(15):
        for y in range(15):
            board_c[x+y].append(board[x][y])
    board_d =  [[] for line in range(29)]
    for x in range(15):
        for y in range(15):
            board_d[x-y].append(board[x][y])
    return check_win(board) or check_win([list(l) for l in zip(*board)]) or check_win(board_c) or check_win(board_d)

if __name__ == '__main__':
    board = [[' ']*15 for line in range(15)]
    for i in board:
        print(i)
    end = False
    for i in range(300):
        if i%2 == 0:
            print('白棋下棋')
            while True:
                x = int(input('请输入棋子横坐标0-14:'))
                y = int(input('请输入棋子纵坐标0-14:'))
                if set_chess(x,y,'O'):
                    if check_win_all(board):
                        end = True
                        break
                    else:
                        break
                else:
                    continue
            if end:
                break
        else:
            print('黑棋下棋')
            while True:
                x = int(input('请输入棋子横坐标0-14:'))
                y = int(input('请输入棋子纵坐标0-14:'))
                if set_chess(x,y,'X'):
                    if check_win_all(board):
                        end = True
                        break
                    else:
                        break
                else:
                    continue
            if end:
                break

成品展示:

 

如果重复,将会提示重新落子:

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值