打地鼠python程序设计说明,打地鼠游戏界面设计

这篇文章主要介绍了打地鼠python程序设计说明,具有一定借鉴价值,需要的朋友可以参考下。希望大家阅读完这篇文章后大有收获,下面让小编带着大家一起了解一下。

Pygame库是专门为了帮助做出的游戏和其他多媒体应用Python编程语言的一个开放源代码模块。本文将利用Pygame模块制作一个打地鼠的小游戏,快跟随小编一起学习一下吧用python如何画雪人。编程学习资料点击免费领取

前言

今天给大家写一个个打地鼠小游戏,废话不多说直接开始~

开发工具

Python版本: 3.6.4

相关模块:

pygame模块;

以及一些Python自带的模块。

环境搭建

安装Python并添加到环境变量,pip安装需要的相关模块即可。

原理简介

打地鼠的游戏规则相信大家都知道,这里就不多介绍了,反正就是不停地拿锤子打洞里钻出来的地鼠~

首先,让我们确定一下游戏中有哪些元素。打地鼠打地鼠,地鼠当然得有啦,那我们就写个地鼠的游戏精灵类:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

'''地鼠'''

class Mole(pygame.sprite.Sprite):

    def __init__(self, image_paths, position, **kwargs):

        pygame.sprite.Sprite.__init__(self)

        self.images = [pygame.transform.scale(pygame.image.load(image_paths[0]), (101, 103)),

                       pygame.transform.scale(pygame.image.load(image_paths[-1]), (101, 103))]

        self.image = self.images[0]

        self.rect = self.image.get_rect()

        self.mask = pygame.mask.from_surface(self.image)

        self.setPosition(position)

        self.is_hammer = False

    '''设置位置'''

    def setPosition(self, pos):

        self.rect.left, self.rect.top = pos

    '''设置被击中'''

    def setBeHammered(self):

        self.is_hammer = True

    '''显示在屏幕上'''

    def draw(self, screen):

        if self.is_hammer: self.image = self.images[1]

        screen.blit(self.image, self.rect)

    '''重置'''

    def reset(self):

        self.image = self.images[0]

        self.is_hammer = False

显然,地鼠有被锤子击中和未被锤子击中这两种状态,所以需要加载两张图,当地鼠被击中时从未被击中的地鼠状态图切换到被击中后的地鼠状态图(ps:图可能不像地鼠)。

然后我们再来定义一下锤子这个游戏精灵类,和地鼠类似,锤子也有未锤下去和已锤下去两种状态,只不过锤下去之后需要迅速恢复回未锤下去的状态,具体而言,代码实现如下:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

class Hammer(pygame.sprite.Sprite):

    def __init__(self, image_paths, position, **kwargs):

        pygame.sprite.Sprite.__init__(self)

        self.images = [pygame.image.load(image_paths[0]), pygame.image.load(image_paths[1])]

        self.image

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

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

相关文章

ORACLE Primavera Unifier v23.12 最新虚拟机(VM)分享下载

引言 根据上周的计划,我近日简单制作了一个基于ORACLE Primavera Unifier 最新版23.12的虚拟机演示环境,里面包括了unifier的全套系统服务 此虚拟系统环境仅用于演示、培训和测试目的。如要在生产环境中使用此虚拟机,请您与Oracle 销售代表联…

灵芝,到2025年有望达到9.2亿美元

灵芝是一种传统的药食两用菌,其具有丰富的营养成分和医疗价值,因此备受关注。全球市场分析 从全球市场来看,近年来灵芝的市场需求持续增长。据估计,2019年全球灵芝市场规模为4.1亿美元,到2025年有望达到9.2亿美元。市场…

Python中Selenium模块的使用详解

Selenium的介绍、配置和调用 Selenium(浏览器自动化测试框架) 是一个用于Web应用程序测试的工具。Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。支持的浏览器包括IE(7, 8, 9, 10, 11),Firefox,Safari&a…

【C语言】字符串 和 ctype.h 中的函数 练习

前面总结了有关字符串和ctype.h的文章,接下来就以几个例子来练习一下,以巩固之前的基础概念。注意:以下示例都有更简单更高效的解决方法,但本次仅以巩固基础为目的,所以方法可能稍作繁琐 Leetcode 344.反转字符串 编…

【第5期】前端Vue使用Proxy+Vuex(store、mutations、actions)跨域调通本地后端接口

本期简介 本期要点 本地开发前后端如何跨域调用全局请求、响应处理拦截器处理封装HTTP请求模块编写API请求映射到后端API数据的状态管理 一、 本地开发前后端如何跨域调用 众所周知,只要前端和后端的域名或端口不一样,就存在跨域访问,例如&…

数模学习day07-基于熵权法对Topsis模型的修正

初步理解 这里看看就好 熵权法是一种常用的多指标综合评价方法,通过计算指标的熵值来确定各指标的权重。而Topsis模型则是一种常用的多指标决策模型,用于评估不同方案的优劣。 在基于熵权法的Topsis模型中,可以对熵权法进行一些修正来提高模型…

在word文档中自制代码段样式

附: 在word中插入高亮代码的网站 HighlightCode:https://highlightcode.com/ CodeInWord:http://codeinword.com/ 一、新建代码段样式 点击下拉按钮,选择创建样式,命名为代码段,然后点击修改 点击格式&a…

