点击蓝字 关注我们

哈喽,朋友们,又见面了!今天我们来学习一个超级酷的Scratch游戏吧?大家肯定都喜欢打篮球,对吧?今天我们就来看看如何用Scratch制作一个"篮球之王"游戏!

真正的课程导入语:同学们!有没有梦想过成为一名篮球明星,在球场上投篮得分,成为全场的焦点?今天的Scratch课堂,我们就要解锁超好玩的"篮球之王"游戏!想象一下:你亲手制作的游戏,有篮球、球员、篮板,还有计分系统,你可以控制球员投篮,看看能得多少分。这一切都能在Scratch里实现!通过这节课,我们会学会角色移动、碰撞检测、计分系统这些核心编程技巧,更能锻炼逻辑思维和创造力。接下来,就让我们一起化身小小程序员,用代码打造属于自己的篮球王国吧!准备好开启这场编程篮球之旅了吗?现在,Let's code!
我希望你能通过作品效果,总结作品的关键操作步骤。

(扫码体验后获取源码)
游戏初始化和菜单显示
选择游戏模式(普通、时间挑战、练习)
控制球员投篮
篮球碰到篮板和篮筐的物理效果
计分系统和最高分记录
游戏结束后显示得分
重新开始游戏
你总结的可能跟我不一样,但是大差不差,也许你的更好。
思考时间
运动模块:移到x:x,y:y、将X坐标增加、将Y坐标增加、移到最前/最后、面向方向、移动步数
外观模块:隐藏、显示、切换造型、将大小设置为、将特效设置为、清除特效、下一个造型
事件模块:当绿旗被点击、当接收到广播、当作为克隆体启动时、当角色被点击
控制模块:重复执行、重复x次、如果xxx那么、等待x秒、克隆、删除克隆体、停止脚本
侦测模块:碰到颜色、碰到对象、按下鼠标、鼠标X坐标、鼠标Y坐标、计时器
变量模块:新建变量、将变量设置为、将变量增加、云变量
声音模块:播放声音、停止所有声音、播放声音直到完成
数据模块:新建列表、添加到列表、删除列表项、获取列表项
篮球之王游戏逻辑├── 游戏初始化│ ├── 设置初始变量(creator、best、best time trial等)│ ├── 切换到默认背景│ └── 检测鼠标点击状态├── 菜单系统│ ├── 显示主菜单│ ├── 播放背景音乐│ ├── 选择游戏模式(普通、时间挑战、练习)│ └── 开始游戏├── 游戏运行│ ├── 球员角色│ │ ├── 移动到投篮位置│ │ ├── 投篮动作│ │ └── 播放投篮声音│ ├── 篮球角色│ │ ├── 从球员手中抛出│ │ ├── 物理运动(重力、弹跳)│ │ ├── 碰撞检测(篮板、篮筐)│ │ └── 得分判断│ ├── 篮板和篮筐│ │ ├── 移动到随机位置│ │ ├── 碰撞响应│ │ └── 篮网动画│ ├── 计分系统│ │ ├── 记录得分│ │ ├── 显示得分│ │ └── 更新最高分│ └── 游戏结束│ ├── 显示游戏结束界面│ ├── 显示最终得分│ └── 重新开始选项└── 特效系统 ├── 投篮轨迹 ├── 得分特效 └── 背景动画
我希望你在看下面过程之前,你自己能根据作品效果做出至少80%(做不出来的话,你要清楚的知道自己哪里不会哪里不清晰)。这样你在看下面的操作之后才能真正学到一些"知识",不经过自己思考就得到的答案,不深刻,逻辑思维也不会得到提升。
舞台上有很多重要的变量,它们就像游戏的"小黑板",记录着各种重要信息:
游戏状态变量:
mouse down:记录鼠标是否被按下
time trial?:记录是否是时间挑战模式
practice?:记录是否是练习模式
game running?:记录游戏是否正在运行
start game?:记录是否开始游戏
物理变量:
y vel:记录篮球的垂直速度
x vel:记录篮球的水平速度
ball y vel:记录篮球的垂直速度
ball dribble y vel:记录篮球运球时的垂直速度
dribble?:记录是否在运球
游戏数据变量:
score:记录游戏得分
best:记录普通模式的最高分
best time trial:记录时间挑战模式的最高分
☁ world best:记录全球最高分(云变量)
☁ time trial best:记录全球时间挑战最高分(云变量)
其他变量:
creator:记录游戏创作者
ball:记录当前使用的篮球类型
palm tree dir:记录棕榈树的方向
old timer:记录旧的计时器值
为什么要用这些变量呢?因为游戏需要记录各种状态和数据,就像我们上学要带笔记本记录知识点一样,变量就是游戏的笔记本!
舞台初始化代码:

这段代码的作用是初始化游戏的基本设置:
首先切换到默认背景,就像我们准备一张干净的画布
然后设置游戏创作者的名字为 kevin_eleven_1234
接着将最高分和时间挑战最高分设置为 0
最后不断检测鼠标是否被按下,并记录按下的次数
为什么要这样设计呢?因为游戏开始前需要做一些准备工作,就像我们考试前要准备好文具一样。检测鼠标点击状态是为了后续的菜单操作和投篮动作。

