五子棋纯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打卡day49
知识点回顾: 通道注意力模块复习空间注意力模块CBAM的定义 作业:尝试对今天的模型检查参数数目,并用tensorboard查看训练过程 import torch import torch.nn as nn# 定义通道注意力 class ChannelAttention(nn.Module):def __init__(self,…...
8k长序列建模,蛋白质语言模型Prot42仅利用目标蛋白序列即可生成高亲和力结合剂
蛋白质结合剂(如抗体、抑制肽)在疾病诊断、成像分析及靶向药物递送等关键场景中发挥着不可替代的作用。传统上,高特异性蛋白质结合剂的开发高度依赖噬菌体展示、定向进化等实验技术,但这类方法普遍面临资源消耗巨大、研发周期冗长…...
条件运算符
C中的三目运算符(也称条件运算符,英文:ternary operator)是一种简洁的条件选择语句,语法如下: 条件表达式 ? 表达式1 : 表达式2• 如果“条件表达式”为true,则整个表达式的结果为“表达式1”…...
第25节 Node.js 断言测试
Node.js的assert模块主要用于编写程序的单元测试时使用,通过断言可以提早发现和排查出错误。 稳定性: 5 - 锁定 这个模块可用于应用的单元测试,通过 require(assert) 可以使用这个模块。 assert.fail(actual, expected, message, operator) 使用参数…...
Robots.txt 文件
什么是robots.txt? robots.txt 是一个位于网站根目录下的文本文件(如:https://example.com/robots.txt),它用于指导网络爬虫(如搜索引擎的蜘蛛程序)如何抓取该网站的内容。这个文件遵循 Robots…...
select、poll、epoll 与 Reactor 模式
在高并发网络编程领域,高效处理大量连接和 I/O 事件是系统性能的关键。select、poll、epoll 作为 I/O 多路复用技术的代表,以及基于它们实现的 Reactor 模式,为开发者提供了强大的工具。本文将深入探讨这些技术的底层原理、优缺点。 一、I…...
华硕a豆14 Air香氛版,美学与科技的馨香融合
在快节奏的现代生活中,我们渴望一个能激发创想、愉悦感官的工作与生活伙伴,它不仅是冰冷的科技工具,更能触动我们内心深处的细腻情感。正是在这样的期许下,华硕a豆14 Air香氛版翩然而至,它以一种前所未有的方式&#x…...
回溯算法学习
一、电话号码的字母组合 import java.util.ArrayList; import java.util.List;import javax.management.loading.PrivateClassLoader;public class letterCombinations {private static final String[] KEYPAD {"", //0"", //1"abc", //2"…...
JVM虚拟机:内存结构、垃圾回收、性能优化
1、JVM虚拟机的简介 Java 虚拟机(Java Virtual Machine 简称:JVM)是运行所有 Java 程序的抽象计算机,是 Java 语言的运行环境,实现了 Java 程序的跨平台特性。JVM 屏蔽了与具体操作系统平台相关的信息,使得 Java 程序只需生成在 JVM 上运行的目标代码(字节码),就可以…...
Redis:现代应用开发的高效内存数据存储利器
一、Redis的起源与发展 Redis最初由意大利程序员Salvatore Sanfilippo在2009年开发,其初衷是为了满足他自己的一个项目需求,即需要一个高性能的键值存储系统来解决传统数据库在高并发场景下的性能瓶颈。随着项目的开源,Redis凭借其简单易用、…...
