finish = False
flagnum = -1
flagch = "*"
x = 0
y = 0
print("\033[1;37;41m---------简易五子棋游戏(控制台版)---------\033[0m")
#初始化棋盘
checkerboard = []#
for i in range(10):
checkerboard.append([])
for j in range(10):
checkerboard[i].append("-")
def msg():#调用函数输出胜利者界面
print("\033[1;37;41m---------------------------------------")
# print(" 1 2 3 4 5 6 7 8 9 10")
print(" ", end=" ")
for i in range(len(checkerboard)):
print(i + 1, end=" ")
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")
while finish == False:
#绘制棋盘内容
print("\033[1;30;46m---------------------------------------")
# print(" 1 2 3 4 5 6 7 8 9 10")
print(" ",end=" ")
for i in range(len(checkerboard)):
print(i+1,end=" ")
print()
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 (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 >= 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 >= 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 #更换棋手
if flagnum == 1:
flagch = "*"
print("\033[1;37;0m请*输入棋子坐标(例如A1):\033[0m", end=" ")
# flagnum *= -1
else:
flagch = "o"
print("\033[1;30;0m请o输入棋子坐标(例如A1):\033[0m", end=" ")
str = input()
#判断输入坐标是否合法
while len(str) !=2:
str = input("输入的不是棋子坐标,请重新输入:")
while not str[0].isupper() or not str[1].isdigit():
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("\033[32m***您输入的坐标有误请重新输入!***\033[0m")
continue
#判断棋子是否重复
if (checkerboard[x][y] == "-"):
if (flagnum == 1):
checkerboard[x][y] = "*"
else:
checkerboard[x][y] = "o"
else:
print("\033[32m***您输入的坐标有棋子,请重新输入!***\033[0m")
continue