手动使用python写一个五子棋程序

本文详细介绍了一款简易五子棋游戏的实现过程,包括棋盘初始化、玩家交替下棋、坐标输入验证以及胜利条件判断等核心功能。通过具体代码展示了如何在控制台环境中创建并运行五子棋游戏。
finish = False
flagNum = 1
flagch = "*"  # 当前下棋者棋子
x = 0  # 横坐标
y = 0  # 纵坐标
print("简易五子棋")
# 棋盘初始化
checkerboard = []
for i in range(10):
    checkerboard.append([])
    for j in range(10):
        checkerboard[i].append('-')

def msg():
    # 输出胜利的棋盘
    print("------------")
    print("   1  2  3  4  5  6  7  8  9  10")
    for i in range(len(checkerboard)):
        print(chr(i + ord('A')) + " ", end=' ')  # 输出列标号
        for j in range(len(checkerboard[i])):
            print(checkerboard[i][j] + " ", end=' ')
        print()  # 换行
    print("-------------------------------")
    # 输出赢家
    if (flagNum == 1):
        print("*棋获胜")
    else:
        print("o棋获胜")
while not finish:
    print("\033[1;30;46m--------------------------------")
    print("   1  2  3  4  5  6  7  8  9  10")
    for i in range(len(checkerboard)):
        print(chr(i + ord('A')) + " ", end=' ')
        for j in range(len(checkerboard[i])):
            print(checkerboard[i][j] + " ", end=' ')
        print()
    print("--------------------------------\033[0m")

    # 判断当前下棋者
    if flagNum == 1:
        flagch = "*"
        print("请*输入棋子坐标")
    else:
        flagch = "o"
        print("请o输入棋子坐标")

    # 输入棋子坐标
    str = input()
    ch = str[0]
    x = ord(ch) - 65
    y = int(str[1]) - 1

    # 判断坐标有没有出界
    if (x < 0 or x > 9 or y < 0 or y > 9):
        print("输入坐标有误,请重新输入")
        continue

    # 判断坐标上是否有棋子
    if (checkerboard[x][y] == '-'):
        if (flagNum == 1):
            checkerboard[x][y] = '*'
        else:
            checkerboard[x][y] = 'o'
    else:
        print("您输入的已经有棋子了,请重新输入")
        continue

    # 判断棋子左侧
    if (y - 4 >= 0):
        if (checkerboard[x][y - 1] == flagch
                and checkerboard[x][y - 2] == flagch
                and checkerboard[x][y - 3] == flagch
                and checkerboard[x][y - 4] == flagch
        ):
            finish = True
            msg()

    # 判断棋子右侧
    if (y + 4 <= 9):
        if (checkerboard[x][y + 1] == flagch
                and checkerboard[x][y + 2] == flagch
                and checkerboard[x][y + 3] == flagch
                and checkerboard[x][y + 4] == flagch
        ):
            finish = True
            msg()

    # 判断棋子上方
    if (x - 4 >= 0):
        if (checkerboard[x - 1][y] == flagch
                and checkerboard[x - 2][y] == flagch
                and checkerboard[x - 3][y] == flagch
                and checkerboard[x - 4][y] == flagch
        ):
            finish = True
            msg()

    # 判断棋子下方
    if (x + 4 <= 9):
        if (checkerboard[x + 1][y] == flagch
                and checkerboard[x + 2][y] == flagch
                and checkerboard[x + 3][y] == flagch
                and checkerboard[x + 4][y] == flagch
        ):
            finish = True
            msg()

    # 判断棋子右上方
    if (x - 4 >= 0 and y - 4 >= 0):
        if (checkerboard[x - 1][y - 1] == flagch
                and checkerboard[x - 2][y - 2] == flagch
                and checkerboard[x - 3][y - 3] == flagch
                and checkerboard[x - 4][y - 4] == flagch
        ):
            finish = True
            msg()

    # 判断棋子右下方
    if (x + 4 <= 9 and y + 4 <= 9):
        if (checkerboard[x + 1][y - 1] == flagch
                and checkerboard[x + 2][y - 2] == flagch
                and checkerboard[x + 3][y - 3] == flagch
                and checkerboard[x + 4][y - 4] == flagch
        ):
            finish = True
            msg()

    # 判断棋子左上方
    if (x - 4 >= 0 and y + 4 <= 9):
        if (checkerboard[x - 1][y + 1] == flagch
                and checkerboard[x - 2][y + 2] == flagch
                and checkerboard[x - 3][y + 3] == flagch
                and checkerboard[x - 4][y + 4] == flagch
        ):
            finish = True
            msg()

    # 判断棋子左下方
    if (x + 4 <= 9 and y + 4 <= 9):
        if (checkerboard[x + 1][y + 1] == flagch
                and checkerboard[x + 2][y + 2] == flagch
                and checkerboard[x + 3][y + 3] == flagch
                and checkerboard[x + 4][y + 4] == flagch
        ):
            finish = True
            msg()


    flagNum *= -1 #更换下棋者身份

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值