python例程:五子棋(控制台版)程序

news/2025/2/11 21:44:49/

目录

  • 《五子棋(控制台版)》程序使用说明
  • 程序示例代码
  • 可执行程序及源码下载路径


《五子棋(控制台版)》程序使用说明

在PyCharm中运行《五子棋(控制台版)》即可进入如图1所示的系统主界面。

图1 游戏主界面
在这里插入图片描述

具体的操作步骤如下:
五子棋(控制台版)游戏的功能都体现在控制台界面中,它的操作非常简单,只要按照提示输入坐标(坐标形式为A1、B3、J7等形式),并按回车键()即可,如果输入正确,则在棋盘上显示下的棋子,如图2所示,如果输入错误,则显示提示信息,并要求重新输入,如图3所示。

图2 输入的棋子坐标正确
在这里插入图片描述

图3 输入的棋子坐标错误
在这里插入图片描述

而如果输入的坐标位置已经有棋子了,则提示已经有棋子,并要求重新输入,如图4所示。

图4 在已有棋子位置下棋时的信息提示
在这里插入图片描述

按照以上步骤反复操作,当有一方胜利时,则打印最终的棋盘,并输出赢家,如图5所示。

图5 打印胜利棋盘及赢家
在这里插入图片描述

程序示例代码

# -*- coding: utf-8 -*-
# 文件名称   :gobang.PY
# 开发工具   :PyCharmfinish = 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;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')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] # 获取第一个字符的大写形式x = ord(ch) - 65y = int(str[1]) - 1# 判断坐标是否在棋盘之内if (x < 0 or x > 9 or y < 0 or y > 9):print('\033[31m***您输入的坐标有误请重新输入!***\033[0m')continue# 判断坐标上是否有棋子if (checkerboard[x][y] == '-'):if (flagNum == 1):checkerboard[x][y] = '*'else:checkerboard[x][y] = 'o'else:print('\033[31m******您输入位置已经有其他棋子,请重新输入!\033[0m')continue# 判断棋子左侧if (y - 4 >= 0):if (checkerboard[x][y - 1] == flagchand checkerboard[x][y - 2] == flagchand checkerboard[x][y - 3] == flagchand checkerboard[x][y - 4] == flagch):finish = Truemsg()# 判断棋子右侧if (y + 4 <= 9):if (checkerboard[x][y + 1] == flagchand checkerboard[x][y + 2] == flagchand checkerboard[x][y + 3] == flagchand checkerboard[x][y + 4] == flagch):finish = Truemsg()# 判断棋子上方if (x - 4 >= 0):if (checkerboard[x - 1][y] == flagchand checkerboard[x - 2][y] == flagchand checkerboard[x - 3][y] == flagchand checkerboard[x - 4][y] == flagch):finish = Truemsg()# 判断棋子下方if (x + 4 <= 9):if (checkerboard[x + 1][y] == flagchand checkerboard[x + 2][y] == flagchand checkerboard[x + 3][y] == flagchand checkerboard[x + 4][y] == flagch):finish = Truemsg()# 判断棋子右上方向if (x - 4 >= 0 and y - 4 >= 0):if (checkerboard[x - 1][y - 1] == flagchand checkerboard[x - 2][y - 2] == flagchand checkerboard[x - 3][y - 3] == flagchand checkerboard[x - 4][y - 4] == flagch):finish = Truemsg()# 判断棋子右下方向if (x + 4 <= 9 and y - 4 >= 0):if (checkerboard[x + 1][y - 1] == flagchand checkerboard[x + 2][y - 2] == flagchand checkerboard[x + 3][y - 3] == flagchand checkerboard[x + 4][y - 4] == flagch):finish = Truemsg()# 判断棋子左上方向if (x - 4 >= 0 and y + 4 <= 9):if (checkerboard[x - 1][y + 1] == flagchand checkerboard[x - 2][y + 2] == flagchand checkerboard[x - 3][y + 3] == flagchand checkerboard[x - 4][y + 4] == flagch):finish = Truemsg()# 判断棋子左下方向if (x + 4 <= 9 and y + 4 <= 9):if (checkerboard[x + 1][y + 1] == flagchand checkerboard[x + 2][y + 2] == flagchand checkerboard[x + 3][y + 3] == flagchand checkerboard[x + 4][y + 4] == flagch):finish = Truemsg()flagNum *= -1; # 更换下棋者标记

