python飞机大战实验报告心得_Python学习之路「第七篇」-Pygame之飞机大战1

前言

在上一篇中,我们初步了解了pygame的控制流程,但这对于一个游戏而言是远远不够的。所以在这一篇中,我们的任务是添加一架飞机(玩家),并且能够控制它进行移动,这样我们就又离目标进了一步了~

这里解释一下,在网上又重新找了一个新的背景图片,后面的代码会有所修改。

正片开始!

1. 把我们的战斗机搬上屏幕

在正式上代码以前,有一点需要说明的,我们可以看到,所有屏幕上出现的元素都在资源(image/shoot.png)中,那我们要怎么做才能把一只飞机给裁剪出来呢?在pygame中,所有在屏幕上显示的元素都可以视为一个surface,利用这个特点,我们可以把资源文件导入(load()函数),然后用surface.subsurface()函数把shoot.png中我们想要的元素裁剪出来,这样问题就解决了~(tips:怎样才知道shoot.png中飞机的准确坐标呢?在image/shoot.pack文件中已经详细记录了每个屏幕元素的左上角坐标以及它的宽和高了)

新代码我会框起来,作为标记。

u=891987486,1120661370&fm=173&app=49&f=JPEG?w=640&h=334&s=A0C2B54C1EA0B76C4EE1D40F0000E0C3

u=3126404505,1518719149&fm=173&app=49&f=JPEG?w=640&h=334&s=A8C0B54C7FA0B7645E71D40F0000E0C3

我们在游戏的主循环中,不断地绘制背景图片、刷新界面。由于中间没有休息,所以游戏很耗CPU资源。

实际上,游戏一般每秒有60帧就非常棒了,所以应该在游戏主循环中加入休息机制。

在Java中,游戏主循环一般放在线程中,线程可以休眠一段时间。

而在pygame中,主要采用时钟来控制游戏节奏:

1.clock = pygame.time.Clock()

2.clock.tick(60)

添加了两处代码

运行一下代码看看吧!

30adcbef76094b36ba717c09aecc7cd98c109d76.jpg

可以看到,我们的飞机动了,究竟是怎样实现动画效果的呢?在代码中,新加入的代码一共有三处,显示玩家飞机的那一段已经解释过了,现在我们来解释其余的两段新加入的代码。首先增加了一个计数变量ticks,在消息循环中,每循环一次就累加一次,可以理解为每一个周期就是1 tick,我们可以利用周期数来分隔不同的显示效果;我们读入了两张不同的玩家飞机图片,利用周期数实现每50个周期,前25个周期显示hero1,后25个周期显示hero2,这样就有了缓慢变化的动态效果。不过值得注意的是,这样每一次循环就计算并判断一次ticks的做法明显不是好方法。还有Python是木有自增表达式的,我试图++ticks结果报错了。

战斗机已经准备就绪,该教会飞行员怎样操作了,下篇继续码起来!!!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值