print('欢迎来玩井字棋游戏')
print('需要两个人来玩哦')
jihui = 0
one = input('请输入玩家⭕的昵称:')
two = input('请输入玩家❌的昵称:')
qi = '┌┄┈┬┄┈┬┄┈┐\n┆{a} ▏{b}┃{c} ▏\n├┈┈┼┈┈┼┈┈┤\n┊{d} ▏{e}┃{f}┃\n├┈┈┼┈┈┼┈┈┤\n┆{g} ▏{h}┃{i} ▏\n└┈┈┴┈┈┴┈┈┘'
print('玩家⭕:' + one + ' ' + '玩家❌:' + two + '\n' + qi)
while True:
o = input('请玩家⭕下棋:')
if o == 'a':
qi.format(a = '⭕',b = None,c = None,d = None,e = None,f = None,g = None,h = None,i = None)
print(qi)
结果。
/data/user/0/com.hipipal.qpyplus/files/bin/qpython3-android5.sh "/storage/emulated/0/qpython/对话框.py" && exit
/emulated/0/qpython/对话框.py" && exit <
欢迎来玩井字棋游戏
需要两个人来玩哦
请输入玩家⭕的昵称:理解
请输入玩家❌的昵称:一下
玩家⭕:理解 玩家❌:一下
┌┄┈┬┄┈┬┄┈┐
┆{a} ▏{b}┃{c} ▏
├┈┈┼┈┈┼┈┈┤
┊{d} ▏{e}┃{f}┃
├┈┈┼┈┈┼┈┈┤
┆{g} ▏{h}┃{i} ▏
└┈┈┴┈┈┴┈┈┘
请玩家⭕下棋:a
┌┄┈┬┄┈┬┄┈┐
┆{a(就是这个a)} ▏{b}┃{c} ▏
├┈┈┼┈┈┼┈┈┤
┊{d} ▏{e}┃{f}┃
├┈┈┼┈┈┼┈┈┤
┆{g} ▏{h}┃{i} ▏
└┈┈┴┈┈┴┈┈┘
请玩家⭕下棋:
你都没赋值给qi,qi = qi.format(a = '⭕',b = "{b}",c = "{c}"...),但这样子治标不治本,下次循环会有更大问题,如果是我我会用个list保存简单又方便
自己写的,一般,给楼主参考一下。
# 三子棋
import pyautogui
# 定义初始化的棋盘,二维数组知识
i = ["[1]", "[2]", "[3]"], \
["[4]", "[5]", "[6]"], \
["[7]", "[8]", "[9]"]
# 创建一个棋盘信息输出函数,函数知识
def look():
for a in range(0, 3):
for b in range(0, 3):
print(f"{i[a][b]}", end="")
print("")
# 定义一个识别棋盘三连后自动获胜,IF语句知识和拓展
def win():
runs = 1 # 默认情况下runs的值为1,用于标识游戏运行状态,值=1游戏正常运行, 值=0游戏结束
# (1)三横判断
if (i[0][0] == i[0][1]) and (i[0][1] == i[0][2]):
runs = 0 # 游戏结束
print(f"第一行,\033[31m<{user_name()[:3]}>\033[0m胜利!")
elif (i[1][0] == i[1][1]) and (i[1][1] == i[1][2]):
runs = 0 # 游戏结束
print(f"第二行,\033[31m<{user_name()[:3]}>\033[0m胜利!")
elif (i[2][0] == i[2][1]) and (i[2][1] == i[2][2]):
runs = 0 # 游戏结束
print(f"第三行,\033[31m<{user_name()[:3]}>\033[0m胜利!")
# (2)三竖判断
if (i[0][0] == i[1][0]) and (i[1][0] == i[2][0]):
runs = 0 # 游戏结束
print(f"第一竖,\033[31m<{user_name()[:3]}>\033[0m胜利!")
elif (i[0][1] == i[1][1]) and (i[1][1] == i[2][1]):
runs = 0 # 游戏结束
print(f"第二竖,\033[31m<{user_name()[:3]}>\033[0m胜利!")
elif (i[0][2] == i[1][2]) and (i[1][2] == i[2][2]):
runs = 0 # 游戏结束
print(f"第三竖,\033[31m<{user_name()[:3]}>\033[0m胜利!")
# (3)正斜判断
if (i[0][0] == i[1][1]) and (i[1][1] == i[2][2]):
print(f"反斜,\033[31m<{user_name()[:3]}>\033[0m胜利!")
# (4)反斜判断
if (i[0][2] == i[1][1]) and (i[1][1] == i[2][0]):
print(f"正斜,\033[31m<{user_name()[:3]}>\033[0m胜利!")
return runs # 返回运行状态,默认为1,如果符合胜利判断,那么将返回值为0
# 判断并返回用户名称
def user_name():
user_names = ""
if user_id % 2 == 1:
user_names = "用户1[O]"
return user_names # 返回用户名称
else:
user_names = "用户2[X]"
return user_names # 返回用户名称
# 初始输出棋盘
look()
# 为了方便识别下棋的角色,通过数字的奇数偶数进行识别
# 奇数用户用棋子[O]来表示,偶数用户用棋子[X]来表示
user_id = 1
# 下棋游戏开始(循环下棋),While语句知识
while True:
# 识别用户键盘输入,Input基础知识
choose = input(f"\033[31m<{user_name()}>\033[0m:请输入棋子位置\033[32m[1~9]\033[0m:")
if (int(choose) > 0) and (int(choose) <= 3):
if user_id % 2 == 1:
i[0][(int(choose) - 1)] = "\033[30;40m[O]\033[0m"
else:
i[0][(int(choose) - 1)] = "\033[37;47m[X]\033[0m"
look()
elif (int(choose) > 3) and (int(choose) <= 6):
if user_id % 2 == 1:
i[1][(int(choose) - 4)] = "\033[30;40m[O]\033[0m"
else:
i[1][(int(choose) - 4)] = "\033[37;47m[X]\033[0m"
look()
elif (int(choose) > 6) and (int(choose) <= 9):
if user_id % 2 == 1:
i[2][(int(choose) - 7)] = "\033[30;40m[O]\033[0m"
else:
i[2][(int(choose) - 7)] = "\033[37;47m[X]\033[0m"
look()
elif choose == "q":
print("程序已经退出!")
break
else:
print("请输入正确的序号!")
if win() == 0:
break # 当win返回值为0,游戏将会结束
# 自动调整用户身份
user_id += 1