开发工具

Python版本:3.6.4

相关模块:

pygame模块;

以及一些Python自带的模块。

原理介绍

游戏规则简介:

玩家通过建造箭塔抵御敌人的进攻。

每隔一段时间,将会有一波敌人从左上角的洞穴中诞生,并冲向右下角的城堡。玩家需要做的,则是通过建造箭塔射杀敌人,避免城堡受到敌人攻击,同时,每当你射杀一个敌人,将获得一定的金钱奖励。

游戏失败:

每有一个敌人冲进城堡,城堡的生命值下降一定的数值,当城堡的生命值为0时,则游戏失败。

游戏胜利:

随着时间的推移,敌人的实力会越来越强,数量也会越来越多,所以你是不可能胜利的,哈哈。

游戏界面说明:

T1-T3代表不同的箭塔类型,不同的箭塔类型具有不同的价格以及能力;

XXX代表出售箭塔(半价);

Pause代表暂停游戏;

Quit代表退出游戏。

玩家通过左键选中箭塔/出售箭塔标识,右键放弃当前选中的内容。鼠标中间箭用于控制箭塔射击的方向,否则箭塔将自由射击。

选中箭塔后,将其移动到你认为合适的位置,点击鼠标左键即可在该位置建造一个箭塔(当然前提是你账户余额买得起箭塔,不然只能打怪攒钱了);选中出售箭塔后,将出售箭塔标识放在已建造的箭塔上,点击鼠标左键,即可出售选中的箭塔。

逐步实现:

Step1:明确游戏主逻辑

游戏主逻辑应当是这样的:

代码描述如下:

Step2:实现游戏开始界面

这里的要点在于当检测到鼠标移动到按钮上时,执行按钮变色操作,检测到鼠标点击按钮位置时,跳出游戏开始界面。主代码如下:

Step3:实现游戏选择界面

要点同步骤二,主代码如下:

游戏难度定义在一个.json文件夹中,例如:

Step4:实现游戏界面

首先,将地图设计在.map文件中,不同的数字代表不同的地图元素,例如:

这样就可以很方便地导入不同的地图:

其次就是画工具栏:

如此一来,游戏界面的雏形就出来了。接下来就是每隔一段时间产生一批敌人:

通过按键检测和定义一些函数来实现用户与游戏的交互,例如造塔等操作。其中按键检测的代码如下:

操作函数的定义如下:

当然,当检测到暂停按钮被按下时,你需要将游戏切入暂停界面:

其中按键闪烁的实现主要依靠每隔一小段时间显示一次按键实现,其它要点同步骤二。

最后,就是让箭塔可以不停地射箭并且通过碰撞检测来判断箭是否射中了敌人(射中的话敌人生命值会下降,下降到0时敌人才会死掉),画出游戏界面中还存在着的所有元素:

[图片上传中...(image-1d574a-1607923877615-2)]

当然,如果城堡死掉了,那么游戏也就结束了:

[图片上传中...(image-f5be0d-1607923877615-1)]

Step5:实现结束界面

要点同步骤二,主代码如下:

[图片上传中...(image-aa88a0-1607923877615-0)]

All Done!

环境搭建

安装Python并添加到环境变量,pip安装需要的相关模块即可。

原理介绍

游戏规则简介:

玩家通过建造箭塔抵御敌人的进攻。

每隔一段时间,将会有一波敌人从左上角的洞穴中诞生,并冲向右下角的城堡。玩家需要做的,则是通过建造箭塔射杀敌人,避免城堡受到敌人攻击,同时,每当你射杀一个敌人,将获得一定的金钱奖励。

游戏失败:

每有一个敌人冲进城堡,城堡的生命值下降一定的数值,当城堡的生命值为0时,则游戏失败。

游戏胜利:

随着时间的推移,敌人的实力会越来越强,数量也会越来越多,所以你是不可能胜利的,哈哈。

游戏界面说明:

T1-T3代表不同的箭塔类型,不同的箭塔类型具有不同的价格以及能力;

XXX代表出售箭塔(半价);

Pause代表暂停游戏;

Quit代表退出游戏。

