Python做一个中秋节嫦娥投食小游戏

news/2024/5/5 20:08:42/文章来源:https://blog.csdn.net/ooowwq/article/details/126652638

山河远阔,烟火人间,又一年,千里婵娟~

今天给大家带来的是给玉兔投喂月饼的小游戏。八月十五中秋夜晚,让我们对着月亮许愿:希望我们在意和在意我们的人,诸邪避退、百事无忌、平安喜乐、万事胜意。提前祝大家中秋节快乐。

中秋节的起源

中秋节起源于上古时代,普及于汉代,定型于唐朝初年,盛行于宋朝以后。中秋节是秋季时令习俗的综合,其所包含的节俗因素,大都有古老的渊源。中秋节以月之圆兆人之团圆,为寄托思念故乡,思念亲人之情,祈盼丰收、幸福,成为丰富多彩、弥足珍贵的文化遗产。

游戏设计

1、游戏背景

故事的开始🌕,中秋佳节至,玉兔因为贪玩被赶下人间,抬头望向天际,总是不自觉的会想起苏轼的词:“但愿人久,千里共婵娟”。这是一年中,最温柔又最有诗意的节日,可惜玉兔与嫦娥今年不能相聚,但嫦娥为了不让玉兔饿肚子,在八月十五中秋节的晚上,嫦娥在月球为玉兔投食月饼……🤔为了让玉兔吃到更多,嫦娥开启全民投食😃,只要给博主三连,就能给玉兔投食月饼啦!难道你忍心看到可爱的玉兔🐰饿肚子吗?快点行动起来吧!记得三连噢!

2、功能设计

人物:玉兔使用鼠标来控制左右运动

月饼:随机从上界降落至下界,当碰到玉兔时,加10分,落到下界减5分。

月亮:随机从上界降落至下界,当碰到玉兔时,减5分,且血条减一格。

血条:HP

值为3格时,生命为满值,当碰到月亮时减1格。减为0格时,游戏结束。

开始:开始按钮,鼠标点击即开始游戏

重来:重来按钮,鼠标点击即重新开始

效果展示

兔兔是不是很可爱嘞!

代码素材

环境如下

  • python 3.8.0
  • pygame 2.1.0

代码

看看素材地址是否一致,不一致要改成素材本地的地址。

