鱼C论坛

 找回密码
 立即注册
查看: 2311|回复: 0

[作品展示] 简易五子棋(最好用PyCharm运行{:10_256:} ),事先声明我是从书上参考的{:10_256:}

[复制链接]
发表于 2021-2-25 20:00:38 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
  1. finish = False      # 游戏是否结束
  2. flagNum = 1         # 当前下棋者标记
  3. flagch = '*'        # 当前下棋者棋子
  4. x = 0               # 当前棋子的横坐标
  5. y = 0               # 当前棋子的纵坐标
  6. print('\033[1;37;41m---------简易五子棋游戏(控制台版)---------\033[0m')
  7. # 棋盘初始化
  8. checkerboard=[]
  9. for i in range(10):
  10.     checkerboard.append([])
  11.     for j in range(10):
  12.         checkerboard[i].append('-')
  13. def msg():
  14.     # 输出最后胜利的棋盘
  15.     print("\033[1;37;44m--------------------------------")
  16.     print("   1  2  3  4  5  6  7  8  9  10")
  17.     for i in range(len(checkerboard)):
  18.         print(chr(i + ord('A')) + " ", end=' ')
  19.         for j in range(len(checkerboard[i])):
  20.             print(checkerboard[i][j] + " ", end=' ')
  21.         print()
  22.     print("--------------------------------\033[0m")
  23.     # 输出赢家
  24.     if (flagNum == 1):
  25.         print('\033[32m*棋胜利!***\033[0m')
  26.     else:
  27.         print('\033[32mo棋胜利!***\033[0m')

  28. while not finish:
  29.     # 打印棋盘
  30.     print("\033[1;30;46m--------------------------------")
  31.     print("   1  2  3  4  5  6  7  8  9  10")
  32.     for i in range(len(checkerboard)):
  33.         print(chr(i + ord('A')) + " ", end=' ');
  34.         for j in range(len(checkerboard[i])):
  35.             print(checkerboard[i][j] + " ", end=' ')
  36.         print()
  37.     print("--------------------------------\033[0m")
  38.     # 判断当前下棋者
  39.     if flagNum == 1:
  40.         flagch = '*'
  41.         print('\033[1;37;40m请*输入棋子坐标(例如A1):\033[0m', end=' ') # 白字黑底
  42.     else:
  43.         flagch = 'o'
  44.         print('\033[1;30;42m请o输入棋子坐标(例如J5):\033[0m', end=' ') # 黑字绿底
  45.     # 输入棋子坐标
  46.     str = input()
  47.     ch = str[0] # 获取第一个字符的大写形式
  48.     x = ord(ch) - 65
  49.     y = int(str[1]) - 1
  50.     # 判断坐标是否在棋盘之内
  51.     if (x < 0 or x > 9 or y < 0 or y > 9):
  52.         print('\033[31m***您输入的坐标有误请重新输入!***\033[0m')
  53.         continue
  54.     # 判断坐标上是否有棋子
  55.     if (checkerboard[x][y] == '-'):
  56.         if (flagNum == 1):
  57.             checkerboard[x][y] = '*'
  58.         else:
  59.             checkerboard[x][y] = 'o'
  60.     else:
  61.         print('\033[31m******您输入位置已经有其他棋子,请重新输入!\033[0m')
  62.         continue
  63.     # 判断棋子左侧
  64.     if (y - 4 >= 0):
  65.         if (checkerboard[x][y - 1] == flagch
  66.                 and checkerboard[x][y - 2] == flagch
  67.                 and checkerboard[x][y - 3] == flagch
  68.                 and checkerboard[x][y - 4] == flagch):
  69.             finish = True
  70.             msg()

  71.     # 判断棋子右侧
  72.     if (y + 4 <= 9):
  73.         if (checkerboard[x][y + 1] == flagch
  74.                 and checkerboard[x][y + 2] == flagch
  75.                 and checkerboard[x][y + 3] == flagch
  76.                 and checkerboard[x][y + 4] == flagch):
  77.             finish = True
  78.             msg()

  79.     # 判断棋子上方
  80.     if (x - 4 >= 0):
  81.         if (checkerboard[x - 1][y] == flagch
  82.                 and checkerboard[x - 2][y] == flagch
  83.                 and checkerboard[x - 3][y] == flagch
  84.                 and checkerboard[x - 4][y] == flagch):
  85.             finish = True
  86.             msg()

  87.     # 判断棋子下方
  88.     if (x + 4 <= 9):
  89.         if (checkerboard[x + 1][y] == flagch
  90.                 and checkerboard[x + 2][y] == flagch
  91.                 and checkerboard[x + 3][y] == flagch
  92.                 and checkerboard[x + 4][y] == flagch):
  93.             finish = True
  94.             msg()

  95.     # 判断棋子右上方向
  96.     if (x - 4 >= 0 and y - 4 >= 0):
  97.         if (checkerboard[x - 1][y - 1] == flagch
  98.                 and checkerboard[x - 2][y - 2] == flagch
  99.                 and checkerboard[x - 3][y - 3] == flagch
  100.                 and checkerboard[x - 4][y - 4] == flagch):
  101.             finish = True
  102.             msg()

  103.     # 判断棋子右下方向
  104.     if (x + 4 <= 9 and y - 4 >= 0):
  105.         if (checkerboard[x + 1][y - 1] == flagch
  106.                 and checkerboard[x + 2][y - 2] == flagch
  107.                 and checkerboard[x + 3][y - 3] == flagch
  108.                 and checkerboard[x + 4][y - 4] == flagch):
  109.             finish = True
  110.             msg()

  111.     # 判断棋子左上方向
  112.     if (x - 4 >= 0 and y + 4 <= 9):
  113.         if (checkerboard[x - 1][y + 1] == flagch
  114.                 and checkerboard[x - 2][y + 2] == flagch
  115.                 and checkerboard[x - 3][y + 3] == flagch
  116.                 and checkerboard[x - 4][y + 4] == flagch):
  117.             finish = True
  118.             msg()

  119.     # 判断棋子左下方向
  120.     if (x + 4 <= 9 and y + 4 <= 9):
  121.         if (checkerboard[x + 1][y + 1] == flagch
  122.                 and checkerboard[x + 2][y + 2] == flagch
  123.                 and checkerboard[x + 3][y + 3] == flagch
  124.                 and checkerboard[x + 4][y + 4] == flagch):
  125.             finish = True
  126.             msg()
  127.     flagNum *= -1;      # 更换下棋者标记
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-6-27 10:26

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表