用Python 写出个五子棋小游戏

看在源代码免费的份上,点个关注吧(づ ̄ 3 ̄)づ

关注是我更新的动力\( ̄︶ ̄*\))

作者会分享更多涉及到各种编程语言的项目!(^∀^●)ノシ

目录

一.游戏核心功能

二.代码实现解析 

1. 游戏初始化

 2. 棋盘显示函数

3. 主游戏循环

4. 输入验证与落子

 5. 八方向胜负判断


一.游戏核心功能

  • 10×10棋盘显示

  • 双人轮流对战(*棋和o棋)

  • 八方向胜负判定

  • 彩色控制台界面

  • 坐标合法性检查

二.代码实现解析 

1. 游戏初始化

finish = False  # 游戏结束标志
flagNum = 1    # 当前玩家标记(1:*棋,-1:o棋)
flagch = '*'    # 当前玩家棋子
x, y = 0, 0     # 当前棋子坐标

# 初始化10x10棋盘
checkerboard = []
for i in range(10):
    checkerboard.append([])
    for j in range(10):
        checkerboard[i].append('-')

 2. 棋盘显示函数

def msg():
    # 蓝色边框的棋盘显示
    print("\033[1;37;44m--------------------------------")
    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:
        print('\033[32m*棋胜利!***\033[0m')
    else:
        print('\033[32mo棋胜利!***\033[0m')

3. 主游戏循环

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('\033[1;37;40m请*输入棋子坐标(例如A1):\033[0m', end=' ')
    else:
        flagch = 'o'
        print('\033[1;30;42m请o输入棋子坐标(例如J5):\033[0m', end=' ')
    
    # 坐标输入处理
    str = input()
    ch = str[0].upper()
    x = ord(ch) - 65
    y = int(str[1]) - 1

4. 输入验证与落子

    # 坐标合法性检查
    if x < 0 or x > 9 or y < 0 or y > 9:
        print('\033[31m***您输入的坐标有误请重新输入!***\033[0m')  # 红色错误提示
        continue
    
    # 位置是否已被占用
    if checkerboard[x][y] == '-':
        checkerboard[x][y] = '*' if flagNum == 1 else 'o'
    else:
        print('\033[31m******您输入位置已经有其他棋子,请重新输入!\033[0m')
        continue

 5. 八方向胜负判断

    # 水平方向检查
    if y - 4 >= 0 and all(checkerboard[x][y-i] == flagch for i in range(1, 5)):
        finish = True
    elif y + 4 <= 9 and all(checkerboard[x][y+i] == flagch for i in range(1, 5)):
        finish = True
    
    # 垂直方向检查
    elif x - 4 >= 0 and all(checkerboard[x-i][y] == flagch for i in range(1, 5)):
        finish = True
    elif x + 4 <= 9 and all(checkerboard[x+i][y] == flagch for i in range(1, 5)):
        finish = True
    
    # 对角线方向检查
    elif (x-4 >= 0 and y-4 >= 0 and 
          all(checkerboard[x-i][y-i] == flagch for i in range(1, 5))):
        finish = True
    elif (x+4 <= 9 and y-4 >= 0 and 
          all(checkerboard[x+i][y-i] == flagch for i in range(1, 5))):
        finish = True
    elif (x-4 >= 0 and y+4 <= 9 and 
          all(checkerboard[x-i][y+i] == flagch for i in range(1, 5))):
        finish = True
    elif (x+4 <= 9 and y+4 <= 9 and 
          all(checkerboard[x+i][y+i] == flagch for i in range(1, 5))):
        finish = True
    
    if finish:
        msg()  # 显示最终棋盘和胜利信息
    
    flagNum *= -1  # 切换玩家
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值