import pygame
import randompygame.init()
sc = pygame.display.set_mode((600, 695))
pygame.display.set_caption("玉兔吃月饼——猿童学祝大家中秋节快乐!")
basket = pygame.image.load("pic/basket.png")
bj = pygame.image.load("pic/bj.jpg")
bomb = pygame.image.load("pic/bomb.png")
coin = pygame.image.load("pic/coin.png")
start = pygame.image.load("pic/start.jpg")
over = pygame.image.load("pic/over.jpg")
ihp = pygame.image.load("pic/hp.png")
btn_up = pygame.image.load("pic/btn_up.png")
btn_down = pygame.image.load("pic/btn_down.png")
bbtn_up = pygame.image.load("pic/bbtn_up.png")
bbtn_down = pygame.image.load("pic/bbtn_down.png")
word = "HP"
font = pygame.font.SysFont("", 32)
text = font.render(word, True, (75, 217, 65))
score = 0
text1 = font.render(str(score), True, (255, 255, 255))
bx = 0
lx, ly = [], []
fx, fy = [], []
speedy = 1
hp = 4
# 月饼生成的序列,通过序列可以源源不断生成月饼
for i in range(0, 4):tx = random.randint(0, 586)ty = (i - 1) * 150lx.append(tx)ly.append(ty)# 月亮生成的序列
for i in range(0, 2):x = random.randint(0, 586)y = (i - 1) * 300fx.append(x)fy.append(y)# 按钮类和按钮点击事件
class Button(object):def __init__(self, btn_up, btn_down, position):self.btn_up = btn_upself.btn_down = btn_downself.position = positiondef isOver(self):point_x, point_y = pygame.mouse.get_pos()x, y = self.positionw, h = self.btn_down.get_size()in_x = x - w / 2 < point_x < x + w / 2in_y = y - h / 2 < point_y < y + h / 2return in_x and in_ydef isPressed(self):if event.type == pygame.MOUSEBUTTONDOWN:point_x, point_y = pygame.mouse.get_pos()x, y = self.positionw, h = self.btn_down.get_size()in_x = x - w / 2 < point_x < x + w / 2in_y = y - h / 2 < point_y < y + h / 2return Truedef render(self):w, h = self.btn_up.get_size()x, y = self.positionif self.isOver():sc.blit(self.btn_down, (x - w / 2, y - h / 2))else:sc.blit(self.btn_up, (x - w / 2, y - h / 2))button = Button(btn_up, btn_down, (288, 460))bbutton = Button(bbtn_up, bbtn_down, (288, 460))while True:for event in pygame.event.get():if event.type == pygame.QUIT:exit()# 游戏开始界面sc.blit(start, (0, 0))bbutton.render()if bbutton.isPressed():hp = 3score = 0text1 = font.render(str(score), True, (255, 255, 255))# 进入游戏if hp > 0 and hp < 4 and score >= 0:sc.blit(bj, (0, 0))sc.blit(text, (10, 583))sc.blit(text1, (570, 570))sc.blit(basket, (bx, 540))# 难度变化if score <= 50:speedy = 0.4if score > 100:speedy = 0.8if score > 150:speedy = 1.2if score > 200:speedy = 1.6for i in range(len(lx)):sc.blit(coin, (lx[i], ly[i] - 600))ly[i] += speedyif ly[i] > 610 + 600:ly[i] = 600lx[i] = random.randint(0, 540)score -= 5text1 = font.render(str(score), True, (255, 255, 255))# 玉兔的宽62 高 48# 碰撞判断if lx[i] + 24 > bx and \lx[i] + 24 < bx + 62 and \ly[i] >= 1120 and \ly[i] <= 1140:ly[i] = 600lx[i] = random.randint(0, 586)score += 10text1 = font.render(str(score), True, (255, 255, 255))for i in range(len(fx)):sc.blit(bomb, (fx[i], fy[i] - 600))fy[i] += speedyif fy[i] > 610 + 600:fy[i] = 600fx[i] = random.randint(0, 545)if fx[i] + 24 > bx and \fx[i] + 24 < bx + 62 and \fy[i] >= 1120 and \fy[i] <= 1140:hp -= 1fy[i] = 600fx[i] = random.randint(0, 586)# 篮子跟随鼠标运动if event.type == pygame.MOUSEMOTION:mx, my = pygame.mouse.get_pos()bx = mx - 24if bx < 0:bx = 0if bx > 610 - 62:bx = 548# 通过键盘控制篮子keys = pygame.key.get_pressed()if keys[pygame.K_a] or \keys[pygame.K_RIGHT]:bx += 5if keys[pygame.K_d] or \keys[pygame.K_LEFT]:bx += -5for i in range(0, hp):sc.blit(ihp, (22 * i + 40, 585))# 重新开始游戏if hp == 0 or score < 0:# 重新初始化游戏bx = 0speedy = 1# 月饼生成的序列for i in range(len(lx)):lx[i] = random.randint(0, 586)ly[i] = (i - 1) * 150# 月亮生成的序列for i in range(len(fx)):fx[i] = random.randint(0, 586)fy[i] = (i - 1) * 300sc.blit(over, (0, 0))button.render()# 点击按钮后重新开始游戏if button.isPressed():hp = 3score = 0text1 = font.render(str(score), True, (255, 255, 255))pygame.display.update()

素材

框框里的是图片的名字,可以在网上找自己喜欢的素材替换,名字一致即可,下面有一些也提供了多个选择。

素材放在pic文件夹中,有如下材料:

basket.png


bj.jpg

bomb.png

coin.png


start.jpg

over.jpg

这里不想找了,所以就一样了,大家可以更换成自己喜欢的背景。

hp.png

btn_up.png

btn_down.png

bbtn_up.png

bbtn_down.png

结束语

”但愿人长久,千里共婵娟“,比起这对现实无奈的诗词,我更希望是:”但愿人长久,一起过中秋”

中秋是一个月亮的狂欢,一群人月饼的孤单。

