Python 围棋游戏【含Python源码 MX_008期】

news2025/4/14 0:08:43

简介:

        围棋,源自中国,是一种两人对弈的策略棋类游戏。它被认为是世界上最复杂的棋类游戏之一,因为它的规则简单,但变化复杂多样。围棋的游戏目标是在棋盘上占领更多的地盘,并用自己的棋子围住对手的棋子,最终以得分确定胜负。

        围棋通常在一个19x19的方格棋盘上进行,但也可以在9x9或13x13的较小棋盘上玩。每个玩家控制一种颜色的棋子,通常是黑色和白色。玩家轮流在交叉点上放置自己的棋子,棋子一旦放置,便不可移动。

设计思路:

  • 初始化:__init__ 方法中初始化应用程序的各种参数和属性,包括棋盘大小、棋子图片、按钮等。这些参数决定了游戏界面的外观和功能。

  • 开始游戏: start 方法负责开始游戏,即点击“开始游戏”按钮后触发。它会初始化游戏状态,包括显示哪一方先行。

  • 落子: getDown 方法处理玩家落子的操作。当玩家点击棋盘时,会根据鼠标位置确定落子位置,并进行相应的判断,包括位置是否为空、是否越界等。如果落子有效,则更新棋盘状态,并检查是否有棋子被吃掉。

  • 悔棋: regret 方法允许玩家悔棋,即撤销上一步操作。点击“悔棋”按钮后触发,会将棋盘状态恢复到上一步的状态。

  • 跳过一手: passme 方法允许玩家跳过一手,即放弃自己的回合。点击“弃一手”按钮后触发,将会切换到对方玩家的回合。

  • 判断棋局是否结束: if_dead 方法用于判断棋局是否结束。它会检查每个棋子周围是否有气,如果某个玩家的所有棋子都没有气,那么对方获胜。

  • 重新开始游戏: reload 方法用于重新开始游戏。点击“重新开始”按钮后触发,会清空棋盘并重新初始化游戏状态。

  • 显示鼠标下棋子的阴影: shadow 方法负责显示鼠标下棋子的阴影,以帮助玩家确定落子位置。

  • 其他辅助功能: 包括处理棋子的死亡、玩家切换、警告消息框等功能,这些功能在游戏过程中起到辅助作用。

界面图

9*9路棋

13*13路棋

19*19路棋

部分代码: 

# 落子,并驱动玩家的轮流下棋行为
	def getDown(self,event):
		if not self.stop:
			# 先找到最近格点
			if (20*self.size-self.dd*0.4<event.x<self.dd*0.4+380*self.size) and (20*self.size-self.dd*0.4<event.y<self.dd*0.4+380*self.size):
				dx=(event.x-20*self.size)%self.dd
				dy=(event.y-20*self.size)%self.dd
				x=int((event.x-20*self.size-dx)/self.dd+round(dx/self.dd)+1)
				y=int((event.y-20*self.size-dy)/self.dd+round(dy/self.dd)+1)
				# 判断位置是否已经被占据
				if self.positions[y][x]==0:
					# 未被占据,则尝试占据,获得占据后能杀死的棋子列表
					self.positions[y][x]=self.present+1
					self.image_added=self.canvas_bottom.create_image(event.x-dx+round(dx/self.dd)*self.dd+4*self.p, event.y-dy+round(dy/self.dd)*self.dd-5*self.p,image=self.photoWBD_list[self.present])
					self.canvas_bottom.addtag_withtag('image',self.image_added)
					# 棋子与位置标签绑定,方便“杀死”
					self.canvas_bottom.addtag_withtag('position'+str(x)+str(y),self.image_added)
					deadlist=self.get_deadlist(x,y)
					self.kill(deadlist)
					# 判断是否重复棋局
					if not self.last_2_positions==self.positions:
						# 判断是否属于有气和杀死对方其中之一
						if len(deadlist)>0 or self.if_dead([[x,y]],self.present+1,[x,y])==False:
							# 当不重复棋局,且属于有气和杀死对方其中之一时,落下棋子有效
							if not self.regretchance==1:
								self.regretchance+=1
							else:
								self.regretButton['state']=NORMAL
							self.last_3_positions=copy.deepcopy(self.last_2_positions)
							self.last_2_positions=copy.deepcopy(self.last_1_positions)
							self.last_1_positions=copy.deepcopy(self.positions)
							# 删除上次的标记,重新创建标记
							self.canvas_bottom.delete('image_added_sign')
							self.image_added_sign=self.canvas_bottom.create_oval(event.x-dx+round(dx/self.dd)*self.dd+0.5*self.dd, event.y-dy+round(dy/self.dd)*self.dd+0.5*self.dd,event.x-dx+round(dx/self.dd)*self.dd-0.5*self.dd, event.y-dy+round(dy/self.dd)*self.dd-0.5*self.dd,width=3,outline='#3ae')

