python例程:五子棋(控制台版)程序
目录
- 《五子棋(控制台版)》程序使用说明
- 程序示例代码
- 可执行程序及源码下载路径
《五子棋(控制台版)》程序使用说明
在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
相关文章:
python例程:五子棋(控制台版)程序
目录《五子棋(控制台版)》程序使用说明程序示例代码可执行程序及源码下载路径《五子棋(控制台版)》程序使用说明 在PyCharm中运行《五子棋(控制台版)》即可进入如图1所示的系统主界面。 图1 游戏主界面 具…...
leveldb的Compaction线程
个人随笔 (Owed by: 春夜喜雨 http://blog.csdn.net/chunyexiyu) 1. leveldb的Compaction全局线程 在leveldb中,有一个全局的后台线程BGThread,用于数据库的MinorCompact与MajorCompact。 重点关注“全局线程”: 这个标识着无论一个进程打开…...
邪恶的想法冒出,立马启动python实现美女通通下
前言 嗨喽~大家好呀,这里是魔王呐 ❤ ~! 完整源码、python资料: 点击此处跳转文末名片获取 当我在首页刷到这些的时候~ 我的心里逐渐浮现一个邪念:我把这些小姐姐全都采集,可以嘛? 答案当然是可以的~毕竟就我这技术,…...
蓝桥杯刷题冲刺 | 倒计时18天
作者:指针不指南吗 专栏:蓝桥杯倒计时冲刺 🐾马上就要蓝桥杯了,最后的这几天尤为重要,不可懈怠哦🐾 文章目录0.知识点1.乳草的入侵今天写 搜索题 0.知识点 DFS 设计步骤 确定该题目的状态(包括边…...
经典算法面试题——Java篇-附带赠书活动,评论区随机选取一人赠书
目录 一.图书推荐 二.说一下什么是二分法?使用二分法时需要注意什么?如何用代码实现? 三.什么是插入排序?用代码如何实现? 四.什么是冒泡排序?用代码如何实现? 五.什么是斐波那契数列&#…...
支持RT-Thread最新版本的瑞萨RA2E1开发板终于要大展身手了
支持RT-Thread最新版本的瑞萨RA2E1开发板终于要大展身手了 熟悉RT-Thread和瑞萨MCU的朋友都知道,当前RT-Thread仓库的主线代码是不支持RA2E1这个BSP的。刚好,最近我在联合瑞萨推广一个叫《致敬未来的攻城狮计划》,使用的就是RA2E1开发板&…...
【C语言进阶】 12. 假期测评①
day01 1. 转义字符的判断 以下不正确的定义语句是( ) A: double x[5] {2.0, 4.0, 6.0, 8.0, 10.0}; B: char c2[] {‘\x10’, ‘\xa’, ‘\8’}; C: char c1[] {‘1’,‘2’,‘3’,‘4’,‘5’}; D: int y[53]{0, 1, 3, 5, 7, 9}; 【答案解析】 B 本…...
给程序加个进度条吧,1行Python代码,快速添加~
大家好,这里是程序员晚枫。 你在写代码的过程中,有没有遇到过以下问题? 已经写好的程序,想看看程序执行的进度? 在写代码批量处理文件的时候,如何显示现在处理到第几个文件了? 👆…...
常见的Keil5编译报错及其原因和解决方法
以下是几种常见的Keil5编译报错及其原因和解决方法: "Error: L6218E: Undefined symbol"(未定义符号错误) 这通常是由于缺少对应的库文件或者代码中有未声明的变量或函数引起的。解决方法是检查相应的库文件是否已正确添加到工程中…...
Django 实现瀑布流
需求分析 现在是 "图片为王"的时代,在浏览一些网站时,经常会看到类似于这种满屏都是图片。图片大小不一,却按空间排列,就这是瀑布流布局。 以瀑布流形式布局,从数据库中取出图片每次取出等量(7 …...
传输层协议----UDP/TCP
文章目录前言一、再谈端口号端口号的划分认识知名端口号(Well-Know Port Number)两个问题nestatpidof二、UDP协议UDP协议端格式UDP的特点面向数据报UDP的缓冲区UDP使用注意事项基于UDP的应用层协议二、TCP协议TCP协议段格式可靠性问题确认应答(ACK)机制流量控制六个标志位PSHUG…...
教你如何快速在Linux中找到某个目录中最大的文件
工作中经常会有查看某个目录下最大的文件的需求,比如在运维工作中,发现某个系统或功能不工作了,经排查发现是服务器空间满了…那么接下来就需要清理一下临时文件或者日志文件,或者其他不需要的文件,那么就会想要查看一…...
Java二叉树面试题讲解
Java二叉树面试题讲解🚗1.检查两颗树是否相同🚕2.另一颗树的子树🚙3.二叉树最大深度🚌4.判断一颗二叉树是否是平衡二叉树🚎5.对称二叉树🚓6.获取树中结点个数🚑7.判断一个树是不是完全二叉树&am…...
rancher2.6进阶之nfs动态创建pv配置
添加NFS client provisioner 动态提供K8s后端存储卷 1.1.前提说明 1.1.1.说明 NFS client provisioner 利用 NFS Server 给 Kubernetes 作为持久存储的后端,并且动态提供PV。 默认 rancher 2 的存储类中的提供者不包含NFS,需要手动添加;添加方式有两种: 1)从应用商店直接安…...
快速上手vue elementUI好看的登录界面
这是一个非常非常适合新手的vue登录界面,总体来说美观大气,axios那部分没有发,有需要的大家可以自己进行二次开发,继续编写。 用到了技术栈有 vue/cli 5.07 element-ui 2.15.9 适合入门级新手,展示下页面 emmm验证码…...
Vue趣味【Vue3+Element Plus+Canvas实现一个简易画板;支持导出为图片】
目录🌟前言🌟粉丝先看🌟创建Vue3项目🌟引入Element Plus🌟实现代码(详细注释)🌟写在最后🌟JSON包里写函数,关注博主不迷路🌟前言 哈喽小伙伴们&a…...
【Spring Cloud Alibaba】2.服务注册与发现(Nacos安装)
文章目录环境要求简介安装Nacos源码安装Docker安装数据库配置访问服务我们要搭建一个Spring Cloud Alibaba项目就绕不开Nacos,阿里巴巴提供的Nacos组件,可以提供服务注册与发现和分布式配置服务,拥有着淘宝双十一十几年的流量经验,…...
深度学习 Day28——利用Pytorch实现好莱坞明星识别
深度学习 Day28——利用Pytorch实现好莱坞明星识别 文章目录深度学习 Day28——利用Pytorch实现好莱坞明星识别一、前言二、我的环境三、前期工作1、导入依赖项设置GPU2、导入数据集3、划分数据集四、调用官方的VGG16模型五、训练模型1、编写训练函数2、编写测试函数3、设置动态…...
Android中使用FCM进行消息推送
Firebase Cloud Message 的介绍 Firebase Cloud Message(FCM)是由Google推出的一种云端消息推送服务,它是由Google推出的Google Cloud Messaging(GCM)服务的升级版。在2016年5月,Google宣布将Google Cloud Messaging重命名为Firebase Cloud Message,作为Firebase的一部…...
从 X 入门Pytorch——BN、LN、IN、GN 四种归一化层的代码使用和原理
Pytorch中四种归一化层的原理和代码使用前言1 Batch Normalization(2015年提出)Pytorch官网解释原理Pytorch代码示例2 Layer Normalization(2016年提出)Pytorch官网解释原理Pytorch代码示例3 Instance Normalization(2…...
python打卡day49
知识点回顾: 通道注意力模块复习空间注意力模块CBAM的定义 作业:尝试对今天的模型检查参数数目,并用tensorboard查看训练过程 import torch import torch.nn as nn# 定义通道注意力 class ChannelAttention(nn.Module):def __init__(self,…...
ESP32读取DHT11温湿度数据
芯片:ESP32 环境:Arduino 一、安装DHT11传感器库 红框的库,别安装错了 二、代码 注意,DATA口要连接在D15上 #include "DHT.h" // 包含DHT库#define DHTPIN 15 // 定义DHT11数据引脚连接到ESP32的GPIO15 #define D…...
《用户共鸣指数(E)驱动品牌大模型种草:如何抢占大模型搜索结果情感高地》
在注意力分散、内容高度同质化的时代,情感连接已成为品牌破圈的关键通道。我们在服务大量品牌客户的过程中发现,消费者对内容的“有感”程度,正日益成为影响品牌传播效率与转化率的核心变量。在生成式AI驱动的内容生成与推荐环境中࿰…...
Nuxt.js 中的路由配置详解
Nuxt.js 通过其内置的路由系统简化了应用的路由配置,使得开发者可以轻松地管理页面导航和 URL 结构。路由配置主要涉及页面组件的组织、动态路由的设置以及路由元信息的配置。 自动路由生成 Nuxt.js 会根据 pages 目录下的文件结构自动生成路由配置。每个文件都会对…...
2025 后端自学UNIAPP【项目实战:旅游项目】6、我的收藏页面
代码框架视图 1、先添加一个获取收藏景点的列表请求 【在文件my_api.js文件中添加】 // 引入公共的请求封装 import http from ./my_http.js// 登录接口(适配服务端返回 Token) export const login async (code, avatar) > {const res await http…...
【python异步多线程】异步多线程爬虫代码示例
claude生成的python多线程、异步代码示例,模拟20个网页的爬取,每个网页假设要0.5-2秒完成。 代码 Python多线程爬虫教程 核心概念 多线程:允许程序同时执行多个任务,提高IO密集型任务(如网络请求)的效率…...
精益数据分析(97/126):邮件营销与用户参与度的关键指标优化指南
精益数据分析(97/126):邮件营销与用户参与度的关键指标优化指南 在数字化营销时代,邮件列表效度、用户参与度和网站性能等指标往往决定着创业公司的增长成败。今天,我们将深入解析邮件打开率、网站可用性、页面参与时…...
面向无人机海岸带生态系统监测的语义分割基准数据集
描述:海岸带生态系统的监测是维护生态平衡和可持续发展的重要任务。语义分割技术在遥感影像中的应用为海岸带生态系统的精准监测提供了有效手段。然而,目前该领域仍面临一个挑战,即缺乏公开的专门面向海岸带生态系统的语义分割基准数据集。受…...
Vue ③-生命周期 || 脚手架
生命周期 思考:什么时候可以发送初始化渲染请求?(越早越好) 什么时候可以开始操作dom?(至少dom得渲染出来) Vue生命周期: 一个Vue实例从 创建 到 销毁 的整个过程。 生命周期四个…...
前端高频面试题2:浏览器/计算机网络
本专栏相关链接 前端高频面试题1:HTML/CSS 前端高频面试题2:浏览器/计算机网络 前端高频面试题3:JavaScript 1.什么是强缓存、协商缓存? 强缓存: 当浏览器请求资源时,首先检查本地缓存是否命中。如果命…...