如果你愿意一层一层地拨开我的心,你会发现,你会哭泣,因为网上个五仁月饼🤣🤣🤣

给个三连吧,祝你诸邪避退、百事无忌、平安喜乐、万事胜意、中秋快乐😊😊😊

最后给大家分享一套Python教程:代码总是学完就忘记?100个爬虫实战项目!让你沉迷学习丨学以致用丨下一个Python大神就是你!

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

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

相关文章

VMware Workstation虚拟机怎么和主机之间互传文件?

VMware Workstation虚拟机怎么和主机之间互传文件?前言 工具/材料 操作方法前言 在使用Windows 10工作时会遇到形形色色的问题,比如虚拟机需要与主机之间互传文件。那么如何进行设置呢?下面小编与你分享具体步骤和方法。 工具/材料 Windows 10操作系统 操作方法启动Windows …

前端JS-Day21

client系列:获得可视区域的相关信息clientWidth和offsetWidth区别:clientWidth只包含内容和padding,offsetWidth包含内容和内外边框。 立即执行函数:无需调用,直接执行。且独立创建了一个作用域。(function() {})(); (function(){}()); 两种写法 像素比:即devicePixe…

STM32使用串口空闲中断(IDLE)和 DMA接收一串数据流

STM32使用串口空闲中断&#xff08;IDLE&#xff09;和 DMA接收不定长数据 方法一、使用宏定义判断IDLE标志位 空闲的定义是总线上在一个字节的时间内没有再接收到数据&#xff0c;USART_IT_IDLE空闲中断是检测到有数据被接收后&#xff0c;总线上在一个字节的时间内没有再接…

spring cloud alibaba (一)

Spring Cloud Alibaba官网:https://spring.io/projects/spring-cloud-alibaba gitHub:https://github.com/alibaba/spring-cloud-alibaba这节主要目标:掌握nacos使用 了解服务与服务之间调用1、简介 1.1、什么是分布式 将一套系统拆分成不同子系统部署在不同服务器上(这叫分…

flex常用布局