完整代码:Python 围棋游戏【含Python源码 MX_008期】

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1814587.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

禁用PS/Photoshop等一系列Adobe旗下软件联网外传用户数据操作

方案一&#xff1a; 下载火绒杀毒&#xff0c;在联网请求上禁用Adobe软件的联网请求&#xff0c;甚至还可以额外发现哪些是它要想要偷偷摸摸干的。 方案二&#xff1a; 最后注意&#xff1a; 用盗版软件只是获得了使用权&#xff01;

Mcgs 屏幕Modbus RTU通讯调试

目录 1. 设备窗口1.1 添加设备构件1.2 设备配置1.2.1 通用串口父设备配置1.2.2 设备0--ModbusRTU配置2. 设计用户窗口2.1 关联设备通道与实时数据库2.3 用户窗口3. 通信测试本文想要实现通过Modbus协议与Mcgs屏幕进行通信收发数据。在使用Mcgs屏幕进行Modbus通信时,一般Mcgs屏…

个股期权103call是什么意思?

个股期权103call是什么意思&#xff1f; 在金融市场中&#xff0c;个股期权作为一种金融衍生工具&#xff0c;为投资者提供了多样化的投资策略。其中&#xff0c;“103call”这一术语&#xff0c;特指一种特定的期权交易策略&#xff0c;它涉及到看涨期权与虚值状态。 文章来…

ROS——publisher、subscriber的实现

发布、订阅关系架构 创建发布者代码 通过CMakeList设置代码编译规则 add_executable(velocity_publisher src/velocity_publisher.cpp)target_link_libraries(velocity_publisher ${catkin_LIBRARIES}) Velocity Velocity这个词有多重含义&#xff0c;具体意思根据上下文有所…

eNSP学习——配置高级的访问控制列表

目录 主要命令 原理概述 实验目的 实验内容 实验拓扑 实验编址 实验步骤 1、基本配置 2、搭建OSPF网络 3、配置Telnet 4、配置高级ACL控制访问 需要eNSP各种配置命令的点击链接自取&#xff1a;华为&#xff45;NSP各种设备配置命令大全PDF版_ensp配置命令大全资源-…

有哪些ai聊天推荐?简单分享三款

有哪些ai聊天推荐&#xff1f;在当今数字化时代&#xff0c;人工智能&#xff08;AI&#xff09;聊天软件已经成为我们日常生活中不可或缺的一部分。无论是与朋友、家人还是同事交流&#xff0c;这些智能聊天软件都能为我们提供极大的便利。那么&#xff0c;市面上有哪些值得推…

ghost备份系统/恢复系统

准备工作 准备一个微PE镜像或者一个微PE启动U盘 操作步骤 我们这里用虚拟机&#xff08;win10&#xff09;进行模拟。首先进入到镜像微PE中&#xff08;微PE镜像制作请参考微PE工具箱制作成ISO镜像-CSDN博客&#xff09; 进入微PE 我们先进行微PE镜像的挂载。先右键虚拟机…

Leetcode 刷题第三天|链表

链表理论 什么是链表 链表是一种通过指针串联在一起的线性结构&#xff0c;每个节点有两个部分组成&#xff1a; 数据域和指针域。最后一个节点的指针域指向null 链表的入口节点为链表的头结点也就是head。 链表的类型 单链表 如上图就是单链表 双链表 单链表的指针域只…

【个人博客搭建】(22)申请QQ开发者

这里我们要引入的一个概念是OAuth - OAuth 2.0是一个行业标准的授权协议&#xff0c;用于处理用户数据访问和分享的安全问题。它允许用户将他们对某些服务的访问权限授权给第三方应用&#xff0c;而无需分享他们的用户名和密码。以下是对OAuth 2.0的介绍&#xff1a; 基本概念 …

2024年数据中心能源十大趋势白皮书(免费下载)

