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

中秋节的起源
中秋节起源于上古时代,普及于汉代,定型于唐朝初年,盛行于宋朝以后。中秋节是秋季时令习俗的综合,其所包含的节俗因素,大都有古老的渊源。中秋节以月之圆兆人之团圆,为寄托思念故乡,思念亲人之情,祈盼丰收、幸福,成为丰富多彩、弥足珍贵的文化遗产。
1、游戏背景
故事的开始?,中秋佳节至,玉兔因为贪玩被赶下人间,抬头望向天际,总是不自觉的会想起苏轼的词:“但愿人久,千里共婵娟”。这是一年中,最温柔又最有诗意的节日,可惜玉兔与嫦娥今年不能相聚,但嫦娥为了不让玉兔饿肚子,在八月十五中秋节的晚上,嫦娥在月球为玉兔投食月饼……?为了让玉兔吃到更多,嫦娥开启全民投食?,只要给博主三连,就能给玉兔投食月饼啦!难道你忍心看到可爱的玉兔?饿肚子吗?快点行动起来吧!记得三连噢!

2、功能设计
人物:玉兔使用鼠标来控制左右运动
月饼:随机从上界降落至下界,当碰到玉兔时,加10分,落到下界减5分。
月亮:随机从上界降落至下界,当碰到玉兔时,减5分,且血条减一格。
血条:HP
值为3格时,生命为满值,当碰到月亮时减1格。减为0格时,游戏结束。
开始:开始按钮,鼠标点击即开始游戏
重来:重来按钮,鼠标点击即重新开始

