python塔防之“双层箭塔”(一)

欢迎加入我们卧虎藏龙的python讨论qq群:729683466

长文预警

导 语 ●

很长时间没有更新了

这段时间我一直在写塔防游戏

没有时间更新公众号

今天

塔防游戏有完成了重要一步

可以说现在是一个完整的塔防游戏了。

麻雀虽小,五脏俱全

代码及相关资源获取

1:关注“python趣味爱好者”公众号,回复“塔防游戏 ”获取源代码。  

效果演示

ss

往期精选

python塔防之------“红精灵来袭”

 ????

开发工具

python3.6.4

第三方库:pygame,random,os,math,sys

讲解部分

一:地图路径函数。

上一节课我们讲的是如何让怪兽从起点移动到终点,我们用一个列表存储了所有的路径的像素点坐标,然后让索引值慢慢加一,这样,怪兽的坐标点就可以按着地图的路径移动了。

map1=[(50,14),(86,14),(135,14),(175,14),(180,47),(180,92),(215,92),(260,92),\
      (302,94),(305,135),(306,174),(344,174),(392,174),(430,180),(430,139),\
      (430,90),(430,51),(475,52),(516,52),(560,52),(560,94),(560,131),(560,166),\
      (560,205),(560,247),(560,273),(560,307),(513,305),(469,305),(432,305),\
      (387,305),(349,305),(300,305),(250,305),(200,305)]

但是这样的移动方法有一个坏处。那就是怪兽的坐标点是不连续的。比如说

地图路径的第一个点是(50,14),第二个点是(86,14)。如果我想表示怪兽移动到了两个点中间的点(70,14)。那就不能表示了。

所以我们可以把地图的路径分成几条直线,然后用参数方程的形式表示出来。

设置一个参数t。间接地用t来表示各个点的坐标。

这个函数比较长,我只截取一小部分给大家看一看。

def get_path(t):
      if t<203 and t>50:
            x=t
            y=34
            return [x,y]
      elif t<286:
            x=203
            y=t-203+34
            return [x,y]
        .........
        .........

写好这个道路函数以后,我们就可以根据这个来获取怪兽的位置,然后在相应的位置画怪兽。

二:箭塔类和对象

这个游戏中最重要的就是三个类:分别是箭塔,箭,怪兽。

我们先讲一下如何定义箭塔类,也就是Tower。

class Tower1(pygame.sprite.Sprite):


  def __init__(self,pos_x,pos_y,shot_angle,cooling_time):
                #shot_angle是射击方向
    pygame.sprite.Sprite.__init__(self)
    #self.imgs = ['./resource/imgs/game/basic_tower.png', './resource/imgs/game/med_tower.png', './resource/imgs/game/heavy_tower.png']
    self.image = pygame.image.load('./resource/imgs/game/tower5.png')
    self.rect = self.image.get_rect()
    self.cooling_time=cooling_time
    self.cooling_now=cooling_time#箭塔的冷却时间
    self.shot_angle=shot_angle
    self.price=300#箭塔的价格
    self.position = pos_x,pos_y
    self.rect.left, self.rect.top = self.position

首先,我们要继承Pygame里面的精灵类,因为箭塔可以需要继承精灵类的一些功能。好比说,Pygame的精灵类是一个毛坯房,我们需要对其进行精装修,加上一些特色的方法,就可以形成我们的箭塔类。继承方法就是这样

class Tower1(pygame.sprite.Sprite):

Tower类需要载入图片,也就是箭塔的图片。另外就是设置一下箭塔的冷却时间。冷却时间在主函数的while循环中,每循环一次减一,如果这个冷却时间小于0,那就代表冷却时间结束了。就可以发射一支箭。

在这里,就又要提一下我们设置的Tower的一个功能,就是shot。这个函数不是直接射箭,而是减小冷却时间。

  def shot(self, position):#参数是子弹的位置和角度
    if self.cooling_now<=0:
      self.cooling_now=self.cooling_time
      return 1
    else:
      self.cooling_now-=1
      return 0

并且判断冷却时间是否小于0,如果是小于0,就返回1,返回1的意思是发射一支箭,否则,冷却时间减一,返回0。

这就是箭塔类的功能。

更多的怪兽类,箭,以及背景音乐等知识,我们下次给大家慢慢讲

作者|齐

编辑|齐

感谢大家观看

有钱的老板可打赏一下小编哦

扫描二维码

关注我们

QQ群:729683466

◰  

参考来源

游戏素材来源于网络--侵歉删

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
学习Python塔防游戏是一项有趣而有挑战性的任务。Python是一种简单易学的编程语言,因此对于初学者来说,学习编写塔防游戏是一个很好的起点。 首先,了解游戏规则和目标是很重要的。塔防游戏的基本规则是建立和升级防御塔来阻止敌人进入你的基地。玩家需要选择适当的塔,放置在合适的位置,并管理资源来购买和升级塔。 其次,掌握Python的基本语法和概念是必要的。这包括变量、条件语句、循环、函数和列表等。Python的简洁语法使得编写塔防游戏的逻辑和算法变得相对容易。 然后,了解Pygame库是开发塔防游戏所需的。Pygame是一个专门用于开发游戏Python库,它提供了处理图像、音频和用户输入等功能。通过熟悉Pygame的各种功能和API,可以实现游戏的界面显示、鼠标事件处理和游戏逻辑。 最后,开发过程中不要忘记实践和项目经验的重要性。可以通过跟随教程、阅读相关文档和参考其他塔防游戏的源代码来提升技能。逐步实现和完善自己的塔防游戏,并尝试添加新的功能和特效来增加游戏的乐趣和挑战。 总之,学习Python塔防游戏需要掌握Python语言的基础知识,了解Pygame库的使用和应用,不断实践和积累经验。通过不断研究、学习和实践,不仅可以提升Python编程技能,还能开发出自己的塔防游戏,并与其他人分享。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值