欢迎加入我们卧虎藏龙的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=ty=34return [x,y]elif t<286:x=203y=t-203+34return [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_timeself.cooling_now=cooling_time#箭塔的冷却时间self.shot_angle=shot_angleself.price=300#箭塔的价格self.position = pos_x,pos_yself.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_timereturn 1else:self.cooling_now-=1return 0

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

这就是箭塔类的功能。

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

作者|齐

编辑|齐

感谢大家观看

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

扫描二维码

关注我们

QQ群:729683466

◰  

参考来源

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

python塔防之“双层箭塔”(一)相关推荐

  1. python塔防小游戏代码_Python制作塔防小游戏

    开发工具 Python版本:3.6.4 相关模块: pygame模块: 以及一些Python自带的模块. ​ 原理介绍 游戏规则简介: 玩家通过建造箭塔抵御敌人的进攻. 每隔一段时间,将会有一波敌人从 ...

  2. [cocos2d-x学习笔记][入门基础][塔防]塔防游戏中箭塔旋转并攻击实现

    1. 检测炮塔视线范围内距离它最近的敌人. int length=0; float index=0; for (int i=0; i<Game::allEnemy.size(); i++) { ...

  3. python 玩公众号游戏_Python入门太难?不如从玩塔防小游戏开始,玩通关就能学会编程...

    我一直认为,在python入门阶段学习基础理论,太枯燥.所以我们整理了很多有关python的项目案例,有详细教程还有源码,希望能帮助更多对python感兴趣的人. 这是其中一个适合入门的Python项 ...

  4. android 小游戏源码_Python入门太难?不如从玩塔防小游戏开始,玩通关就能学会编程...

    我一直认为,在python入门阶段学习基础理论,太枯燥.所以我们整理了很多有关python的项目案例,有详细教程还有源码,希望能帮助更多对python感兴趣的人. 这是其中一个适合入门的Python项 ...

  5. python3小游戏源代码_Python入门塔防小游戏,开发步骤和源码,带你轻松学python...

    在上一篇文章中,我介绍了有关python入门塔防小游戏的一些功能,下面我继续讲解有关这个小游戏的大致开发步骤. 开发工具还是: Python版本:3.6.4 相关的模块有:pygame模块,以及一些p ...

  6. Python制作塔防小游戏

    开发工具 Python版本:3.6.4 相关模块: pygame模块: 以及一些Python自带的模块. 相关文件 关注公众号:Python学习指南,回复"塔防"即可获取相关文件 ...

  7. 基于Python实现制作的塔防游戏

    导语 最近发现很多人对 python 制作小游戏感兴趣,于是花了半天时间做了个塔防小游戏,在这里分享给大家,希望对大家有帮助. 让我们愉快地开始吧~ 开发工具 **Python 版本:**3.6.4 ...

  8. python小游戏——塔防小游戏代码开源

    ♥️作者:小刘在这里 ♥️每天分享云计算网络运维课堂笔记,努力不一定有收获,但一定会有收获加油!一起努力,共赴美好人生! ♥️夕阳下,是最美的,绽放,愿所有的美好,再疫情结束后如约而至. 目录 一.效 ...

  9. (译)如何使用cocos2d制作一个塔防游戏:引子

    原文链接地址:http://www.iphonegametutorials.com/2011/04/11/cocos2d-game-tutorial-how-to-build-a-tower-defe ...

最新文章

  1. 观感人故事《我们俩》
  2. (chap9 基于HTTP的功能追加协议) Web 服务器管理文件的 WebDAV
  3. POJ1753 棋盘翻转(位压缩+广度优先搜索)
  4. 聊聊Java中的并发队列中 有界队列和无界队列的区别
  5. pcm 8k单声道和双声道采样_音频接口PCM
  6. VB winform自动更新 笔记
  7. CAN总线很难吗?CAN总线看不懂是不可能的!
  8. admin.php为什么是乱码,phpadmin和MySQL中文乱码问题的剖析
  9. atitit. orm mapping cfg 映射配置(3)-------hbnt one2maney cfg
  10. ckfinder php,php,ckfinder_ckfinder mac下报错 linux正常,php,ckfinder - phpStudy
  11. 判断质数、分解质因数
  12. ZOJ 3549 Little keng
  13. JS初中段考:袖珍西历
  14. 要学习使用的安全工具
  15. 数据链路层的重点协议
  16. 应用检查后台启动权限方法(小米官方给出的)
  17. 2022哈工大软件构造我的学习笔记(1)
  18. Python小技巧:将大音频文件无损切割为小音频文件
  19. Regional 做题记录 (50/50)
  20. C++小游戏——走迷宫

热门文章

  1. anydesk linux安装_在Ubuntu 20.04上安装AnyDesk
  2. 从计算机复制u盘慢怎么解决方法,复制到U盘的速度越来越慢怎么办?
  3. ASP.NET获取请求的url信息汇总
  4. [论文笔记] highway networks
  5. 网路游侠:从Gartner象限图看网络安全发展趋势
  6. PR短视频模板 创意食品外卖配送卡通人物素材PR模板
  7. 联想a820android 4.4.4,联想 A820 4.0.4 ROM刷机包 【百度云OS】ROM58 公测版 贴心优化 从不止步...
  8. 西部网盘 如何去掉硬盘wd drive unlock
  9. MARVELL电力线载波通讯芯片运用于家庭联网
  10. 三本书帮你看淡元宇宙