五子棋纯python手写,需要的拿去

import pygame,sys
from pygame import *
pygame.init()game = pygame.display.set_mode((600,600))
gameover = False
circlebox = []
# 棋盘坐标点存储
box = []
def xy():for x in range(0,800//40): for y in range(0,800//40): box.append((x*40,y*40))
xy()
defaultColor = 'white'
def gameWrite(word,size,color,x,y):# 创建一个帮我们写字的对象writer = pygame.font.SysFont('kaiti',size)# 将内容书写到给定的位置即可text = writer.render(word, True, color)# 将书写好的text传送到画布上game.blit(text,(x,y))
tmpColor = (255,255,255)
def success(color):global gameover,tmpColorgameover = TruetmpColor = color# 左斜对角验证
def L(x,y,color):n = 0# 如果斜对角能凑足4个则即为成功x1 = xy1 = ywhile True:#往上走x1 = x1-40y1 = y1-40if x1>=0 and y1>=0:f = Falsefor i in circlebox:if i[0] == x1 and i[1] == y1 and i[2] == color:n = n+1f = Truebreakif not f:breakelse:breakprint("左上斜对角值:",n)while True:#往下走x = x+40y = y+40if x<=800 and y<=800:f = Falsefor i in circlebox:if i[0] == x and i[1] == y and i[2] == color:n = n+1f = Truebreakif not f:breakelse:breakprint("左下斜对角值:",n)if n>=4:success(color)def R(x,y,color):n = 0# 如果斜对角能凑足4个则即为成功x1 = xy1 = ywhile True:#往上走x1 = x1+40y1 = y1-40if x1<=800 and y1>=0:f = Falsefor i in circlebox:if i[0] == x1 and i[1] == y1 and i[2] == color:n = n+1f = Truebreakif not f:breakelse:breakwhile True:#往下走x = x-40y = y+40if x>=0 and y<=800:f = Falsefor i in circlebox:if i[0] == x and i[1] == y and i[2] == color:n = n+1f = Truebreakif not f:breakelse:breakif n==4:success(color)
def S(x,y,color):n = 0# 如果斜对角能凑足4个则即为成功x1 = xy1 = ywhile True:#往上走y1 = y1-40if x1>=0 and y1>=0:f = Falsefor i in circlebox:if i[0] == x1 and i[1] == y1 and i[2] == color:n = n+1f = Truebreakif not f:breakelse:breakwhile True:#往下走y = y+40if x<=800 and y<=800:f = Falsefor i in circlebox:if i[0] == x and i[1] == y and i[2] == color:n = n+1f = Truebreakif not f:breakelse:breakif n==4:success(color)
def H(x,y,color):n = 0# 如果斜对角能凑足4个则即为成功x1 = xy1 = ywhile True:#往左走x1 = x1-40if x1>=0 and y1>=0:f = Falsefor i in circlebox:if i[0] == x1 and i[1] == y1 and i[2] == color:n = n+1f = Truebreakif not f:breakelse:breakwhile True:#往右走x = x+40if x<=800 and y<=800:f = Falsefor i in circlebox:if i[0] == x and i[1] == y and i[2] == color:n = n+1f = Truebreakif not f:breakelse:breakif n==4:success(color)
# 画棋盘
def chess():start = 0for i in range(800//40): pygame.draw.polygon(game,(255,255,255),[(0,start), (800,start)],1)pygame.draw.polygon(game,(255,255,255),[(start,0), (start,800)],1)start = start+40def E():global defaultColorfor e in pygame.event.get():if e.type == QUIT:pygame.quit()sys.exit()if e.type == MOUSEBUTTONDOWN:x,y = e.posprint(e.button)if e.button == 1 and not gameover:# for xy in box:if abs(xy[0]-x)<20 and abs(xy[1]-y)<20 :f = Falsefor mark in circlebox:if xy[0]==mark[0] and xy[1]==mark[1]:f = Trueif not f:if defaultColor=='white':# 判断原来这个点是否已经存在circlebox.append((xy[0],xy[1],(255,255,255)))L(xy[0],xy[1],(255,255,255))R(xy[0],xy[1],(255,255,255))S(xy[0],xy[1],(255,255,255))H(xy[0],xy[1],(255,255,255))defaultColor = 'red'else:circlebox.append((xy[0],xy[1],(255,0,0)))L(xy[0],xy[1],(255,0,0))R(xy[0],xy[1],(255,0,0))S(xy[0],xy[1],(255,0,0))H(xy[0],xy[1],(255,0,0))defaultColor = 'white'def drawCircle():for i in circlebox:pygame.draw.circle(game,i[2],(i[0],i[1]),15)
while True:chess()drawCircle()if gameover:if tmpColor == (255,255,255):gameWrite("恭喜白方获取胜利",60,(0,0,255),70,180)else:gameWrite("恭喜红方获取胜利",60,(0,0,255),70,180)E()pygame.display.update()
相关文章:
五子棋纯python手写,需要的拿去
import pygame,sys from pygame import * pygame.init()game pygame.display.set_mode((600,600)) gameover False circlebox [] # 棋盘坐标点存储 box [] def xy():for x in range(0,800//40): for y in range(0,800//40): box.append((x*40,y*40)) xy() defaultColor wh…...
C# Winform按钮避免重复点击以及解决WinForm中设置Enabled=False为什么还会响应Click事件
1、C# Winform按钮避免重复点击 代码如下 btn.Enablefalse; //执行任务的函数或代码 btn.Enabletrue; 在btn.Enabletrue前添加Application.DoEvents(); 就是让应用程序的消息队列自动走完(即在按钮为Ture前清空消息队列)。 2、解决WinForm中设置Enabl…...
谷歌SEO是什么意思?
谷歌SEO(Search Engine Optimization)是通过优化网站内容和结构,使其在谷歌搜索引擎中排名更高的策略和技术。这不仅仅是提高网站排名,更是吸引目标受众、增加流量并最终提升业务转化的关键方法之一。谷歌搜索引擎优化(…...
IPFoxy Tips:匿名海外代理IP的使用方法及注意事项
在互联网上,隐私和安全问题一直备受关注。为了保护个人隐私和数据安全,使用匿名代理IP是一种常用的方法。匿名代理IP可以隐藏用户的真实IP地址,使用户在访问网站时更加隐秘和安全。 本文将介绍匿名代理IP的基本原理和核心功能。 基本原则 匿…...
【MySQL进阶之路 | 小结篇】MySQL键约束KEY与索引INDEX
1. 键约束 关键字key 比如UNIQUE KEY就是一个唯一性约束,用于确保表中的某一列或多列的组合具有唯一性,不允许有重复值.当定义一个唯一性约束的时候,会自动创建一个唯一性索引来支持这一约束,这意味着它同时也起到了索引的作用.…...
【中学教资科目二】02中学课程
02中学课程 第一节 课程概述1.1 课程的分类 第二节 课程组织2.1 课程内容的文本表现形式2.2 课程评价 第三节 基础教育课程改革3.1 基础教育改革的目标3.2 新课改的课程结构 第一节 课程概述 1.1 课程的分类 学校课程有多种类型,其中最利于学生系统掌握人类所取得的…...
Stable Diffusion 亲测这几个SDXL大模型,真的非常好用!
大家好我是极客菌,前两周Stable Diffusion WebUI1.6.0发布了,新增了很多对SDXL生态的支持。 而ControlNET也对SDXL的支持也逐渐稳定。 SDXL的生态终于有一点起色了,我也觉得是时候,可以来写一篇SDXL的大模型推荐了。 在推荐之前…...
DLS策略洞察:如何应对AI数据中心网络交换机市场的爆发式增长?
摘要: 随着AI技术的发展和应用,AI数据中心对网络交换机的需求日益增加。摩根士丹利预计,2023-2026年间,AI数据中心网络交换机的收入复合年增长率(CAGR)将达到55%。本文将详细分析AI数据中心网络交换机市场…...
数据仓库架构设计
数据仓库架构设计是为了有效地收集、存储、处理和分析大规模数据,从而支持商业智能和数据分析活动。一个良好的数据仓库架构需要考虑数据源的多样性、数据存储的结构化、数据处理的高效性和数据分析的灵活性。以下是数据仓库架构设计的详细介绍。 数据仓库架构的层…...
EasyExcel动态表头多sheet录入,单元格操作样式,自动修改单元格格式
EasyExcel动态表头多sheet录入,单元格操作样式,自动修改单元格格式 说明 EasyExcel是一款开源的Java库,用于读取、写入和操作Excel文件。它是阿里巴巴集团开发的一款高效、功能丰富且易于使用的Excel操作工具。 EasyExcel提供了简洁的API,使得读写Excel…...
Linux的设备模型
在设备模型出现以前,Linux的驱动存在以下问题: 1,设备和驱动没有分离。也就是说设备的信息是硬编码在驱动代码中的,这给驱动程序造成了极大的限制。如果硬件有所改动,那么必然要修改驱动代码。比如LED如果修改了管脚,那么就必然要修改驱动程序。这样就导致驱动的通用性很…...
初始化一个Android项目时,Android Studio会自动生成一些文件和目录结构,以帮助你快速上手开发
当你初始化一个Android项目时,Android Studio会自动生成一些文件和目录结构,以帮助你快速上手开发。这些文件和目录各自有其特定的功能和用途。下面我为你解释一下这些自动生成的内容: 1. app 目录 这是你的应用模块的根目录,包…...
社区团购小程序开发
在快节奏的现代生活中,人们越来越追求便利与效率。社区团购小程序应运而生,以其独特的优势成为连接社区居民与优质商品的重要桥梁。本文将探讨社区团购小程序的特点、优势以及未来发展趋势,为大家揭示这一新型购物模式的魅力。 社区团购小程序…...
数据分析python基础实战分析
数据分析python基础实战分析 安装python,建议安装Anaconda 【Anaconda下载链接】https://repo.anaconda.com/archive/ 记得勾选上这个框框 安装完后,然后把这两个框框给取消掉再点完成 在电脑搜索框输入"Jupyter",牛马启动&am…...
英语笔记-专升本
2024年6月23日15点01分,今天自己听老师讲了一张试卷,自己要开始不断地进行一个做事,使自己可以不断地得到一个提升,自己可以提升的内容, 英语试卷笔记 ------------------------------------ | 英语试卷笔记 …...
什么野指针(c++)
野指针定义 野指针(Wild Pointer)是指向不确定位置或者非法地址的指针。当一个指针指向的内存被释放后,如果没有将其设置为NULL,那么这个指针就变成了野指针。使用野指针会导致未定义行为,可能引发程序崩溃或数据损坏…...
【编译原理】绪论
1.计算机程序语言以及编译 编译是对高级语言的翻译 源程序是句子的集合,树可以较好的反应句子的结构 编译程序是一种翻译程序 2.编号器在语言处理系统中的位置 可重定位:在内存中存放的起始位置不是固定的 加载器:修改可重定位地址&#x…...
优化Docker部署:解决Java应用ExcelGenerateException并提速镜像构建
在开发和部署应用时,经常会遇到在本地环境运行正常,但迁移到Docker容器后出现特定错误的情况。本篇博客将聚焦于解决一个具体问题:当使用Docker部署包含Excel生成功能的Java应用程序时,遇到ExcelGenerateException的排查与解决方法…...
你了解RabbitMQ、RocketMQ和Kafka吗?
是的,我了解 RabbitMQ、RocketMQ 和 Kafka。以下是对这三种消息队列系统的详细介绍: RabbitMQ 概念 RabbitMQ 是一个由 Pivotal 开发的开源消息代理,基于 AMQP(Advanced Message Queuing Protocol)协议。它支持多种…...
python实现可视化大屏(django+pyechars)
1.实现效果图 2.对数据库进行迁移 python manage.py makemigrations python manage.py migrate 3.登录页面 {% load static%} <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport"…...
Python爬虫实战:研究MechanicalSoup库相关技术
一、MechanicalSoup 库概述 1.1 库简介 MechanicalSoup 是一个 Python 库,专为自动化交互网站而设计。它结合了 requests 的 HTTP 请求能力和 BeautifulSoup 的 HTML 解析能力,提供了直观的 API,让我们可以像人类用户一样浏览网页、填写表单和提交请求。 1.2 主要功能特点…...
YSYX学习记录(八)
C语言,练习0: 先创建一个文件夹,我用的是物理机: 安装build-essential 练习1: 我注释掉了 #include <stdio.h> 出现下面错误 在你的文本编辑器中打开ex1文件,随机修改或删除一部分,之后…...
深入理解JavaScript设计模式之单例模式
目录 什么是单例模式为什么需要单例模式常见应用场景包括 单例模式实现透明单例模式实现不透明单例模式用代理实现单例模式javaScript中的单例模式使用命名空间使用闭包封装私有变量 惰性单例通用的惰性单例 结语 什么是单例模式 单例模式(Singleton Pattern&#…...
对WWDC 2025 Keynote 内容的预测
借助我们以往对苹果公司发展路径的深入研究经验,以及大语言模型的分析能力,我们系统梳理了多年来苹果 WWDC 主题演讲的规律。在 WWDC 2025 即将揭幕之际,我们让 ChatGPT 对今年的 Keynote 内容进行了一个初步预测,聊作存档。等到明…...
【JVM面试篇】高频八股汇总——类加载和类加载器
目录 1. 讲一下类加载过程? 2. Java创建对象的过程? 3. 对象的生命周期? 4. 类加载器有哪些? 5. 双亲委派模型的作用(好处)? 6. 讲一下类的加载和双亲委派原则? 7. 双亲委派模…...
[大语言模型]在个人电脑上部署ollama 并进行管理,最后配置AI程序开发助手.
ollama官网: 下载 https://ollama.com/ 安装 查看可以使用的模型 https://ollama.com/search 例如 https://ollama.com/library/deepseek-r1/tags # deepseek-r1:7bollama pull deepseek-r1:7b改token数量为409622 16384 ollama命令说明 ollama serve #:…...
安卓基础(Java 和 Gradle 版本)
1. 设置项目的 JDK 版本 方法1:通过 Project Structure File → Project Structure... (或按 CtrlAltShiftS) 左侧选择 SDK Location 在 Gradle Settings 部分,设置 Gradle JDK 方法2:通过 Settings File → Settings... (或 CtrlAltS)…...
【Post-process】【VBA】ETABS VBA FrameObj.GetNameList and write to EXCEL
ETABS API实战:导出框架元素数据到Excel 在结构工程师的日常工作中,经常需要从ETABS模型中提取框架元素信息进行后续分析。手动复制粘贴不仅耗时,还容易出错。今天我们来用简单的VBA代码实现自动化导出。 🎯 我们要实现什么? 一键点击,就能将ETABS中所有框架元素的基…...
xmind转换为markdown
文章目录 解锁思维导图新姿势:将XMind转为结构化Markdown 一、认识Xmind结构二、核心转换流程详解1.解压XMind文件(ZIP处理)2.解析JSON数据结构3:递归转换树形结构4:Markdown层级生成逻辑 三、完整代码 解锁思维导图新…...
解析两阶段提交与三阶段提交的核心差异及MySQL实现方案
引言 在分布式系统的事务处理中,如何保障跨节点数据操作的一致性始终是核心挑战。经典的两阶段提交协议(2PC)通过准备阶段与提交阶段的协调机制,以同步决策模式确保事务原子性。其改进版本三阶段提交协议(3PC…...
