『用Python做植物大战僵尸』第2期【有鱼币】
本帖最后由 元豪 于 2023-1-28 19:47 编辑【前言】
啊!今天我元豪又来更新了{:10_256:}
上期回顾
现在是『用Python做植物大战僵尸』的第2期!{:10_298:}
本次素材 ->
本页已结束,请切换下一页^-^
【目标】
本次目标:
1. 实现提示字体闪烁
2. 按空格切换背景
3. 背景向左滑动
本页已结束,请切换下一页^-^
【实现】
先导入我们这次需要的模块
import random
实现第1个目标:实现提示字体闪烁
游戏是要开始的,但是如果你只是放一张图上去,人家怎么知道怎么开始,是吧
所以,我们要提示一下用户,按下空格游戏就开始了
我们写一个函数,用来显示文字
# 展示文字
def showFont(self, text):
font = pygame.font.SysFont('Arial', 15)
text2 = font.render(text, True, TEXT_COLOR)
return text2
我们在调用展示背景的后面加上调用
text = self.showFont('Please press the space bar to start')
现在,我们在显示开始界面时,就会有提示了
但是,有些用户可能不会注意到这一行小字{:10_284:}
那怎么办呢?
我们让字动起来不就行了{:10_256:}
我们来实现闪烁的功能
我们定义一个变量numder,让这个变量自增
当这个变量在10~40之间时,显示,否则消失
在__init__中加入这个代码
self.numder = 0
在循环中加入这个代码
self.showOpen()
self.numder += 1
if self.numder in :
if self.numder == 40:
self.numder = 0
text = self.showFont('Please press the space bar to start')
self.font_rect = text.get_rect()
self.window.blit(text, (WIDTH / 2 - self.font_rect.width / 2, 570))
这样,字体闪烁功能就实现了{:10_298:}
实现第2个目标:按空格切换背景
依照这个目标,我们可以定义一个“是否开始游戏”的变量
如果没有,展示开始界面,否则展示游戏背景
self.open = False
先加载图片
# 加载背景图集
self.bgs = [
pygame.image.load('imgs/bg1.jpg'),
pygame.image.load('imgs/bg2.jpg')
]
# 设置背景下标
self.bgindex = 0
# 设置背景图
self.bg = self.bgs
定义一个展示背景的方法
# 展示背景
def showBg(self, x, y):
self.window.blit(self.bg, (x, y))
为了方便下一个目标,我们定义两个变量,储存背景的x, y坐标
# 设置背景x, y坐标
self.bgx, self.bgy = 0, 0
将前面展示的那部分改成下面
if not self.open:
self.showOpen()
self.numder += 1
if self.numder in :
if self.numder == 40:
self.numder = 0
text = self.showFont('Please press the space bar to start')
self.font_rect = text.get_rect()
self.window.blit(text, (WIDTH / 2 - self.font_rect.width / 2, 570))
else:
self.showBg(self.bgx, self.bgy)
然后,在按下空格的时候,检测是否开始游戏
如果没有开始,将“是否开始游戏”改为True
# 获取事件
for event in pygame.event.get():
# 退出
if event.type == pygame.QUIT:
self.end()
# 获取键盘按下事件
if event.type == pygame.KEYDOWN:
# 按下Esc键
if event.key == pygame.K_ESCAPE:
self.end()
if event.key == pygame.K_SPACE:
if not self.open:
self.open = True
至此,我们的第二个目标完成了{:10_298:}
实现第3个目标:背景向左滑动
我们只要将背景x坐标自减直到到背景最右边
多出来的部分 = 背景图长度 - 窗口长度
因为要获取背景图的长度,所以我们要提前获得背景图的矩形
# 获取背景图的矩形
self.bg_rect = self.bg.get_rect()
所以只要 self.bgx > -(self.bg_rect.width - WIDTH)
那么我们就进行自增
# 如果游戏还没有开始
# 则放置开始界面
if not self.open:
self.showOpen()
self.numder += 1
print(self.numder)
if self.numder in :
if self.numder == 40:
self.numder = 0
text = self.showFont('Please press the space bar to start')
self.font_rect = text.get_rect()
self.window.blit(text, (WIDTH / 2 - self.font_rect.width / 2, 570))
else:
self.window.blit(self.xuanze, (self.xuanx, self.xuany))
if self.xuanx < 0:
self.xuanx += 10
至此,我们今天的目标就完成啦!{:10_298:}
今日代码 + 素材 ->
如果有兴趣,记得评分 + 订阅哦~
订阅传送门 -> 『用Python做植物大战僵尸』
https://xxx.ilovefishc.com/forum/202301/21/133129oaow9wvuss2oht9p.gif
来顶贴了!!{:7_146:} liuhongrun2022 发表于 2023-1-24 16:13
来顶贴了!!
哇!来这么快!{:10_257:}
奖励一下 @高山 @hveagle @Mike_python小 @小伤口 @sfqxx @zhangjinxuan @python爱好者. @Twilight6 9分钟前?还热乎的{:10_256:}
顶!
(有奖励吗?) 15分钟?好冷! 23分钟,放岩浆里热热还能吃{:10_256:} 顶帖 1小时,用火爆辣椒烤一烤还能吃{:10_256:} {:10_256:} 送给大家的花花{:10_287:} 鱼币 。。前几天刚看到准备现在就开搞了?{:10_257:}
执行力很强啊{:10_254:}
你是不是天天泡五六个小时在编程里面{:10_256:} 支持 楼主万岁 hziyan 发表于 2023-1-24 23:06
。。前几天刚看到准备现在就开搞了?
执行力很强啊
你是不是天天泡五六个小时在编程 ...
说实话,一天都在电脑面前{:10_256:} 还在测吗? 元豪 发表于 2023-1-25 09:47
说实话,一天都在电脑面前
离谱,大过年的不出去走亲戚,去打电脑
我已经被各大亲戚的问候弄得心疲力尽了{:10_266:} hziyan 发表于 2023-1-25 09:56
离谱,大过年的不出去走亲戚,去打电脑
我已经被各大亲戚的问候弄得心疲力尽了
有时候去吧
大多都是别人来我家 顶!加油
页:
[1]
2