玩家通过左键选中箭塔/出售箭塔标识,右键放弃当前选中的内容。鼠标中间箭用于控制箭塔射击的方向,否则箭塔将自由射击。

选中箭塔后,将其移动到你认为合适的位置,点击鼠标左键即可在该位置建造一个箭塔(当然前提是你账户余额买得起箭塔,不然只能打怪攒钱了);选中出售箭塔后,将出售箭塔标识放在已建造的箭塔上,点击鼠标左键,即可出售选中的箭塔。

逐步实现:

Step1:明确游戏主逻辑

游戏主逻辑应当是这样的:

代码描述如下:

Step2:实现游戏开始界面

这里的要点在于当检测到鼠标移动到按钮上时,执行按钮变色操作,检测到鼠标点击按钮位置时,跳出游戏开始界面。主代码如下:

Step3:实现游戏选择界面

要点同步骤二,主代码如下:

游戏难度定义在一个.json文件夹中,例如:

Step4:实现游戏界面

首先,将地图设计在.map文件中,不同的数字代表不同的地图元素,例如:

这样就可以很方便地导入不同的地图:

其次就是画工具栏:

如此一来,游戏界面的雏形就出来了。接下来就是每隔一段时间产生一批敌人:

通过按键检测和定义一些函数来实现用户与游戏的交互,例如造塔等操作。其中按键检测的代码如下:

操作函数的定义如下:

当然,当检测到暂停按钮被按下时,你需要将游戏切入暂停界面:

其中按键闪烁的实现主要依靠每隔一小段时间显示一次按键实现,其它要点同步骤二。

最后,就是让箭塔可以不停地射箭并且通过碰撞检测来判断箭是否射中了敌人(射中的话敌人生命值会下降,下降到0时敌人才会死掉),画出游戏界面中还存在着的所有元素:

当然,如果城堡死掉了,那么游戏也就结束了:

Step5:实现结束界面

要点同步骤二,主代码如下:

All Done!

本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理

想要获取更多Python学习资料可以加
QQ:2955637827私聊
或加Q群630390733
大家一起来学习讨论吧!

Python制作塔防小游戏的更多相关文章

  1. 自定义View5 -塔防小游戏:第二篇防御塔随意放置

    第一篇:一个防御塔+多个野怪(简易版) 第二篇:防御塔随意放置 自定义View,处理事件分发,up,move,down. 第三篇:防御塔随意放置+多组野怪 第四篇:多波野怪 第五篇:杀死野怪获得金币 ...

  2. 自定义View6 -塔防小游戏:第三篇防御塔随意放置+多组野怪

    第一篇:一个防御塔+多个野怪(简易版)第二篇:防御塔随意放置第三篇:防御塔随意放置+多组野怪 1.动态addView防御塔 2.防御塔放置后不可以移动 3.弯曲道路 4.素材替换 第四篇:多波野怪 第 ...

  3. 自定义View4-塔防小游戏第一篇:一个防御塔+多个野怪(简易版)*

    塔防小游戏 第一篇:一个防御塔+多个野怪(简易版)    1.canvas画防御塔,妖怪大道,妖怪行走路线    2.防御塔攻击范围是按照妖怪与防御塔中心距离计算的,大于防御塔半径则不攻击,小于则攻击 ...

  4. 用Python设计一个经典小游戏

    这是关于Python的第9篇文章,介绍如何用Python设计一个经典小游戏:猜大小. 在这个游戏中,将用到前面我介绍过的所有内容:变量的使用.参数传递.函数设计.条件控制和循环等,做个整体的总结和复习 ...

  5. unity3D游戏开发实战原创视频讲座系列9之塔防类游戏开发第一季

    解说文件夹 塔防游戏0基础篇... 第一讲  游戏演示和资源介绍... 第二讲  游戏场景的完毕... 第三讲  预制体的制作... 第四讲  敌人的随机产生和按路径行走... 第五讲  塔防工具的产 ...

  6. 制作动画或小游戏——CreateJS事件(二)

    在Canvas中如果要添加事件,就需要计算坐标来模拟各种事件,而EaselJS中已经封装好了多个事件,只需调用即可. 一.事件 1)点击 事件是绑定在Shape类中的,click事件与DOM中的意思是 ...

  7. Python开发接水果小游戏

    我研发的Python游戏引擎Pylash已经更新到1.4了.如今我们就来使用它完毕一个极其简单的小游戏:接水果. 下面是游戏截图: 游戏操作说明:点击屏幕左右两边或者使用键盘方向键控制人物移动.使人物 ...

  8. [SpriteKit] 制作瓦片地图小游戏

    概述 SpriteKit制作瓦片地图游戏,深入了解2D游戏制作过程 详细 代码下载:http://www.demodashi.com/demo/10703.html 说实话这个2D游戏实战的入门看的我 ...

  9. 制作一个 JavaScript 小游戏

    简评: 作者学习了编程两个月,边学边做了一个 JavaScript 小游戏,在文中总结了自己在这个过程中的一些体会,希望能给其他初学者一些帮助. 对于很多想学编程但一直没下定决心的同学来说,最大的问题 ...