公共样式:<style>* {margin: 0;padding: 0;}.has-flex {display: flex;}</style> 垂直居中 子元素左右分布 css.father-one {width: 100%;height: 200px;background-color: #fffcef;align-items: center; /*纵轴)方向上的对齐方式。*/justify-content: space-bet…

5.2 创建个人中心页面-前端部分

&#x1f60a;如果写的可以帮到你&#xff0c;可以点个赞吗&#xff0c;你的支持就是我写下去的动力。&#x1f60a; 本文阅读大概 10 分钟, 自己写加思考大概 1 ~ 2 小时。建议&#xff1a;代码可以手抄&#xff0c; 但不要复制。 1. 整体框架 2. 前端页面布局 使用 bootstra…

达梦数据库图形化工具

图形化工具列表 (1)DM数据库配置助手 (2)DM服务查看器 (3)DM管理工具 (4)DM控制台工具 (5)DM数据库迁移工具 (6)DM性能监测工具图形化工具详解 界面展示DM数据库配置助手[dmdba@localhost tool]$ ./dbca.sh DM服务查看器DM管理工具DM控制台工具DM数据库迁移工具DM性能监测工具功…

马拉车算法

这篇博客写的非常清晰 https://zhuanlan.zhihu.com/p/549242325 给定一个字符串,问有多少个以 k,f,c 结尾的回文子串。#include<bits/stdc++.h> using namespace std; #define lowbit(x) x&(-x) #define ll long long const int maxn=1e6+5; int n,sum; ll len[maxn…

22-09-04 西安 谷粒商城(01)MySQL主从复制、MyCat读写分离、MyCat分库分表

人人尽说江南好&#xff0c;游人只合江南老。 春水碧于天&#xff0c;画船听雨眠。 MySQL主从复制 mysql主从复制&#xff1a;分摊读写压力&#xff08;cpu计算压力&#xff09; 写交给主库&#xff0c;读有主从分摊处理&#xff08;原因是写操作较少&#xff0c;读操作较多&…

面试官:单核 CPU 支持 Java 多线程吗?为什么?被问懵了!

由于现在大多计算机都是多核CPU,多线程往往会比单线程更快,更能够提高并发,但提高并发并不意味着启动更多的线程来执行。更多的线程意味着线程创建销毁开销加大、上下文非常频繁,你的程序反而不能支持更高的TPS。 时间片 多任务系统往往需要同时执行多道作业。作业数往往大…

ABAP-LP01和PDF打印机配置

事务代码SPAD1.LP01配置2.PDF配置

Netty+WebSocket整合STOMP协议

1.STOMP协议简介 常用的WebSocket协议定义了两种传输信息类型:文本信息和二进制信息。类型虽然被确定,但是他们的传输体是没有规定的,也就是说传输体可以自定义成什么样的数据格式都行,只要客户端和服务端约定好,得到数据后能够按照约定的语义解析数据就好。相较于Http协议…

猿创征文|我的后端成长之路(985科班两年,我发现了大学正确打开方式)

零.前言 当看到官方的这个活动的时候&#xff0c;我突然感到手指充满了力量&#xff0c;好像是我的键盘要向我尖端放电&#xff0c;谁还不是怀着满腔的热忱来写这篇文章帮助未来的学弟学妹们避坑呢&#xff1f;(其实是为了活动的奖励&#x1f917;)。不过不要在意这些细节&…

本地连接是干什么的?

当您创建家庭或小型办公网络时&#xff0c;运行 windows XP Professional 或 windows XP home edition 的计算机将连接到局域网 (Lan)。 安装 windows XP 时&#xff0c;将检测您的网络适配器&#xff0c;而且将创建本地连接。 像所有其他连接类型一样&#xff0c;它将出现在…

【深蓝学院】- Multiplane Images and Neural Rendering

01 view Synthesis problem Definition 02 View synthesis with multiplane Image(MPI) MPI的缺陷&#xff1a; 不是真正的三维表达不同视角观测的RGB是不变的 与MPI不一样的地方&#xff1a;不是手工设计的&#xff0c;而是整体输入 不同视角的RGB是不一样的 缺陷&#xff1…

Pytorch优化器全总结(一)SGD、ASGD、Rprop、Adagrad

目录 写在前面 一、 torch.optim.SGD 随机梯度下降 SGD代码 SGD算法解析 1.MBGD&#xff08;Mini-batch Gradient Descent&#xff09;小批量梯度下降法 2.Momentum动量 3.NAG(Nesterov accelerated gradient) SGD总结 二、torch.optim.ASGD随机平均梯度下降 三、torc…

【手把手】ios苹果打包——遇见项目实战|超详细的教程分享

六年代码两茫茫&#xff0c;不思量&#xff0c;自难忘 6年资深前端主管一枚&#xff0c;只分享技术干货&#xff0c;项目实战经验 关注博主不迷路~ 文章目录前言weex介绍eeui介绍一、安装CocoaPods1.CocoaPods介绍2.CocoaPods的安装二、登录开发者中心四、添加测试手机设备五、…

2022最新iOS证书(.p12)、描述文件(.mobileprovision)申请和HBuider打包及注意注意事项

制作p12证书1、在钥匙串界面中,选中安装好的开发者证书,【右键】选择导出在弹出的界面中3、在接下来的弹窗中填写p12文件的安装密码(后面他人安装该p12文件时需要输入这个密码,重要)4、继续上面的步骤,这里需要输入电脑的开机密码,p12开发者证书到这里即制作完成。以上就…

【芯片前端】根据数据有效选择输出的握手型FIFO结构探究

前言 之前要做一个一读多写的fifo&#xff0c;也就是master写入数据到fifo中&#xff0c;多个slave读取数据&#xff0c;结构如下图所示&#xff1a; 由于slave需要的数据一致&#xff0c;fifo内只需要例化一个ram以节约空间。这个fifo的具体结构下次博客中再来讨论。在这个fi…

Git 之 revert

转自: Git 之 revertrevert 可以撤销指定的提交内容,撤销后会生成一个新的commit。 1、两种commit: 当讨论 revert 时,需要分两种情况,因为 commit 分为两种:一种是常规的 commit,也就是使用 git commit 提交的 commit; 另一种是 merge commit,在使用 git merge 合并两…