兔兔是不是很可爱嘞!
环境如下
代码
看看素材地址是否一致,不一致要改成素材本地的地址。
import pygame
import random
# 全部源码和素材都在这个群了 279199867
pygame.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) * 150
lx.append(tx)
ly.append(ty)
# 月亮生成的序列
for i in range(0, 2):
x = random.randint(0, 586)
y = (i - 1) * 300
fx.append(x)
fy.append(y)
# 按钮类和按钮点击事件
class Button(object):
def __init__(self, btn_up, btn_down, position):
self.btn_up = btn_up
self.btn_down = btn_down
self.position = position
def isOver(self):
point_x, point_y = pygame.mouse.get_pos()
x, y = self.position
w, h = self.btn_down.get_size()
in_x = x - w / 2 < point_x < x + w / 2
in_y = y - h / 2 < point_y < y + h / 2
return in_x and in_y
def isPressed(self):
if event.type == pygame.MOUSEBUTTONDOWN:
point_x, point_y = pygame.mouse.get_pos()
x, y = self.position
w, h = self.btn_down.get_size()
in_x = x - w / 2 < point_x < x + w / 2
in_y = y - h / 2 < point_y < y + h / 2
return True
def render(self):
w, h = self.btn_up.get_size()
x, y = self.position
if 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 = 3
score = 0
text1 = 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.4
if score > 100:
speedy = 0.8
if score > 150:
speedy = 1.2
if score > 200:
speedy = 1.6
for i in range(len(lx)):
sc.blit(coin, (lx[i], ly[i] - 600))
ly[i] += speedy
if ly[i] > 610 + 600:
ly[i] = 600
lx[i] = random.randint(0, 540)
score -= 5
text1 = 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] = 600
lx[i] = random.randint(0, 586)
score += 10
text1 = font.render(str(score), True, (255, 255, 255))
for i in range(len(fx)):
sc.blit(bomb, (fx[i], fy[i] - 600))
fy[i] += speedy
if fy[i] > 610 + 600:
fy[i] = 600
fx[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 -= 1
fy[i] = 600
fx[i] = random.randint(0, 586)
# 篮子跟随鼠标运动
if event.type == pygame.MOUSEMOTION:
mx, my = pygame.mouse.get_pos()
bx = mx - 24
if bx < 0:
bx = 0
if bx > 610 - 62:
bx = 548
# 通过键盘控制篮子
keys = pygame.key.get_pressed()
if keys[pygame.K_a] or \
keys[pygame.K_RIGHT]:
bx += 5
if keys[pygame.K_d] or \
keys[pygame.K_LEFT]:
bx += -5
for i in range(0, hp):
sc.blit(ihp, (22 * i + 40, 585))
# 重新开始游戏
if hp == 0 or score < 0:
# 重新初始化游戏
bx = 0
speedy = 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) * 300
sc.blit(over, (0, 0))
button.render()
# 点击按钮后重新开始游戏
if button.isPressed():
hp = 3
score = 0
text1 = 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大神就是你!
关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭4年前。Improvethisquestion我想在固定时间创建一系列低音和高音调的哔哔声。例如:在150毫秒时发出高音调的蜂鸣声在151毫秒时发出低音调的蜂鸣声200毫秒时发出低音调的蜂鸣声250毫秒的高音调蜂鸣声有没有办法在Ruby或Python中做到这一点?我真的不在乎输出编码是什么(.wav、.mp3、.ogg等等),但我确实想创建一个输出文件。
使用带有Rails插件的vim,您可以创建一个迁移文件,然后一次性打开该文件吗?textmate也可以这样吗? 最佳答案 你可以使用rails.vim然后做类似的事情::Rgeneratemigratonadd_foo_to_bar插件将打开迁移生成的文件,这正是您想要的。我不能代表textmate。 关于ruby-使用VimRails,您可以创建一个新的迁移文件并一次性打开它吗?,我们在StackOverflow上找到一个类似的问题: https://sta
我需要从一个View访问多个模型。以前,我的links_controller仅用于提供以不同方式排序的链接资源。现在我想包括一个部分(我假设)显示按分数排序的顶级用户(@users=User.all.sort_by(&:score))我知道我可以将此代码插入每个链接操作并从View访问它,但这似乎不是“ruby方式”,我将需要在不久的将来访问更多模型。这可能会变得很脏,是否有针对这种情况的任何技术?注意事项:我认为我的应用程序正朝着单一格式和动态页面内容的方向发展,本质上是一个典型的网络应用程序。我知道before_filter但考虑到我希望应用程序进入的方向,这似乎很麻烦。最终从任何
我想要做的是有2个不同的Controller,client和test_client。客户端Controller已经构建,我想创建一个test_clientController,我可以使用它来玩弄客户端的UI并根据需要进行调整。我主要是想绕过我在客户端中内置的验证及其对加载数据的管理Controller的依赖。所以我希望test_clientController加载示例数据集,然后呈现客户端Controller的索引View,以便我可以调整客户端UI。就是这样。我在test_clients索引方法中试过这个:classTestClientdefindexrender:template=>
如果您尝试在Ruby中的nil对象上调用方法,则会出现NoMethodError异常并显示消息:"undefinedmethod‘...’fornil:NilClass"然而,有一个tryRails中的方法,如果它被发送到一个nil对象,它只返回nil:require'rubygems'require'active_support/all'nil.try(:nonexisting_method)#noNoMethodErrorexceptionanymore那么try如何在内部工作以防止该异常? 最佳答案 像Ruby中的所有其他对象
关闭。这个问题需要detailsorclarity.它目前不接受答案。想改进这个问题吗?通过editingthispost添加细节并澄清问题.关闭8年前。Improvethisquestion为什么SecureRandom.uuid创建一个唯一的字符串?SecureRandom.uuid#=>"35cb4e30-54e1-49f9-b5ce-4134799eb2c0"SecureRandom.uuid方法创建的字符串从不重复?
我有一个正在构建的应用程序,我需要一个模型来创建另一个模型的实例。我希望每辆车都有4个轮胎。汽车模型classCar轮胎模型classTire但是,在make_tires内部有一个错误,如果我为Tire尝试它,则没有用于创建或新建的activerecord方法。当我检查轮胎时,它没有这些方法。我该如何补救?错误是这样的:未定义的方法'create'forActiveRecord::AttributeMethods::Serialization::Tire::Module我测试了两个环境:测试和开发,它们都因相同的错误而失败。 最佳答案
我想在Ruby中创建一个用于开发目的的极其简单的Web服务器(不,不想使用现成的解决方案)。代码如下:#!/usr/bin/rubyrequire'socket'server=TCPServer.new('127.0.0.1',8080)whileconnection=server.acceptheaders=[]length=0whileline=connection.getsheaders想法是从命令行运行这个脚本,提供另一个脚本,它将在其标准输入上获取请求,并在其标准输出上返回完整的响应。到目前为止一切顺利,但事实证明这真的很脆弱,因为它在第二个请求上中断并出现错误:/usr/b
我想让一个yaml对象引用另一个,如下所示:intro:"Hello,dearuser."registration:$introThanksforregistering!new_message:$introYouhaveanewmessage!上面的语法只是它如何工作的一个例子(这也是它在thiscpanmodule中的工作方式。)我正在使用标准的rubyyaml解析器。这可能吗? 最佳答案 一些yaml对象确实引用了其他对象:irb>require'yaml'#=>trueirb>str="hello"#=>"hello"ir
我的问题的一个例子是体育游戏。一场体育比赛有两支球队,一支主队和一支客队。我的事件记录模型如下:classTeam"Team"has_one:away_team,:class_name=>"Team"end我希望能够通过游戏访问一个团队,例如:Game.find(1).home_team但我收到一个单元化常量错误:Game::team。谁能告诉我我做错了什么?谢谢, 最佳答案 如果Gamehas_one:team那么Rails假设您的teams表有一个game_id列。不过,您想要的是games表有一个team_id列,在这种情况下