点击蓝字 关注我们

哈喽,朋友们,又见面了!今天我们来学习一个超级刺激的游戏吧?大家肯定都玩过"塔防"的游戏对不对?今天我们就用Scratch来做一个"塔防2"的游戏!
真正的课程导入语:同学们!有没有想过自己能建造防御塔,阻止敌人进攻,保卫自己的基地?今天的Scratch课堂,我们就要解锁超酷炫的"塔防2"游戏开发!想象一下:你亲手设计的防御塔灵活地攻击敌人,收集金币,升级防御,记录得分情况。这一切都能在Scratch里实现!通过这节课,我们会学会角色移动、碰撞检测、得分系统、敌人追踪这些核心编程技巧,更能锻炼逻辑思维和创造力。接下来,就让我们一起化身小小程序员,用积木搭建属于自己的塔防世界,看看谁能通过所有关卡,谁能成为最终的塔防王者!准备好开启这场编程冒险了吗?现在,Let's code!

我希望你能通过作品效果,总结作品的关键操作步骤。

点击鼠标放置防御塔
敌人从不同位置出现
防御塔自动攻击敌人
收集金币升级防御塔
阻止敌人到达终点
你总结的可能跟我不一样,但是大差不差,也许你的更好。
思考时间
运动模块:移到x:x,y:y、将X坐标增加、将Y坐标增加、移到最前/最后、面向方向、右转/左转度数、移动x步、滑行到坐标
外观模块:隐藏、显示、切换造型、将大小设置为、将特效设置为、下一个造型、清除图形特效
事件模块:当绿旗被点击、当按下空格键、当接收到广播、当角色被点击、当作为克隆体启动时
控制模块:重复执行、重复x次、如果xxx那么、等待x秒、克隆、删除克隆体、停止全部脚本、停止其他脚本
侦测模块:碰到对象、碰到颜色、距离、鼠标的x坐标、鼠标的y坐标、计时器
运算模块:随机数、加减乘除、绝对值、余数、取整、大于小于等于、平方根
变量模块:新建变量、将变量设置为、将变量增加、显示变量、隐藏变量、列表操作
声音模块:播放声音、停止所有声音、将音量设置为
画笔模块:清除、落笔、抬笔、图章
塔防2游戏逻辑├── 游戏初始化│ ├── 设置初始变量(money、生命、time、难度等)│ ├── 隐藏帮助界面│ └── 显示开始界面├── 地图系统│ ├── block(地图块)│ │ ├── 绘制地图│ │ ├── 记录地图数据│ │ └── 初始化地图│ └── Sprite2(UI界面)│ ├── 显示金币│ ├── 显示生命│ └── 显示时间├── 敌人系统│ ├── 敌人(敌人)│ │ ├── 生成敌人│ │ ├── 追踪防御塔│ │ ├── 攻击防御塔│ │ ├── Boss战│ │ └── 扣血系统│ └── Sprite6(难度控制)│ ├── 增加难度│ └── 调整敌人数值├── 防御塔系统│ ├── Sprite1(主角/防御塔)│ │ ├── 点击放置│ │ ├── 自动攻击│ │ ├── 寻找最近敌人│ │ ├── 发射子弹│ │ └── 消耗金币│ └── 角色1(加速按钮)│ ├── 切换游戏速度│ └── 调整游戏节奏├── 帮助系统│ ├── Sprite4(帮助按钮)│ │ ├── 显示帮助│ │ └── 隐藏帮助│ └── Sprite5(帮助界面)│ ├── 旋转动画│ └── 显示帮助内容└── 游戏结束 ├── 显示失败界面 ├── 显示最终得分 └── 重新开始
我希望你在看下面过程之前,你自己能根据作品效果做出至少80%(做不出来的话,你要清楚的知道自己哪里不会哪里不清晰)。这样你在看下面的操作之后才能真正学到一些"知识",不经过自己思考就得到的答案,不深刻,逻辑思维也不会得到提升。
舞台上有好多变量,它们就像游戏的"小黑板",记录着各种重要信息:
游戏状态变量:
MouseX、MouseY:鼠标位置
block:当前地图块类型
删除:删除标记
speed:游戏速度
money:金币数量
生命:基地生命值
上限HP:敌人最大生命值
time:游戏时间
难度:游戏难度
sound:音量
fast:加速模式
为什么要用这么多变量呢?因为游戏很复杂,需要记录很多信息。就像我们上学要带很多书本一样,每个变量就像一本书,记录着不同的知识。

【舞台】代码截图
舞台负责游戏的初始化和基本控制。
详细程序讲解:
初始化游戏:当绿旗被点击时,舞台会设置初始变量。money设置为200,生命设置为20,切换背景为默认背景。
游戏循环:舞台会不断检查生命变量。如果生命小于等于0,就会清除画笔,广播失败消息,停止游戏。为什么要不断检查呢?因为游戏需要实时监控基地的生命值,如果生命值降到0,游戏就结束了。
计时系统:当接收到"playgame"广播时,舞台会开始计时。上限HP变量会不断增加,用来控制敌人的生成速度。为什么要用计时呢?因为游戏需要控制敌人的生成节奏,让游戏更有挑战性。
音效系统:舞台会不断播放背景音乐。为什么要播放音乐呢?因为音乐可以让游戏更有氛围,让玩家更加投入。
为什么要这样编写?
初始化变量,设置游戏开始状态
不断检查生命值,实时监控游戏状态
计时系统控制敌人生成节奏
音效系统增加游戏氛围

