使用wxPython和pillow开发拼图小游戏(一)

news/2024/9/18 6:20:02/

刚学习python,心血来潮,使用wxPython和pillow开了一个简单的拼图小游戏,大家分享一下

wxPython是Python语言的一套优秀的GUI图形库,在此项目里主要用来开发GUI客户页面;Pillow是一个非常好用的图像处理库,在此项目中主要用来对图片进行填充、切割、保存等操作。

项目初始化

考虑到项目初始化时没有图片(本项目中没有设置默认图片),所以初始化时,创建了一个3*3的数字拼图

初始化要求,9个格子填充8个数字,空格相邻的可以进行点击移动,1-8随机占8个,而且要保证一定能够通过点击恢复成正确的顺序

 _can_move = {"0": [1, 3],"1": [0, 2, 4],"2": [1, 5],"3": [0, 4, 6],"4": [1, 3, 5, 7],"5": [2, 4, 8],"6": [3, 7],"7": [4, 6, 8],"8": [5, 7]}def random_init(self):self.indices = []self._ideal = self.vac*self.vac-1for i in range(0, self.vac*self.vac-1):self.indices.append(i)self.can_move_init()  #初始化,可移动集合,生成的格式如上边的_can_movetime = 1000*self.vac  #初始化时,随机移动的次数,1000*行数while time > 0:       #安装可移动规则,进行随机移动can_move = self._can_move[str(self._ideal)]idx = random.randrange(0, len(can_move))pos = can_move[idx]if pos in self.indices:self.indices[self.indices.index(pos)] = self._idealself._ideal = postime -= 1def can_move_init(self):for i in range(0, self.vac*self.vac):temp_can_move = []if i - self.vac >= 0:temp_can_move.append(i - self.vac)if i%self.vac != 0:temp_can_move.append(i-1)if (i+1)%self.vac != 0:temp_can_move.append(i+1)if i + self.vac <= self.vac*self.vac:temp_can_move.append(i + self.vac)self._can_move[str(i)] = temp_can_move

 在GUI中展示,部分代码如下:

index = 0
for i in self.indices:btn = wx.Button(self.panel_1, i, str(index + 1), size=(int(540 / self.vac), int(540 / self.vac)),pos=(int(i % self.vac * (540 / self.vac)), int((i // self.vac) * (540 / self.vac))))  # 每个格子为一个按钮,按钮上显示数字index += 1btn.SetBackgroundColour("#FFCC66")btn.SetFont(font)self.Bind(wx.EVT_BUTTON, self.OnClick, btn)  # 绑定格子的点击事件

初始化就先介绍到这儿,后续会继续和大家分享关于使用本地图片来加载游戏的方法,欢迎大家继续关注


http://www.ppmy.cn/news/899743.html

相关文章

迅雷极速版修改边下边播的默认播放器为PotPlayer

在使用前先将原有的迅雷自带的迅雷看看播放器卸载 首先打开迅雷安装路径下的以下文件夹&#xff0c;&#xff08;每个人有每个人的安装路径&#xff09; D:\迅雷极速版\Program 在该文件夹下新建一个文本文档&#xff0c;将其名字和后缀名改为 xmp.ini 打开等待使用 找到Pot…

迅雷9边下边播绑定第三方播放器

迅雷9边下边播绑定第三方播放器 测试版本&#xff08;迅雷9绿色版&#xff09;测试播放器 测试版本&#xff08;迅雷9绿色版&#xff09; 测试播放器 目前测试的播放器为potplayer、爱奇艺万能播放器&#xff0c;再加上又重新开始更新的QQ影音&#xff0c;之前的迅雷版本通过修…

C# 视频播放器 采用迅雷Aplayer 绿色使用无需安装 支持VS2022

引擎介绍 APlayer 媒体播放引擎是迅雷公司从 2009 年开始开发的通用音视频媒体文件播放内核。 迅雷看看播放器和迅雷影音就是使用 APlayer 作为播放内核。 本质上APlayer播放引擎是一个ActiveX控件&#xff0c;可以被本地其他外部程序嵌入调用&#xff0c;也可以直接被网页嵌…

html播放器投屏,迅雷播放器投屏到电视如何操作

我个人使用感受,小米电视的无线投屏不错,手机电脑都可以投,操作简单,画面流畅&#xff0c;但有网友问迅雷影音能不能做到&#xff0c;迅雷影音是一款非常好用的视频播放软件&#xff0c;它可以进行各种视频的播放&#xff0c;很多小伙伴们可能不知道原来迅雷影音也是能投屏的吧…

迅雷7 down.php,迅雷云点播放器(KCPlayer5000)

KCPlayer基于迅雷云点播&#xff0c;免费享受高速通道&#xff0c;免费使用离线下载&#xff0c;高清云端快速转码&#xff0c;即点即播。。 相似软件 版本说明 软件地址 KCPlayer的先祖是“迅雷云点播放器2.0”&#xff0c;不过作为一款小众软件&#xff0c;因为突然红火&…

如何找到迅雷自带播放器

1,首先找到迅雷图标,然后鼠标右键点击,找到打开文件当前位置 2.找到xmp文件夹,点进去找到program文件夹,最后找到xmp.exe.它就是播放器,你可以把它放到桌面.

@EnableConfigurationProperties失效了 不能将配置类导入容器

以前,我定义属性值都是在application开头的配置文件的,有一天自定义了一个配置文件名为ldj.properties.结合注解 PropertySource 指定加载读取它,然后EnableConfigurationProperties测试发现,使用的都是默认值,没有读取配置的值. package com.dj.springtest.config.properties…

Hadoop 3.2.4 本机伪分布式安装

Hadoop 3.2.4 伪分布式安装 文章目录 Hadoop 3.2.4 伪分布式安装前言配置ssh免密登录下载安装包解压并调整配置文件解压安装包到当前位置调整配置文件hadoop-env.shyarn-env.shcore-site.xmlhdfs-site.xmlmapred-site.xmlyarn-site.xmlworkers 配置 启动验证启动与命令查验web页…

什么是矢量图

矢量图只能靠软件生成&#xff0c;这种类型的图像文件包含独立的分离图像&#xff0c;可以自由无限制的重新组合&#xff0c;文件中的图形元素称为对象&#xff0c;每个对象都是一个自成一体的实体&#xff0c;它具有颜色、形状、轮廓、大小和屏幕位置等属性。 矢量图形最大的优…

Photoshop 什么是位图?什么是矢量图?它们二者间有什么区别,不妨来看看

对于PS大家也都已经不陌生了&#xff0c;PS是一款非常强大的通用平面美术设计软件&#xff0c;大家刚学设计的朋友&#xff0c;都会基础位图和矢量图&#xff0c;那它们的区别是什么呢&#xff1f;下面小编就为大家讲解它们之间的分别。 位图与矢量图&#xff1a; 位图&#x…

AutoCAD输出矢量图

软件版本&#xff1a;AutoCAD 2020 输出为PDF文件&#xff0c;注意输出模式&#xff0c;显示窗口应包含要输出的图形。 安装软件Inkscape&#xff0c;打开Inkscape&#xff0c;导入刚才输出的PDF。注意选择导入模式。 更改页面大小&#xff0c;去除图像周围的空白区域。 另存为…

位图与矢量图的区别

相信大家在日常的工作过程中&#xff0c;经常会听到位图和矢量图&#xff0c;那么位图和矢量图的区别是什么呢&#xff1f; 1.定义 ①位图&#xff1a;称为点阵图像或栅格图像&#xff0c;是由称作像素&#xff08;图片元素&#xff09;的单个点组成的。这 些点可以进行不同…

androidstudio加载矢量图

VectorDrawable 是android SDK 21及以上版本才支持的方式&#xff0c;在它及它以上的版本中SDK可以支持矢量图。由于国内手机大多还是4.0的系统&#xff0c;因此在低版本的手机中无法使用矢量图。 在android studio的gradle plugin 更新到1.4版本的时候&#xff0c;googole通过…

graphpad图片怎么导出矢量图_怎样将PS图像输出为矢量图

展开全部 1、打开Photoshop软件&#xff0c;将需做矢量图的logo添加进来&#xff0c;并复e68a8462616964757a686964616f31333431353966制图层。 2、观察图形&#xff0c;我们先从外侧圆入手&#xff0c;外侧圆比较规整&#xff0c;用“快速选择”等方法的话效果不好&#xff0c…

如何在word里插入矢量图

在写论文时往往需要插入很多图&#xff0c;插入的图如果不是矢量图就会挨老板一遍又一遍批。现在来记录一下怎么让论文里的图片保持清晰度&#xff08;放大缩小图片都不会失真&#xff0c;一句话&#xff0c;不会变模糊&#xff09; 一、插入对象如visio对象 1. 找到 插入-&g…

R 语言储存矢量图

之前写的博客中有提及过如何在 R 语言中绘制矢量图&#xff0c;然后用于论文引用。但没有专门开一篇博客来进行说明比较&#xff0c;这里重新开一篇博客来进行说明。 通常保存为矢量图可能大多数时候是为了论文中的引用&#xff0c;所以格式一般为 EPS, PDF 这两种格式&#x…

android开发笔记之xml矢量图片

xml矢量图片 缩放矢量图形&#xff08;英语&#xff1a;Scalable Vector Graphics&#xff0c;SVG&#xff09;是一种基于可扩展标记语言&#xff08;XML&#xff09;&#xff0c;用于描述二维矢量图形的图形格式。 .svg格式相对于.jpg、.png甚至.webp具有较多优势&#xff1a…

html 引入 svg矢量图,前端可视化——SVG矢量图技术

SVG 1、SVG 是一种绘图技术,SVG 的全名叫可缩放矢量图形(Scalable Vector Graphics)。 2、SVG 使用 XML 格式定义图像。 3、可伸缩,不失真。 简单示例: stroke-width="2" fill="red" /> 复制代码 1、SVG的结构 他是标准的 XML 文档结构。 /p> &qu…

MATLAB导出矢量图

写论文的时候经常要用到矢量图&#xff0c;会用matlab的仿真图&#xff0c;借鉴以下两篇博文就行了。CSDN水文太多了&#xff0c;需要边找边验证… matlab波形图导出转换成矢量图 MATLAB导出矢量图结合Visio或Adobe illustrator处理图片

java 生成ai矢量图,PS和AI将图片转成矢量图

位图和矢量图 PS软件做的图都是位图&#xff0c;可以导出AI格式&#xff0c;但是不可能做成矢量图的。放大后会有马塞克&#xff0c;可以把分辨率调高一点&#xff0c;做出来的位图会清晰一些&#xff0c;但放大或缩小后&#xff0c;图片还是为失真&#xff0c;表现为像素点。 …