Python实现连连看

# coding:utf-8
import pygame, sys, random, time, easygui
from pygame.locals import *
# 初始化pygame环境
pygame.init()
# 创建窗口
canvas = pygame.display.set_mode((1000, 600))
# 加载图片
bg = pygame.image.load("imgs/bg.jpg")
win = pygame.image.load("imgs/win.png")
# 设置标题
pygame.display.set_caption("连连看")
# 图片位置数组
p = [[60, 120], [170, 120], [280, 120], [390, 120], [500, 120], [610, 120], [720, 120], [830, 120],[60, 230], [170, 230], [280, 230], [390, 230], [500, 230], [610, 230], [720, 230], [830, 230],[60, 340], [170, 340], [280, 340], [390, 340], [500, 340], [610, 340], [720, 340], [830, 340],[60, 450], [170, 450], [280, 450], [390, 450], [500, 450], [610, 450], [720, 450], [830, 450]]# 定义变量存储点击的卡片信息
first_num = 0
first_x = 0
first_y = 0# 创建handleEvent方法
def handleEvent():# 全局变量global first_num, first_x, first_yfor event in pygame.event.get():if event.type == pygame.QUIT or event.type == KEYDOWN and event.key == K_ESCAPE:sys.exit()pygame.quit()# 判断点击鼠标左键if event.type == MOUSEBUTTONDOWN and event.button == 1:# 获取鼠标坐标mouse_x = event.pos[0]mouse_y = event.pos[1]# 调用Click方法获取点击到的卡片信息if Click(mouse_x, mouse_y):sec_num = Click(mouse_x, mouse_y)[0]sec_x = Click(mouse_x, mouse_y)[1]sec_y = Click(mouse_x, mouse_y)[2]# 创建列表存储点击标号相同卡片的下标dellist = []# 给第一次点击的卡片信息赋值if first_num == 0:first_num = sec_numfirst_x = sec_xfirst_y = sec_yelse:# 第二次点击卡片标号相同判断坐标if sec_num == first_num  :if not(first_x == sec_x and first_y == sec_y) :# 获取标号相同的卡片在cards列表中的下标for i in range(len(cards)):if cards[i].num == sec_num:dellist.append(i)# 删除卡片for j in range(2):if j == 0:cards.pop(dellist[j])else:cards.pop(dellist[j] - 1)first_num = 0first_x = 0first_y = 0# 第二次点击卡片标号不同时给点击卡片信息重新赋值else:first_num = sec_numfirst_x = sec_xfirst_y = sec_y# 创建Card类
class Card ():def __init__(self, num , x, y):self.num = numself.img = pygame.image.load('imgs/' + str(num) + '.png')self.x = xself.y = ydef paint(self):canvas.blit(self.img, (self.x, self.y))# 创建cards列表存储所有卡片
cards = []
for i  in range(0, 32):n = int(i % 16 + 1)m = int(random.randint(0, (31 - i)))x = p[m][0]y = p[m][1]cards.append(Card(n , x, y))p.pop(m)# 添加点击事件获取点击到的卡片信息
def  Click(mouse_x, mouse_y):x1 = mouse_xy1 = mouse_y# 获取所有卡片信息for i in range(0, len(cards)):imgx = cards[i].ximgy = cards[i].y# 判断鼠标点击位置是否在卡片上if imgx + 100 > x1  and x1 > imgx and imgy + 100 > y1 and y1 > imgy:img = cards[i].numreturn img , imgx, imgyreturn False#获取开始时间
start_time = time.time()
while True:# 画出游戏背景#canvas.blit(bg, (0, 0))#添加游戏结束背景if len(cards) == 0:canvas.blit(win,(0,0))else:canvas.blit(bg,(0,0))# 画出所有图片for i in range(0, len(cards)):cards[i].paint()#获取游戏时间if len(cards) != 0:end_time = time.time()timing = int(end_time - start_time)#easygui.msgbox('耗时:' + str(timing))Time = pygame.font.SysFont('华文琥珀',40)TextTime = Time.render('time:' + str(timing),True,(255,255,255))canvas.blit(TextTime,(720,40))# 更新屏幕内容pygame.display.update()# 调用handleEvent方法handleEvent()

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

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

相关文章

Git——分支详解

目录 Git分支1、开始使用分支1.1、新增分支1.2、更改分支名称1.3、删除分支1.4、切换分支1.5、切换分支时1.6、要切换到哪个分支,首先要有那个分支 2、分支原理2.1、单个分支2.2、多个分支2.3、切换分支时的逻辑1、更新暂存区和工作目录2、变更HEAD的位置 2.4、如果…

蓝桥杯刷题--python-22-dfs-bfs

2060. 奶牛选美 - AcWing题库 n,mmap(int,input().split()) map_[] for _ in range(n): tmplist(input()) map_.append(tmp) mm[(1,0),(-1,0),(0,1),(0,-1)] def dfs(a,b,q): q.append((a,b)) map_[a][b]. for i,j in mm: xai ybj …

生成式人工智能在金融领域:FinGPT、BloombergGPT及其未来

生成式人工智能在金融领域的应用:FinGPT、BloombergGPT 及其他 引言 生成式人工智能(Generative AI)是指能够生成与输入数据相似的新数据样本的模型。ChatGPT 的成功为各行各业带来了许多机会,激励企业设计自己的大型语言模型。…

微软 CEO Satya Nadella 的访谈

Nicolai: 大家好。我刚经历了人生中最不可思议的事情,我有幸采访了微软的 CEO、Satya Nadella。微软现在是全球市值最高的公司。真是太棒了,请继续关注。 第一章 微软的发展与平台转变 Nicolai: Satya,你是全球市值最高公司的 CEO&#xff…