【角色:block】代码截图
这个角色负责绘制和管理地图!
详细程序讲解:
这个角色的代码分为两个部分:绘制地图,和记录地图数据。
绘制地图:当绿旗被点击时,这个角色会清除画笔,然后绘制地图。绘制是通过"图章"积木来实现的。角色会移动到不同的位置,然后使用"图章"积木,把当前造型印在舞台上。
为什么要用"图章"积木呢?因为"图章"可以快速地绘制很多个相同的块,就像我们用印章一样,按一下就能印出很多个图案。
记录地图数据:这个角色会创建一个列表,用来记录地图的数据。每个位置是什么类型的块,都会记录到列表中。为什么要记录呢?因为后续需要知道每个位置是什么,比如敌人需要知道哪里是路,哪里是墙。
初始化地图:当接收到"playgame"广播时,这个角色会初始化地图。初始化就是设置地图的初始状态,比如哪些位置是路,哪些位置是墙。
为什么要这样编写?
使用"图章"积木快速绘制地图
使用列表记录地图数据,方便后续使用
初始化地图设置游戏开始状态
代码结构清晰,易于理解和修改

【角色:Sprite2】代码截图
这个角色负责显示游戏的UI界面,比如金币、生命、时间等!
详细程序讲解:
这个角色的代码分为多个部分:显示金币、显示生命、显示时间等。
显示金币:当接收到"playgame"广播时,这个角色会克隆自身,创建金币显示。每个克隆体都会显示当前的金币数量。为什么要用克隆呢?因为可能有多个地方需要显示金币,用克隆可以同时显示多个。
显示生命:这个角色会显示基地的生命值。生命值会不断更新,让玩家知道基地还剩多少血。
显示时间:这个角色会显示游戏的时间。时间会不断增加,让玩家知道游戏进行了多久。
为什么要这样编写?
使用克隆机制显示多个UI元素
实时更新金币、生命、时间
提供玩家反馈,让游戏更有趣

【角色:敌人】代码截图
这个角色是游戏中的敌人,需要阻止它们到达终点!
详细程序讲解:
这个角色的代码非常复杂,分为多个部分:生成敌人、追踪防御塔、攻击防御塔、Boss战、扣血系统等。
生成敌人:当接收到"playgame"广播时,这个角色会克隆自身,创建新的敌人。每个克隆体都会从不同的位置出现,然后向终点移动。
追踪防御塔:敌人会不断追踪最近的防御塔。追踪是怎么实现的呢?通过计算距离。敌人会计算自己和每个防御塔的距离,找到最近的那个,然后向那个方向移动。
为什么要追踪防御塔呢?因为敌人需要攻击防御塔,如果防御塔被摧毁了,敌人就可以到达终点了。
攻击防御塔:当敌人碰到防御塔时,会攻击防御塔。攻击会减少防御塔的生命值。如果防御塔的生命值降到0,防御塔就会被摧毁。
Boss战:游戏有Boss战,Boss比普通敌人更强,有更多的生命值,攻击力也更强。Boss会不断切换造型,播放攻击动画。
扣血系统:当敌人被攻击时,会减少生命值。生命值会显示在敌人头上,让玩家知道敌人还剩多少血。
为什么要这样编写?
使用克隆机制生成多个敌人
追踪最近的防御塔,实现智能移动
攻击防御塔,实现战斗系统
Boss战增加游戏挑战性
扣血系统提供玩家反馈

【角色:Sprite6】代码截图
这个角色负责控制游戏的难度!
详细程序讲解:
这个角色会不断增加难度变量。难度变量会影响敌人的生命值和攻击力。难度越高,敌人越强,游戏越难。
为什么要增加难度呢?因为游戏需要越来越难,让玩家有挑战性。如果游戏一直一样难,就太简单了,没有意思。
为什么要这样编写?
不断增加难度,实现难度递增
难度影响敌人属性,让游戏更有挑战性
简单的代码实现难度系统

【角色:Sprite1】代码截图
这个角色是游戏的主角,玩家通过点击鼠标来放置防御塔!
详细程序讲解:
这个角色的代码分为多个部分:点击放置、自动攻击、寻找最近敌人、发射子弹、消耗金币等。
点击放置:当角色被点击时,会检查是否有足够的金币。如果有,就会消耗金币,放置防御塔。防御塔会出现在鼠标点击的位置。
为什么要消耗金币呢?因为放置防御塔需要花钱,这样玩家需要策略性地使用金币。
自动攻击:防御塔会自动攻击最近的敌人。攻击是通过发射子弹来实现的。防御塔会不断寻找最近的敌人,然后向那个敌人发射子弹。
寻找最近敌人:防御塔会计算自己和每个敌人的距离,找到最近的那个。为什么要找最近的呢?因为防御塔应该优先攻击最近的敌人,这样最有效。
发射子弹:当找到敌人后,防御塔会发射子弹。子弹会向敌人移动,如果碰到敌人,就会减少敌人的生命值。
消耗金币:放置防御塔需要消耗金币。不同的防御塔可能需要不同的金币,玩家需要根据情况选择。
为什么要这样编写?
点击放置,方便玩家操作
自动攻击,减少玩家操作
寻找最近敌人,提高攻击效率
发射子弹,实现攻击系统
消耗金币,增加游戏策略性