数据中心能源是确保数据中心正常运行的关键组成部分&#xff0c;涉及为数据中心提供电、水、油、气等多种能源的相关设备。以下是关于数据中心能源的详细概述&#xff1a; 一、数据中心能源的重要性 数据中心作为信息存储、处理和传输的核心设施&#xff0c;对能源的需求极高…

基于深度学习的电池健康状态预测(Python)

电池的故障预测和健康管理PHM是为了保障设备或系统的稳定运行&#xff0c;提供参考的电池健康管理信息&#xff0c;从而提醒决策者及时更换电源设备。不难发现&#xff0c;PHM的核心问题就是确定电池的健康状态&#xff0c;并预测电池剩余使用寿命。但是锂电池的退化过程影响因…

Golang——gRPC认证

一. OpenSSL 1.1 介绍 OpenSSL是一个开放源代码的软件库包&#xff0c;用于支持网络通讯过程中的加密。这个库提供的功能包含了SSL和TLS协议的实现&#xff0c;并可用于生成密钥、证书、进行密码运算等。 其组成主要包括一下三个组件&#xff1a; openssl&#xff1a;多用途的命…

智能售货机的成功关键点

智能售货机的成功关键点 智能售货机的盈利水平是众多投资者关注的焦点。尽管常有人认为该行业利润丰厚&#xff0c;但实际上&#xff0c;智能售货机的利润率通常维持在一个相对适中的范围&#xff0c;大约在5%至15%之间。这一数据背后&#xff0c;涵盖了包括物流配送、日常运维…

Java---BigInteger和BigDecimal和枚举

1.简介 1.BigInteger可以支持任意长度的整数 2.BigDecimal可以支持任意精度的浮点数 3.用来做精确计算 2.创建方式 new BigInteger(); new BigInteger(参数1,进制)&#xff1a;可以将不同进制转成10进制显示 new BigDecimal(); BigInteger.valueOf(); BigDecimal.valueOf();…

transformers之text generation解码策略

目录 参数TemperatureTop-p and Top-k1. 选择最上面的token:贪婪解码2. 从最上面的tokens中选择:top-k3. 从概率加起来为15%的top token中选择:top-pFrequency and Presence Penaltiestransformers库中的解码策略贪婪搜索对比搜索多项式采样beam搜索解码beam搜索多项式采样多样…

中国大模型站起来了!甚至被美国团队反向抄袭

一直以来&#xff0c;美国是公认的AI领域强者&#xff0c;我国AI技术虽然差不多&#xff0c;但始终落人一步。然而&#xff0c;近日斯坦福团队的AI模型却被指控抄袭中国AI模型&#xff0c;这下许多人都坐不住了。 被实锤抄袭的&#xff0c;是斯坦福大学AI团队&#xff0c;他们…

WWDC 2024及其AI功能的引入对中国用户和开发者的影响

WWDC&#xff08;Apple Worldwide Developers Conference&#xff09;是苹果公司一年一度的重要活动&#xff0c;吸引了全球开发者的关注。WWDC 2024引入了许多新技术和功能&#xff0c;尤其是AI功能的加入&#xff0c;引发了广泛讨论。本文将深入探讨中国开发者如何看待WWDC 2…

四川赤橙宏海商务信息咨询有限公司揭秘抖音电商新风口

在数字化浪潮席卷全球的今天&#xff0c;电商行业作为新时代经济的生力军&#xff0c;正以前所未有的速度发展。作为抖音电商服务的佼佼者&#xff0c;四川赤橙宏海商务信息咨询有限公司凭借其专业的服务团队和前瞻的市场洞察&#xff0c;不断刷新行业纪录&#xff0c;助力商家…

docker安装rabbitmq和延迟插件(不废话版)

1.下载镜像 docker pull rabbitmq:3.8-management 2.启动 docker run -e RABBITMQ_DEFAULT_USERlicoos -e RABBITMQ_DEFAULT_PASSlicoosrabbitmq -v mq-plugins:/plugins --name mq --hostname mq -p 15672:15672 -p 5672:5672 -d rabbitmq:3.8-management 3.下载对…

跨海交流丨台湾混凝土行业参访团与上海思伟软件共筑“智慧砼厂”梦 !

每一次跨越地域的握手 都是行业革新与智慧交融的序曲 台湾优质混凝土参访团 2024年5月29日&#xff0c;财团法人台湾营建研究院院长吕良正先生&#xff0c;率领着由61名行业精英组成的台湾商砼参访团&#xff0c;跨越海峡抵达上海&#xff0c;开展了一场连接两岸的学习交流活动…