pgzrun 拼图游戏制作过程详解(4,5)

news2024/11/18 23:38:49

 4. 将小拼图位置随机打乱

  • 建立swap_Square(i,j)坐标互换函数
    将Gird[i]和Gird[j] 中的小拼图信息进行互换
def swap_Square(i,j):  # 两个拼图的位置互换
    temp_pos=Gird[i].pos
    Gird[i].pos=Gird[j].pos
    Gird[j].pos=temp_pos
  • 导入随机数模块
import random
  • 随机抽取10组小拼图将其坐标进行互换
for k in range(10):  # 随机抽取10组拼图 进行位置互换
    i=random.randint(0,23)
    j=random.randint(0,23)
    swap_Square(i, j)

执行效果如下图所示:

5. 实现拼图交换:

  • 设定变量click_time来储存鼠标点击次数,clickID_1、clickID_2分别来储存两个要互换的小拼图的索引。
click_time=0
clickID_1=clickID_2=-1
  • 监听鼠标点击事件,遍历所有小拼图,获取被点击小拼图的索引。
def on_mouse_down(pos,button): # 当鼠标被点击时
    global click_time ,clickID_1 , clickID_2
    for i in range(24):
        if Gird[i].collidepoint(pos): # 拼图对象被点击
            break
  • 根据点击次数的奇偶来确定两个要互换的小拼图的索引,实现小块之间的交换。
    if click_time%2==0 :
        clickID_1=i
    else:
        clickID_2=i
        swap_Square(clickID_1,clickID_2)
  • 鼠标每次点击将变量click_time增加1
click_time += 1

完整代码如下: 

import pgzrun
import random

TITLE="pgzrun 拼图游戏"
Square_size=125
WIDTH=Square_size*4
HEIGHT=Square_size*6

click_time=0
clickID_1=clickID_2=-1

Squares=[Actor("girl_01"),Actor("girl_02"),Actor("girl_03"),Actor("girl_04")
        ,Actor("girl_05"),Actor("girl_06"),Actor("girl_07"),Actor("girl_08")
        ,Actor("girl_09"),Actor("girl_10"),Actor("girl_11"),Actor("girl_12")
        ,Actor("girl_13"),Actor("girl_14"),Actor("girl_15"),Actor("girl_16")
        ,Actor("girl_17"),Actor("girl_18"),Actor("girl_19"),Actor("girl_20")
        ,Actor("girl_21"),Actor("girl_22"),Actor("girl_23"),Actor("girl_24")
         ]
Gird=[]
for i in range(6):
    for j in range(4):
        Square=Squares[i*4+j]
        Square.left=Square_size*j
        Square.top=Square_size*i
        Gird.append(Square)

def swap_Square(i,j):  # 两个拼图的位置互换
    temp_pos=Gird[i].pos
    Gird[i].pos=Gird[j].pos
    Gird[j].pos=temp_pos

for k in range(10):  # 随机抽取10组拼图 进行位置互换
    i=random.randint(0,23)
    j=random.randint(0,23)
    swap_Square(i, j)

def on_mouse_down(pos,button): # 当鼠标被点击时
    global click_time ,clickID_1 , clickID_2
    for i in range(24):
        if Gird[i].collidepoint(pos): # 拼图对象被点击
            break

    if click_time%2==0 :
        clickID_1=i
    else:
        clickID_2=i
        swap_Square(clickID_1,clickID_2)
    click_time += 1

def draw():
    screen.clear()
    for Square in Gird:
        Square.draw()

def update():
    pass

pgzrun.go()

pgzrun拼图游戏素材包下载

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

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

相关文章

ruoyi-nbcio移植过程中的一些问题记录

1、打包去掉测试出现 Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.22.2:test 错误 在pom.xml里增加下面 去掉测试 <!--添加配置跳过测试--> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId…

2023.05.27系统分析师考试案例分析及解析

