今天我们完成了一个非常经典的双人对战小游戏:“乒乓弹球”。 在这个游戏里,两位玩家需要分别控制左右两边的平板(挡板),通过上下移动来回击不断弹跳的小球。如果小球突破了对方的防线,你就能获得一分!虽然看起来简单,但这可是电子游戏历史上最古老、最经典的玩法之一。

通过这个项目,同学们不仅巩固了控制角色运动的知识,还首次体验了“双人交互”与“数学反弹”的底层逻辑。

一、 项目角色设计

在这个对战舞台上,我们主要设计了以下几类核心角色:

小球: 游戏的主角,负责在舞台上不断运动、反弹并触发得分。

玩家挡板(Paddle1 & Paddle2): 左右两边的方块,由两名玩家分别控制来接球。

得分底线(Line1 & Line2): 位于舞台最左侧(x:-238)和最右侧(x:238)的隐形防线,用来判断是否进球失分。

二、 双人操作:如何独立控制两个挡板

既然是双人游戏,我们就需要为键盘分配两套独立的控制系统。我们利用了条件判断来改变两个角色的 y坐标(即上下移动)

左边玩家(Paddle1): 通过按下 W 键向上移动(将y坐标增加10),按下 S 键向下移动(将y坐标增加-10)。

右边玩家(Paddle2): 通过按下 键向上移动(将y坐标增加10),按下 键向下移动(将y坐标增加-10)。

这样,两位玩家在同一个键盘上,就能互不干扰地进行激烈对战了。

三、 小球的“物理学”:运动与反弹

小球是如何动起来的呢?其实它的核心规律只有三步:

初始发射: 当绿旗被点击时,小球会面向 45 度方向,从靠近中心的位置(x:-2 y:-2)出发。

持续运动: 在“重复执行”模块中,小球会不断移动 15 步,并且使用了 Scratch 非常强大的内置积木:“碰到边缘就反弹” 来保证它不会飞出上下边界。

球拍击球(高能预警): 当小球碰到我们的挡板(Paddle1 或 Paddle2)时该怎么办?我们用了一个简单的数学运算来计算反弹角度:让小球面向 0 - 方向 的角度,然后移动 15 步,并短暂等待 0.5 秒防止在挡板内卡球。

四、 谁赢了?双人计分系统的实现

没有分数的对战是没有灵魂的。我们通过建立**“变量”**来记录双方的成绩:

游戏刚开始时,程序会将“玩家一”和“玩家二”的分数都清零(设为0)。

得分逻辑: 如果小球碰到了左边的底线(Line1),说明左边玩家没防住,此时“玩家二”增加1分;反之,如果小球碰到了右边底线(Line2),说明右边没接住,则“玩家一”增加1分。

每次得分后,计分程序会等待 1 秒钟,给玩家一点喘息的准备时间。

五、 今天我们学会了什么?

通过这个弹球游戏,同学们掌握了非常实用的进阶编程技巧:

  • 双人按键侦测: 熟练运用“如果...那么...”来监听多个不同按键的状态。

  • 双变量管理: 建立并同时管理两个独立的计分板。

  • 数学运算的应用: 第一次利用数学减法(0 - 方向)来模拟物理世界的镜像反弹。

附件

从单人接球到双人对战,你们编写的程序变得越来越有互动性了! 回家后,欢迎大家登录网页打开自己的项目,尝试对游戏进行“魔改”:

从单人接球到双人对战,你们编写的程序变得越来越有互动性了! 回家后,希望大打开自己的项目,尝试对游戏进行“魔改”:

  • 坐标增加的数值