GPT-4.5 Turbo详细信息被搜索引擎泄露:有重大改进

3月14日消息,据外电报道,OpenAI 最新人工智能模型 GPT-4.5 Turbo 的详细信息已通过 Bing 和 DuckDuckGo 的搜索引擎索引过早泄露。 GPT-4.5 Turbo 的产品页面在正式发布之前就出现在搜索结果中,引发了人们对 OpenAI 最新型号的特性和功能的猜…

GPT的实现细节

关于GPT的代码细节,这里梳理了一下: 数据集构造 原始数据集schema: inputwho is your favorite basketball player? outputOf course Kobe Bryant!那么在构造训练集时,根据chunk size构造多个输入: input_1who is …

深入探索Redis集合:高效数据存储与应用解析

Redis作为一种高性能的键值存储系统,其中的集合(Set)是一种无序、唯一值的数据结构,提供了快速的插入、删除和查找操作。本文将深入解析Redis集合的使用方法、示例、应用场景以及注意事项。 Redis集合的基本使用方法 Redis集合的…

每周一算法:双向深搜

题目描述 达达帮翰翰给女生送礼物,翰翰一共准备了 N N N 个礼物,其中第 i i i 个礼物的重量是 G [ i ] G[i] G[i]。 达达的力气很大,他一次可以搬动重量之和不超过 W W W的任意多个物品。 达达希望一次搬掉尽量重的一些物品,请…

c/c++ | gdb | 多线程调试

关于调试程序,采用GDB 一般有两种方式 一个是gdb -p 加上你要调试的程序 gdb -p xxx 或者 gdb attach 加上你要调试的程序 gdb attaach xxx 然后对于调试多线程,一般是出现死锁问题。死锁通常是共享资源冲突导致 调试多线程 已经进入gdb 调试 查看 进程 …

微服务:Sentinel篇

1. 初识Sentinel 1.1. 雪崩问题以及解决方案 1.1.1. 雪崩问题 微服务中,服务间调用关系错综复杂,一个微服务往往依赖于多个其它微服务。 如图,如果服务提供者I发生了故障,当前的应用的部分业务因为依赖于服务I,因此…

【学习笔记】如何实现云原生初步

云原生(Cloud Native)作为近年来云计算领域的重要趋势,旨在帮助企业更高效地构建、部署和管理应用程序。通过结合容器、微服务、DevOps等关键技术,云原生能够充分发挥云平台的弹性、分布式优势,提升应用的性能、可靠性…

静默安装OGG21.3微服务版本FOR ORACLE版本

静默安装OGG21.3微服务版本FOR ORACLE版本 silent install ogg21.3 for oracle 某度找来找去都没有找到一份可靠的静默安装OGG21.3微服务版本的案例,特别难受,为此将自己静默安装的步骤一步步贴出来分享给大家,请指点,谢谢。 至…

Web Speech API的语音识别技术

SpeechSynthesis对象 这是一个实验性技术 目前兼容性如图: pc端几乎兼容,移动端部分不兼容 网页语音 API 的SpeechSynthesis 接口是语音服务的控制接口; 它可以用于获取设备上关于可用的合成声音的信息,开始、暂停语音&#x…

Querywrapper与Lambdaquerywrappe比较

当使用 Spring Boot 结合 MyBatis Plus 进行开发时,LambdaQueryWrapper 和 QueryWrapper 是用于构建查询条件的两个重要工具。下面详细介绍它们的区别,并举例说明在 Spring Boot 中如何使用。 1. QueryWrapper QueryWrapper 是 MyBatis Plus 中常用的查…

软件杯 深度学习 python opencv 实现人脸年龄性别识别

文章目录 0 前言1 项目课题介绍2 关键技术2.1 卷积神经网络2.2 卷积层2.3 池化层2.4 激活函数:2.5 全连接层 3 使用tensorflow中keras模块实现卷积神经网络4 Keras介绍4.1 Keras深度学习模型4.2 Keras中重要的预定义对象4.3 Keras的网络层构造 5 数据集处理训练5.1 …

从电影《沙丘》说起——对人工智能的思考

从《沙丘》开始说起 之前看《沙丘》电影,里面有一类角色叫门泰特,这类人大脑可以飞快地运算,在电影设定里是替换人工智能、机器运算的存在。男主保罗也是这类型的人,但他可能基因更强大,吸食了香料后,他的…

docker快速安装和详细安装-保姆教程

docker快速安装和详细安装 一、快速搭建 卸载老版本 yum remove docker docker-common docker-selinux docker-engine安装相关需要的包 yum install -y yum-utils device-mapper-persistent-data lvm2设置docker镜像仓库 yum-config-manager \ --add-repo \ http://mirror…

什么数据需要存在Redis里?缓存的缺点?怎样进行数据同步?

什么数据需要存在Redis里? 通常需要将频繁访问且对性能要求较高的数据存储在Redis中。 缓存数据:Redis常用于存储缓存数据,如热点数据、频繁查询的结果等,以减少对后端数据库的压力和提高系统响应速度。会话信息:对于Web应用来…

大数据面试题之SQL题

大数据面试题之SQL题 1.有一个录取学生人数表,记录的是每年录取学生人数和入学学生的学制 以下是表结构: CREATE TABLE admit ( id int(11) NOT NULL AUTO_INCREMENT, year int(255) DEFAULT NULL COMMENT ‘入学年度’, num int(255) DEFAULT NULL COMM…

大语言模型相关工具使用链接

大语言模型(Large Language Model,LLM)是自然语言处理(NLP)领域中的一种深度学习模型,主要用于理解和生成人类语言。这类模型通常基于Transformer架构,通过在大规模语料库上进行预训练来捕获语言…