案例分析真题1 阅读以下关于软件系统分析与建模的叙述&#xff0c;在纸上回答问题1至3. 说明: 某软件公司拟开发一套汽车租赁系统&#xff0c;科学安全和方便的管理租赁公司的各项业务&#xff0c;提高公司效率&#xff0c;提升利率。注册用户在使用系统镜像车辆预约时需执行…

利用Windows搭建Emby媒体库服务器,轻松实现无公网IP的远程访问

文章目录 1.前言2. Emby网站搭建2.1. Emby下载和安装2.2 Emby网页测试 3. 本地网页发布3.1 注册并安装cpolar内网穿透3.2 Cpolar云端设置3.3 Cpolar内网穿透本地设置 4.公网访问测试5.结语 1.前言 在现代五花八门的网络应用场景中&#xff0c;观看视频绝对是主力应用场景之一&…

css+js:实现tab切换线条跟随效果

目录 实现效果原理解析代码实现 实现效果 使用css和js实现一个tab切换的效果 原理解析 如上图 红色框框代表盒子,总宽度记作 totalWidth绿色框框代表每一项,宽度记作itemWidth深蓝色框框代表的是下划线,宽度记作activeWitdh 那么我们可以得到线的左边距是每一项的左边距加上…

通讯网关软件002——利用CommGate X2HTTP-U实现HTTP访问OPC UA Server

本文介绍利用CommGate X2HTTP-U实现HTTP访问OPC UA Server。CommGate X2HTTP是宁波科安网信开发的网关软件&#xff0c;软件可以登录到网信智汇(wangxinzhihui.com)下载。 【案例】如下图所示&#xff0c;实现上位机通过HTTP来获取OPC UA Server的数据。 【解决方案】设置网关机…

c++ 中的函数指针

以下图片演示了c中函数指针的用法。如下图可见&#xff0c;把函数地址赋值给函数指针&#xff0c;用函数名或者函数名的地址&#xff0c;都可以&#xff0c;c编译器不报错。即 ptr f 和 ptr &f 都对。但准确的话&#xff0c;函数名就是地址&#xff0c;在编译时候&#x…

19 视图定义 union 是根据第一个 select 字段列表顺序,来进行 merge 的

前言 这个问题主要是 在之前存在这样的一个问题, 在生产环境上面 按照 我的直观理解, mysql 应该是根据 key 进行 merge, 所以 select 的顺序应该是 “不重要”??, 但是 结果我理解错了 然后 线上的查询也出现了问题, 发现很奇怪的问题, 明明 key01 列 是 id, 但是有一部…

【Linux问题】This account is currently not available.

在切换mysql用户时候出现下面问题 Last login: Fri Sep 15 09:32:46 CST 2023 on pts/0 This account is currently not available.查看 mysql用户信息 cat /etc/passwd | grep mysql他是 mysql:x:27:27:MySQL Server:/var/lib/mysql:/sbin/nologin把 /sbin /nologin 改成 /b…

使用阿里PAI DSW部署Stable Diffusion WebUI

进入到网址https://pai.console.aliyun.com/里边。 点击创建实例。 把实例名称填写好&#xff0c;选择GPU规格&#xff0c;然后选择实例名称是ecs.gn6v-c8g1.2xlarge。 选择stable-diffusion-webui-env:pytorch1.13-gpu-py310-cu117-ubuntu22.04&#xff0c;然后点击下一步。…

云原生Kubernetes:K8S集群使用带凭证的harbor仓库

目录 一、理论 1.部署harbor 创建私有项目&#xff0c;使用凭证登录 二、实验 1.部署harbor 创建私有项目&#xff0c;使用凭证登录 三、问题 1.harbor页面无法打开 2.生成harbor 登录凭据资源清单报错 3.tomcat-deployment 资源生成报错 一、理论 1.部署harbor 创建私…

CSV文件打开乱码解决方案