这个角色是游戏的标题角色,负责显示游戏名称和动画效果。
详细程序讲解:
当接收到广播 'menu' 时,会显示出来,移动到舞台上方,并且有一个放大的动画效果
当绿旗被点击时,会克隆自己,然后播放入场动画
当接收到广播 'start game' 时,会隐藏起来,准备开始游戏
为什么要这样设计呢?游戏开始前的标题动画可以让玩家感觉游戏更专业,就像我们看电影前的片头一样。克隆自己是为了创建多个动画效果,让标题看起来更有层次感。

这个角色是游戏的核心角色,负责投篮和得分。
详细程序讲解:
当接收到广播 'start game' 时,会移动到球员手中,准备投篮
当玩家按下鼠标时,会根据鼠标位置计算投篮力度和方向,然后将篮球抛出
篮球会受到重力影响,不断下落,碰到篮板或篮筐时会反弹
如果篮球投进篮筐,会增加得分,并播放得分音效
如果篮球出界,会判定为投篮失败
为什么要这样设计呢?篮球是游戏的核心,投篮是游戏的主要玩法。通过物理引擎模拟篮球的运动,让游戏更真实,就像我们在现实中投篮一样。

这个角色是游戏中的球员,负责执行投篮动作。
详细程序讲解:
当接收到广播 'start game' 时,会移动到投篮位置
当玩家按下鼠标时,会执行投篮动作,包括手臂抬起和篮球抛出
投篮后会切换到庆祝造型,然后准备下一次投篮
为什么要这样设计呢?球员角色让游戏更生动,投篮动作让玩家感觉自己在控制一个真实的球员,增加游戏的代入感。

这个角色负责游戏的菜单按钮,包括开始游戏、选择模式等。
详细程序讲解:
当接收到广播 'menu' 时,会克隆出多个按钮,包括开始游戏、时间挑战、练习模式等
当玩家点击按钮时,会根据按钮的造型编号执行不同的操作,比如开始游戏或选择模式
按钮会有高亮效果,当鼠标碰到时会变亮,增加交互感
为什么要这样设计呢?按钮是游戏的交互界面,让玩家可以选择不同的游戏模式。克隆多个按钮可以节省代码,让每个按钮都有相同的行为。

这个角色是游戏中的篮板,负责反弹篮球。
详细程序讲解:
当接收到广播 'start game' 时,会移动到随机位置,增加游戏的挑战性
当篮球碰到篮板时,会根据碰撞位置反弹,模拟真实的物理效果
为什么要这样设计呢?篮板是篮球游戏中必不可少的元素,随机位置可以让每次游戏都有不同的体验,增加游戏的可玩性。

这个角色是游戏中的篮筐,负责判断是否得分。
详细程序讲解:
当接收到广播 'start game' 时,会移动到篮板下方的位置
当篮球穿过篮筐时,会判定为得分,并播放得分音效
为什么要这样设计呢?篮筐是得分的目标,只有篮球穿过篮筐才算得分,这是篮球游戏的基本规则。

这个角色是游戏中的篮网,负责显示篮球进筐时的动画。
详细程序讲解:
当接收到广播 'start game' 时,会克隆出多个篮网链条
当篮球进筐时,篮网会摆动,增加得分的视觉效果
为什么要这样设计呢?篮网动画让得分更有视觉冲击力,让玩家感觉更爽,就像我们在现实中看到篮球刷网而入一样。

这个角色负责显示游戏的得分和时间。
详细程序讲解:
当接收到广播 'start game' 时,会开始显示得分
在时间挑战模式下,会显示剩余时间
当得分增加时,会更新显示的数字
为什么要这样设计呢?得分和时间是游戏的重要信息,玩家需要随时知道自己的得分和剩余时间,就像我们考试时需要看时间一样。

这个角色负责显示游戏中的文字提示,比如"得分!"、"未命中"等。
详细程序讲解:
当接收到广播 'gain point' 时,会显示"得分!"的文字,并播放得分音效
当接收到广播 'missed' 时,会显示"未命中"的文字,并播放失败音效
为什么要这样设计呢?文字提示可以让玩家更清楚地知道投篮的结果,增加游戏的反馈感,就像我们在游戏中听到"得分!"的欢呼声一样。

这个角色是游戏的背景装饰,增加游戏的场景感。
详细程序讲解:
当接收到广播 'menu' 时,会显示出来
会随机改变方向,模拟风吹树动的效果
为什么要这样设计呢?背景装饰让游戏更美观,就像我们在公园打篮球时看到的风景一样,增加游戏的趣味性。

