python实训报告pygame_20181218 实验四《Python程序设计》实验报告

本文是一份使用pygame编程制作简单塔防游戏的实训报告,详细记录了从游戏设计到实现的整个过程。通过观看12小时的直播并跟随原作者实现代码,完成了敌人的移动、攻击塔的攻击、支援塔的支援等功能,并实现了游戏暂停、音乐控制、塔的拖动放置和升级等操作。此外,报告还分享了在实验过程中遇到的问题及其解决方法,如敌人移动路径计算、塔的攻击逻辑和游戏暂停功能的实现。
摘要由CSDN通过智能技术生成

20181218 2019-2020-2 《Python程序设计》实验四报告

课程:《Python程序设计》

班级: 1812

姓名:

学号:20181218

实验教师:王志强

实验日期:2020年6月13日

必修/选修: 公选课

1.实验内容

使用pygame编程制作简单的塔防游戏。

2. 实验过程及结果

指导

首先制作一个思维导图,主要包括涉及的类,以及类的属性和方法。这并不是代码最终实现的版本,在编程时有所修改。

954a1e107e69d44cf80d4c2605ee02bf.png

资产

游戏中使用的图片,部分来自于https://craftpix.net/中的免费资源,部分是我自己画的(比如游戏背景)

游戏中使用的背景音乐,来自于无版权音乐网站https://maoudamashii.jokersounds.com/

编程

游戏的代码实现学习自https://www.youtube.com/watch?v=iLHAKXQBOoA

原作者在12小时的直播中完成的代码,我完整观看了12个小时的录播,跟随原作者实现代码,也有一点自己的修改

代码的实现过程基本如下:

实现敌人的移动

实现攻击塔的攻击

实现支援塔的支援

实现敌人攻击、游戏失败

实现塔的拖动放置、升级

实现敌人的多轮攻势

实现游戏暂停、音乐暂停

实现游戏总菜单面板

代码中较核心的功能的具体实现将在 “3.实验过程中遇到的问题和解决过程”中给出

结果

游戏功能如下,具体运行测试将在视频中给出

游戏控制

点击“开始”按钮,游戏即开始

“音乐”按钮可以控制音乐的暂停和播放

“继续”和“暂停”按钮可以控制游戏的进行,敌人的每一波攻势结束后,游戏会自动暂停,点击按钮即可迎接下一波攻势

点击塔,移动光标至目标位置再次点击,即可放置塔

注意,不可以将塔放在已放置的塔之上

在游戏“暂停”时也可以放置塔

点击已放置的塔,可以进行升级,升级后塔的攻击力提高,外形也会改变

游戏资产

“月亮”是购买和升级塔所需的货币,消灭敌人会获得“月亮”

“心”是玩家的生命值,当敌人走到地图尽头,“心”的数量会减少,当“心”的数量减少至0时,游戏结束

“尖石塔”和“巨石塔”是可以攻击敌人的塔

“尖石塔”攻击范围较大,攻击力较小

“巨石塔”攻击范围较小,攻击力较大

“宝剑塔”和“波纹塔”是用于强化“尖石塔”和“巨石塔”的塔

“宝剑塔”可以提升范围内“尖石塔”和“巨石塔”的攻击力

“波纹塔”可以提升范围内“尖石塔”和“巨石塔”的攻击范围

小结

游戏难度梯度较不合理,但具备基本功能

码云链接

目录树如下:

├─enemies

│ └─__pycache__

├─game_assets

│ ├─enemies

│ │ ├─1

│ │ ├─2

│ │ └─4

│ └─towers

│ ├─stones

│ │ ├─1

│ │ ├─2

│ │ └─3

│ ├─stonetower

│ │ ├─1

│ │ ├─2

│ │ └─3

│ └─support_towers

├─main_menu

│ └─__pycache__

├─menu

│ └─__pycache__

├─towers

│ └─__pycache__

└─__pycache__

game_assets中存放的是游戏资产,其余文件夹存放的都是代码文件。

运行游戏需要运行 run.py

3. 实验过程中遇到的问题和解决过程

1.如何实现敌人的移动?

首先得到一个含许多坐标点的列表,坐标基本如下图

f3c47797dbbe2d470fd0522decf19c3a.png

每一次移动,首先要得到两个点,即目前所在路径的起点(x1, y1)和终点(x2, y2)

5fad06b9d52a81d96e00570a352f444c.png

得到这条路径的长度sqrt((x2-x1)**2+(y2-y2)**2)

然后确定一次移动的方向和距离,方向即(x2-x1, y2-y2)

至于一次移动的距离,在x轴方向,可以由上面的方向变量的x坐标除以当前路径长度的x坐标,再乘上移动速度

移动后,更新敌人实例的x和y

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值