思路 借助第三方软件转码即可。 案例 打开CSV文件显示如下&#xff1a; 导入到python中&#xff0c;借助pandas文件读取 另存为csv文件格式即可 代码如下&#xff1a; import pandas as pd df pd.read_csv(rD:\BaiduNetdiskDownload\csv&xlsx版数据\城市产业创新指数…

人工智能现在可以从文本中生成具有CD音质的音乐,而且只会越来越好

想象一下&#xff0c;键入“戏剧性的介绍音乐”并听到一首飙升的交响乐&#xff0c;或者编写“令人毛骨悚然的脚步声”并获得高质量的音效。这是稳定音频的承诺&#xff0c;一个文本到音频的人工智能模型周三宣布由能合成立体声的稳定人工智能44.1千赫来自文字描述的音乐或声音…

antv-G6知识图谱安装--使用(实例)--连接线修改成动态,并添加跟随线移动的光圈,设置分支跟踪定位功能

这系列文章主要是完成一个图谱的自定义修改&#xff08;最近太忙了长篇分段更新自己使用流程&#xff09; 1. 连接线修改成动态&#xff0c;并添加跟随线移动的光圈 2. 自定义卡片样式和文字内容 3. 自定义伸缩节点的样式&#xff0c;并添加动画样式 3. 自定义弹窗样式 4. 自定…

Redis缓存更新策略、详解并发条件下数据库与缓存的一致性问题以及消息队列解决方案

0、前言 我们知道&#xff0c;缓存由于在内存中&#xff0c;数据处理速度比直接操作数据库要快很多&#xff0c;因此常常将数据先读到缓存中&#xff0c;再进行查询、更新等操作。 但与之而来的问题就是&#xff0c;内存中的数据不仅没有持久化&#xff0c;而且需要保证…

Dajngo02_第一个Django案例

Dajngo02_第一个Django案例 经过之前学习&#xff0c;我们已经可以创建Django环境 现在开始尝试快速使用Django开发一个案例 案例&#xff1a;利用Django实现一个查看当前时间的web页面。 在django中要提供数据展示给用户,一般情况下我们需要完成3个步骤&#xff1a; 在urls.…

如何选择合适的预测性维护工具和平台

随着技术的不断进步&#xff0c;预测性维护&#xff08;Predictive Maintenance&#xff0c;简称PdM&#xff09;已经成为许多企业提高生产效率、减少停机时间和维护成本的核心策略。然而&#xff0c;选择适合自己业务需求的PdM工具和平台可能并不容易。本文将为您提供一些关键…

传统机器学习总结以及深度学习初识

传统机器学习总结以及深度学习初识 文章目录 前言一、传统机器学习总结1.1. 监督学习算法&#xff08;Supervised Learning&#xff09;1.2. 无监督学习算法&#xff08;Unsupervised Learning&#xff09; 二、深度学习初识三、github与gitee的介绍3.1. GitHub&#xff1a;3.2…

Sqlserver 监控使用磁盘空间情况

最近遇到一个小问题&#xff1a;为了保存以往的一些数据&#xff0c;间了大量临时表&#xff0c;导致SQLserver 数据增长过快&#xff0c;不得不想个办法监控磁盘空间使用情况。 网上一般有几种办法&#xff1a; 一是使用 dm_os_volume_stats函数&#xff0c;缺点是 无法获取非…

【实践篇】MySQL执行计划详解

文章目录 本文知识大纲速览1. 前言2. 基本介绍1. 什么是执行计划2. 如何查看执行计划3. 执行计划的组成部分 3. 执行计划的关键元素1. id2. select_type3. table:4. type:5. possible_keys:6. key:7. key_len8. ref:9. rows:10. Extra 4. 底层原理5. 执行计划示例解读本文知识图…

本地引入 Axios 报错

目录 报错信息&#xff1a; 报错截图&#xff1a; ​编辑报错原因&#xff1a; 解决方法&#xff1a; ​编辑运行结果成功&#xff1a; 报错信息&#xff1a; Cannot read properties of undefined (reading post) TypeError: Cannot read properties of undefined (rea…