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=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塔防之“双层箭塔”(一)相关推荐
- python塔防小游戏代码_Python制作塔防小游戏
开发工具 Python版本:3.6.4 相关模块: pygame模块: 以及一些Python自带的模块. 原理介绍 游戏规则简介: 玩家通过建造箭塔抵御敌人的进攻. 每隔一段时间,将会有一波敌人从 ...
- [cocos2d-x学习笔记][入门基础][塔防]塔防游戏中箭塔旋转并攻击实现
1. 检测炮塔视线范围内距离它最近的敌人. int length=0; float index=0; for (int i=0; i<Game::allEnemy.size(); i++) { ...
- python 玩公众号游戏_Python入门太难?不如从玩塔防小游戏开始,玩通关就能学会编程...
我一直认为,在python入门阶段学习基础理论,太枯燥.所以我们整理了很多有关python的项目案例,有详细教程还有源码,希望能帮助更多对python感兴趣的人. 这是其中一个适合入门的Python项 ...
- android 小游戏源码_Python入门太难?不如从玩塔防小游戏开始,玩通关就能学会编程...
我一直认为,在python入门阶段学习基础理论,太枯燥.所以我们整理了很多有关python的项目案例,有详细教程还有源码,希望能帮助更多对python感兴趣的人. 这是其中一个适合入门的Python项 ...
- python3小游戏源代码_Python入门塔防小游戏,开发步骤和源码,带你轻松学python...
在上一篇文章中,我介绍了有关python入门塔防小游戏的一些功能,下面我继续讲解有关这个小游戏的大致开发步骤. 开发工具还是: Python版本:3.6.4 相关的模块有:pygame模块,以及一些p ...
- Python制作塔防小游戏
开发工具 Python版本:3.6.4 相关模块: pygame模块: 以及一些Python自带的模块. 相关文件 关注公众号:Python学习指南,回复"塔防"即可获取相关文件 ...
- 基于Python实现制作的塔防游戏
导语 最近发现很多人对 python 制作小游戏感兴趣,于是花了半天时间做了个塔防小游戏,在这里分享给大家,希望对大家有帮助. 让我们愉快地开始吧~ 开发工具 **Python 版本:**3.6.4 ...
- python小游戏——塔防小游戏代码开源
♥️作者:小刘在这里 ♥️每天分享云计算网络运维课堂笔记,努力不一定有收获,但一定会有收获加油!一起努力,共赴美好人生! ♥️夕阳下,是最美的,绽放,愿所有的美好,再疫情结束后如约而至. 目录 一.效 ...
- (译)如何使用cocos2d制作一个塔防游戏:引子
原文链接地址:http://www.iphonegametutorials.com/2011/04/11/cocos2d-game-tutorial-how-to-build-a-tower-defe ...
最新文章
- 观感人故事《我们俩》
- (chap9 基于HTTP的功能追加协议) Web 服务器管理文件的 WebDAV
- POJ1753 棋盘翻转(位压缩+广度优先搜索)
- 聊聊Java中的并发队列中 有界队列和无界队列的区别
- pcm 8k单声道和双声道采样_音频接口PCM
- VB winform自动更新 笔记
- CAN总线很难吗?CAN总线看不懂是不可能的!
- admin.php为什么是乱码,phpadmin和MySQL中文乱码问题的剖析
- atitit. orm mapping cfg 映射配置(3)-------hbnt one2maney cfg
- ckfinder php,php,ckfinder_ckfinder mac下报错 linux正常,php,ckfinder - phpStudy
- 判断质数、分解质因数
- ZOJ 3549 Little keng
- JS初中段考:袖珍西历
- 要学习使用的安全工具
- 数据链路层的重点协议
- 应用检查后台启动权限方法(小米官方给出的)
- 2022哈工大软件构造我的学习笔记(1)
- Python小技巧:将大音频文件无损切割为小音频文件
- Regional 做题记录 (50/50)
- C++小游戏——走迷宫
热门文章
- anydesk linux安装_在Ubuntu 20.04上安装AnyDesk
- 从计算机复制u盘慢怎么解决方法,复制到U盘的速度越来越慢怎么办?
- ASP.NET获取请求的url信息汇总
- [论文笔记] highway networks
- 网路游侠:从Gartner象限图看网络安全发展趋势
- PR短视频模板 创意食品外卖配送卡通人物素材PR模板
- 联想a820android 4.4.4,联想 A820 4.0.4 ROM刷机包 【百度云OS】ROM58 公测版 贴心优化 从不止步...
- 西部网盘 如何去掉硬盘wd drive unlock
- MARVELL电力线载波通讯芯片运用于家庭联网
- 三本书帮你看淡元宇宙