轨迹角色的抛物线效果是通过数学计算和Scratch的运动积木实现的,让我们来详细分析一下:
从截图中可以看到,轨迹角色的代码主要分为两部分:
初始化部分:当接收到广播 'start game' 时,隐藏轨迹角色,设置大小等初始状态
轨迹计算部分:这是实现抛物线的核心代码
轨迹抛物线的实现主要基于以下步骤:
计算初始速度:
y vel 初始值设为 20
根据鼠标Y坐标调整垂直速度:y vel += (鼠标Y坐标 + 150) / 7
根据鼠标X坐标计算水平速度:x vel = (鼠标X坐标 + 240) / 20
模拟重力效果:
每次循环将 y vel 减少 2,模拟重力加速度
这样篮球会先上升,然后逐渐下降
绘制轨迹:
循环执行多次,每次根据当前速度更新位置
同时增加幽灵特效,让轨迹逐渐消失
当 y vel > 0 时克隆自身,创建轨迹点
让我们逐行分析核心代码:
初始化速度:

这里根据鼠标位置计算投篮的力度和方向
鼠标Y坐标越高,垂直速度越大,投篮越远
鼠标X坐标决定水平方向,左偏或右偏
抛物线运动:

循环次数根据鼠标位置计算,确保轨迹长度合适
每次循环减少垂直速度,模拟重力
同时移动X和Y坐标,形成抛物线
增加幽灵特效,让轨迹逐渐透明
当篮球上升时克隆自身,创建轨迹点
真实感:通过模拟重力加速度,让轨迹更符合现实中物体的运动规律
辅助瞄准:轨迹可以帮助玩家直观地看到篮球的飞行路径,更容易瞄准篮筐
视觉效果:逐渐消失的轨迹点让游戏看起来更专业,就像我们在电视上看到的篮球比赛回放一样
交互性:轨迹会根据鼠标位置实时变化,让玩家感觉自己在控制投篮的力度和方向
轨迹角色计算出的速度值(x vel 和 y vel)会传递给篮球角色,篮球角色会使用这些速度值来模拟真实的投篮运动。这样轨迹和实际篮球的运动路径就会完全一致,让玩家可以通过轨迹准确预判投篮结果。
所有角色的代码都是相互关联的,形成一个完整的游戏系统:
1. 广播通信:角色之间通过广播来通信,比如当开始游戏时,会广播 'start game' 消息,所有接收到这个消息的角色都会开始执行游戏逻辑。
2. 变量共享:所有角色都使用同一个游戏状态变量、得分变量等,这样当一个角色改变了这些变量的值,其他角色都能知道游戏状态变了,然后做出相应的反应。
3. 碰撞检测:不同角色之间通过碰撞检测来交互,比如篮球碰到篮板、篮球碰到篮筐、鼠标碰到按钮等。
4. 游戏流程:游戏的流程是这样的:
游戏初始化 → 显示菜单 → 选择游戏模式 → 开始游戏 → 投篮 → 篮球运动 → 碰撞检测 → 得分计算 → 游戏结束 → 显示得分 → 重新开始
如果想让游戏更有趣,你可以尝试添加一些新功能:
添加更多篮球类型:比如不同颜色、不同大小的篮球,每种篮球有不同的物理属性
添加更多球员角色:比如不同造型的球员,每种球员有不同的投篮动作
添加更多场景:比如室内篮球场、室外篮球场、街头篮球场等不同的背景
添加多人模式:让两个玩家轮流投篮,看谁得分更高
添加道具系统:比如增加投篮准确度的道具,或者让篮筐变大的道具
添加成就系统:比如连续投进5个球获得"神投手"成就
添加背景音乐:为不同的游戏模式添加不同的背景音乐,增加游戏氛围
你能尝试实现这些功能吗?
通过分析这个"篮球之王"游戏,我们学到了以下重要的编程概念:
1. 物理引擎:使用变量模拟重力、速度、加速度等物理概念,让篮球的运动更真实,就像我们在现实中看到的物体运动一样。
2. 碰撞检测:使用碰撞检测来检测篮球是否碰到篮板、篮筐等物体,这是游戏交互的基础。
3. 广播通信:使用广播来实现角色之间的通信,让不同角色能够协同工作,就像我们在团队中互相传递信息一样。
4. 克隆技术:使用克隆体来创建多个相同的角色,比如多个篮网链条、多个菜单按钮等,节省代码,提高效率。
5. 云变量:使用云变量来记录全球最高分,让玩家可以和全世界的玩家比较成绩,增加游戏的竞争性。
6. 状态管理:使用变量来管理游戏的不同状态,比如游戏是否正在运行、是否是时间挑战模式等,让游戏逻辑更清晰。
7. 动画效果:通过切换造型、改变大小、设置特效等方式来创建动画效果,让游戏更生动,就像我们看动画片一样。
好了,今天的"篮球之王"游戏就讲到这里啦!希望你们都能做出自己的篮球游戏,成为一名编程小高手!如果有什么问题,欢迎在评论区留言哦!我们下期再见~拜拜~
喜欢这篇文章的话,记得点赞、收藏、转发给你的小伙伴们哦!我们下期再见!👋

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

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



微信号|scratch-coco