【角色:角色1】代码截图
这个角色是加速按钮,点击它可以加快游戏速度!
详细程序讲解:
当角色被点击时,会切换fast变量。如果fast等于0,游戏速度正常;如果fast等于1,游戏速度加快。
为什么要加速呢?因为有时候玩家觉得游戏太慢,想要加快游戏节奏。加速可以让玩家更快地看到游戏结果。
为什么要这样编写?
切换fast变量,实现加速功能
简单的代码实现加速系统
提供玩家选择,增加游戏灵活性

【角色:Sprite4】代码截图
这个角色是帮助按钮,点击它可以显示帮助界面!
详细程序讲解:
当角色被点击时,会隐藏帮助列表,隐藏自己,然后广播显示帮助消息。为什么要隐藏自己呢?因为点击按钮后,按钮就不需要显示了,让界面更干净。
为什么要这样编写?
点击触发帮助显示
隐藏自己,让界面更干净
广播消息通知其他角色

【角色:Sprite5】代码截图
这个角色负责显示帮助界面!
详细程序讲解:
这个角色会不断旋转,创造动画效果。旋转可以让帮助界面看起来更生动,不会太单调。
为什么要旋转呢?因为动画可以让界面更有趣,吸引玩家的注意力。
为什么要这样编写?
旋转动画让界面更生动
简单的代码实现动画效果
提供玩家帮助,让游戏更易上手
现在让我来讲解一下各个角色之间是如何协作的:
游戏开始流程:
舞台初始化变量
block角色绘制地图
Sprite2角色显示UI界面
敌人角色开始生成敌人
玩家点击鼠标放置防御塔
防御塔自动攻击敌人
敌人追踪防御塔并攻击
游戏结束显示结果
变量传递:所有角色都使用money、生命、time等变量,这样当一个角色改变了某个变量的值,其他角色都能知道游戏状态变了,然后做出相应的反应。这就像班级里有一个班长,班长说"下课",所有同学都知道要放学了一样。
广播机制:很多角色使用广播来通信。当一个角色广播消息时,其他接收到这个广播的角色就会做出反应。这就像我们用对讲机说话,其他拿着对讲机的人都能听到一样。
为什么要这样设计?
使用全局变量实现角色间通信
广播机制让角色可以互相通知
所有角色协作完成游戏逻辑
代码结构清晰,易于理解和修改
通过分析这个"塔防2"游戏,我们学到了以下重要的编程概念:
1. 地图系统:使用"图章"积木快速绘制地图,使用列表记录地图数据。这样可以让游戏有很多个不同的地图。
2. 敌人追踪:敌人会计算距离,找到最近的防御塔,然后向那个方向移动。这样敌人可以智能地攻击防御塔。
3. 自动攻击:防御塔会自动寻找最近的敌人,然后发射子弹。这样玩家不需要手动控制攻击,游戏更流畅。
4. 金币系统:放置防御塔需要消耗金币,杀死敌人可以获得金币。这样玩家需要策略性地使用金币。
5. 难度系统:游戏会不断增加难度,让游戏越来越有挑战性。难度会影响敌人的属性。
6. Boss战:游戏有Boss战,Boss比普通敌人更强,需要特殊策略才能击败。
7. UI系统:游戏会实时显示金币、生命、时间等信息,让玩家知道游戏状态。
8. 加速系统:玩家可以加快游戏速度,更快地看到游戏结果。
如果想让游戏更有趣,你可以尝试添加一些新功能:
添加更多防御塔:设计不同类型的防御塔,比如攻击塔、减速塔、冰冻塔等
添加更多敌人:除了普通敌人,还可以添加飞行敌人、隐形敌人等
添加技能系统:为防御塔添加技能,比如范围攻击、连锁攻击等
添加关卡系统:设计不同的关卡,每个关卡有不同的地图和敌人
添加成就系统:记录玩家的成就,比如"通过所有关卡"、"杀死100个敌人"等
添加排行榜:记录玩家的通关时间,显示排行榜
添加升级系统:让防御塔可以升级,提高攻击力和射程
你能尝试实现这些功能吗?
好了,今天的"塔防2"游戏就讲到这里啦!希望你们都能做出自己的"塔防2"游戏,成为小小程序员!如果有什么问题,欢迎在评论区留言哦!我们下期再见~拜拜~

。即使下载了,也要上传,不是特别方便,尤其是不好查找。

关注即可领取,下载不限速,方便快捷。



微信号|scratch-coco