可执行程序及源码下载路径

五子棋(控制台版)程序使用说明.zip


http://www.ppmy.cn/news/34387.html

相关文章

【Linux】进程概念二

文章目录进程概念二1. 进程状态2. 进程状态查看3. 僵尸进程3.1 僵尸进程的危害4. 孤儿进程5. 环境变量5.1 常见环境变量5.2 查看环境变量的方法5.3 测试PATH5.4 环境变量相关的命令5.5 环境变量的组织方式5.6 通过代码获取环境变量6. 程序地址空间7. 进程地址空间8. 扩展8.1 为…

三十七、实战演练之接口自动化平台的文件上传

上传文件功能 上传文件功能主要针对需要测试上传文件的接口。原理是&#xff0c;把要测试上传的文件先上传到测试平台&#xff0c;然后把路径写入 用例中&#xff0c;后台真正测试时再将其进行上传。 一、上传文件模型 在testplans/models.py 模块中编写如下模型&#xff1a;…

ViewService——一种保证客户端与服务端同步的方法

简介在分布式系统中&#xff0c;最常见的场景就是主备架构。但是如果主机不幸宕机&#xff0c;如何正确的通知客户端当前后端服务器的状况成为一个值得研究的问题。本文描述了一种简单的模型用于解决此问题。背景以一个分布式的Key-Value数据库为背景。数据库对外提供3个接口Ge…

基于Springboot+Vue2前后端分离框架的智慧校园系统源码,智慧学校源码+微信小程序+人脸电子班牌

▶ 智慧校园开发环境&#xff1a; 1、使用springboot框架Javavue2 2、数据库MySQL5.7 3、移动端小程序使用小程序原生语音开发 4、电子班牌固件安卓7.1&#xff1b;使用Java Android原生 5、elmentui &#xff0c;Quartz&#xff0c;jpa&#xff0c;jwt 智慧校园结构导图▶ 这…

【VSCode】Windows 下搭建 Fortran 环境

文章目录Part.I 预备知识Part.II 安装与配置Chap.I 编译环境Chap.II 插件Part.III 测试Chap.I 一个示例Chap.II 注意事项Part.I 预备知识 Fortran 是一种比较古老的语言了&#xff0c;当时作为一种科学计算工具&#xff0c;还是比较火的&#xff0c;因为很多有名的软件都是基于…

MagicalCoder可视化开发平台:轻松搭建业务系统,为企业创造更多价值

让软件应用开发变得轻松起来&#xff0c;一起探索MagicalCoder可视化开发工具的魔力&#xff01;你是否为编程世界的各种挑战感到头痛&#xff1f;想要以更高效、简单的方式开发出专业级的项目&#xff1f;MagicalCoder低代码工具正是你苦心寻找的产品&#xff01;它是一款专为…

菜鸟刷题Day5

⭐作者&#xff1a;别动我的饭 ⭐专栏&#xff1a;菜鸟刷题 ⭐标语&#xff1a;悟已往之不谏&#xff0c;知来者之可追 一.一维数组的动态和&#xff1a;1480. 一维数组的动态和 - 力扣&#xff08;LeetCode&#xff09; 描述 给你一个数组 nums 。数组「动态和」的计算公式…

vue3 组件篇 Message

文章目录组件介绍组件使用组件代码参数说明关于vue3-dxui组件库组件介绍 Message组件用以消息提示&#xff0c;用户在前端完成某些交互时&#xff0c;在页面弹出的某种反馈。该组件一共有四种类型&#xff0c;info、success、warning、error。与一般的组件不同&#xff0c;该组…