随机推荐

  1. 「LOJ 541」「LibreOJ NOIP Round #1」七曜圣贤

    description 题面很长,这里给出题目链接 solution 用队列维护扔掉的红茶,同时若后扔出的红茶比先扔出的红茶编号更小,那么先扔出的红茶不可能成为答案,所以可以用单调队列维护 故每次询问 ...

  2. python应用(1):安装与使用

    程序员的基本工作是写程序,而写程序要用到编程语言,编程语言可以分为编译型语言跟解释型语言. 编译型语言,就是在执行代码之前,先把源代码编译(加链接)成另一种形式的代码,比如目标代码,或字节码,这种代码 ...

  3. JAVA面试宝典分享

    JAVA面试宝典分享 前言 面试题 Java面试题(上) Java面试题(中) Java面试题(下) 参考答案 其他补充内容: 项目经验 项目介绍 项目开发流程 项目管理 系统架构 第三方工具(插件) ...

  4. Linux安装MySQL5.7(CentOS)

    1.下载解压 1.1 MySql 5.7.26下载地址: https://dev.mysql.com/downloads/mysql/5.7.html#downloads 1.2 解压 tar -xv ...

  5. CentOS下Mysql简易操作

    Mysql mysql的root密码重置 编辑mysql主配置文件 vim /etc/my.cnf 添加..grant参数 [mysqld] skip-grant 重启mysql服务 service ...

  6. 20200221_python虚拟环境在Windows下安装配置_virtualenv不是内部或外部命令也不是可运行的程序或批处理文件

    1. 使用管理员启动命令行; 2. 安装虚拟环境 a)      .\pip install virtualenv  -i https://pypi.douban.com/simple/ b)     ...

  7. 痞子衡嵌入式:深入i.MXRT1050系列ROM中串行NOR Flash启动初始化流程

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家分享的是深入i.MXRT1050系列ROM中串行NOR Flash启动初始化流程. 从外部串行NOR Flash启动问题是i.MXRT系列开发最 ...

  8. 第15.33节 PyQt(Python+Qt)入门学习:containers容器类部件QTabWidget选项窗部件简介

    老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 一.概述 容器部件就是可以在部件内放置其他部件的部件,在Qt Designer中可以使用的容器部件有 ...

  9. Python正则表达式处理的组是什么?

    在学习正则表达式处理开始阶段,对于匹配对象的group数据没有理解,查了资料进行验证测试,终于理解了. 组其实与组匹配模式相关,就是在匹配的正则表达式中使用小括号"()"括起来的任 ...

  10. 【Azure Redis 缓存 Azure Cache For Redis】Azure Redis由低级别(C)升级到高级别(P)的步骤和注意事项, 及对用户现有应用的潜在影响,是否需要停机时间窗口,以及这个时间窗口需要多少的预估问题

    问题描述 由于Azure Redis的性能在不同级别表现不同,当需要升级/缩放Redis的时候,从使用者的角度,需要知道有那些步骤? 注意事项? 潜在影响?停机事件窗口? 升级预估时间? 解决方案 从 ...