看在源代码免费的份上,点个关注吧(づ ̄ 3 ̄)づ
关注是我更新的动力\( ̄︶ ̄*\))
作者会分享更多涉及到各种编程语言的项目!(^∀^●)ノシ
目录
一.游戏核心功能
-
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 # 切换玩家