【Linux驱动】Linux中断(二)—— 按键中断驱动

前一篇已经在设备树的 gpio-led 节点中引入了中断信息&#xff0c;接下来将通过API来获取设备树中的中断信息。gpio-led 节点具体内容如下&#xff1a; gpio-key0 {pinctrl-names "default";pinctrl-0 <&pinctrl_gpio_keys>; // pinctrl子系…

linux性能优化

文章目录 性能优化图CPU进程和cpu原理性能指标 性能优化图 CPU 进程和cpu原理 进程与线程&#xff1a; 进程是程序的执行实例&#xff0c;有自己的地址空间和系统资源。线程是进程内的执行单元&#xff0c;共享进程的资源。在多核系统中&#xff0c;使用多线程可以更好地利用多…

【JS逆向】某乐网登陆密码加密逆向分析探索!

一个网站的登陆密码加密逆向解密分析&#xff0c;没有混淆&#xff0c;加密代码还是比较好找的&#xff0c;只需要多花点耐心&#xff0c;多尝试&#xff0c;就能找到关键的加密代码片段。 网址&#xff1a; aHR0cHMlM0EvL29hdXRoLmQuY24vYXV0aC9nb0xvZ2luLmh0bWw 登陆密码加密…

炼石免改造加密亮相2023商密大会,参编密评行业报告发布

2023年8月9-11日&#xff0c;2023商用密码大会在河南省郑州国际会展中心圆满召开&#xff0c;是我国商密领域规格最高、规模最大、影响最广的全国性商用密码盛会&#xff0c;也是《密码法》和新修订的《商用密码管理条例》正式实施以来的第一次全国性的盛会。大会以“密码赋能美…

excel 插件:Rainbow Analyst Crack

一个插件中包含四种 EXCEL 审核工具检测并修复隐藏的电子表格错误 不要满足于更少&#xff0c;四种领先的电子表格审计工具合二为一 Rainbow Analyst&#xff08;因其对颜色编码的独特强大使用而得名&#xff09;结合了世界级电子表格审核功能的多个领域&#xff1a; Excel™ …

关于如何设计出优秀的 URL

Kyle Aster 在 2010 年就写过为什么认真设计 URL 很重要&#xff1a; URL 是通用的&#xff0c;它们适用于 Firefox, Chrome, Safari, Internet Explorer, cURL, wget, 以及 iPhone&#xff0c;Android, 甚至便签。它们是网络的唯一通用语法&#xff0c;不要把这当作理所当然。…

LCR 145. 判断对称二叉树

解题思路&#xff1a; class Solution {public boolean checkSymmetricTree(TreeNode root) {return root null || recur(root.left, root.right);}boolean recur(TreeNode L, TreeNode R) {if(L null && R null) return true;if(L null || R null || L.val ! R.v…

Java 深入理解 AQS 和 CAS 原理

AQS 介绍 AQS 全称是 Abstract Queued Synchronizer&#xff0c;一般翻译为同步器。它是一套实现多线程同步功能的框架&#xff0c;由大名鼎鼎的 Doug Lea 操刀设计并开发实现的。AQS 在源码中被广泛使用&#xff0c;尤其是在 JUC&#xff08;Java Util Concurrent&#xff09;…

天融信Topgate搭建

一、下载防火墙 首先下载防火墙&#xff0c;在虚拟机中打开。 二、网卡配置 防火墙设备上有5块网卡&#xff0c;分别对应接口eth1~5 这里要手动添加&#xff0c;还有需要注意vmnet1&#xff0c;他的必须是192.168.1.0&#xff0c;并且为DHCP 其它vlan无需设置DHCP 自定义网…

跨站脚本攻击漏洞XSS绕过22种方式总结

XSS漏洞简介 跨站脚本攻击在目前这个时间节点还是属于一个排位比较高的漏洞&#xff0c;在OWASP TOP10 2021中隶属于注入型漏洞&#xff0c;高居TOP3的排位&#xff0c;可见这个漏洞的普遍性。跨站脚本攻击的学习中我们主要需要明白的是跨站的含义&#xff0c;以及XSS的核心。…

企业数据存储监控

随着组织及其网络基础架构的不断扩展&#xff0c;存储将不可避免地成为一项挑战&#xff0c;随着存储需求的增长&#xff0c;调配更多存储资源的需求也会随之增长。为基础架构配置了更多存储资源后&#xff0c;它们需要不间断地运行&#xff0c;并且应该免受威胁。从本质上讲&a…

Syn_SegNet:用于常规 3T MRI 中超高场 7T MRI 合成和海马亚场分割的联合深度神经网络

Syn_SegNet: A Joint Deep Neural Network for Ultrahigh-Field 7T MRI Synthesis and Hippocampal Subfield Segmentation in Routine 3T MRI Syn_SegNet&#xff1a;用于常规 3T MRI 中超高场 7T MRI 合成和海马亚场分割的联合深度神经网络背景贡献实验为了确定哪个模态分割最…

list1.Sort((m, n) => m.Id - n.Id); id是double类型的为什么回报错

问题产生的地方 原因 对于 double 类型的属性&#xff0c;不能直接使用减法运算符进行比较。减法运算符只能用于数值类型&#xff0c;而 double 是浮点数类型。 要在 double 属性上进行排序&#xff0c;可以使用 CompareTo 方法或者使用自定义的比较器。 更改 要在 double 属性…