网上有个“球球情侣2”的游戏,游戏中有两个不同颜色的球,玩者首先用鼠标画线画出球移动的路,分别单击两个球,使两球沿线移动,如果两球碰到一起,进入下一关。外孙女喜欢这个游戏,也想用scratch自己编写一个。编写很多关是游戏公司的事,我们只编写一个最简单的一关,说明实现的方法。本程序要实现两个功能,第一,用鼠标画线,但在鼠标移出工作区时不能画线,单击球时不能画线,在红色块上不能画线。第二,球沿所画线移动。
下面三个图是运行效果图。最左图程序运行后的初始状态,中间图增加了用鼠标画的黑线,右图是单击两球后,两球分别沿线移动,最后相碰。

程序中共有5个角色见下图。角色1和角色2中无脚本,也可删除这2个角色,画在背景中,这样不同关可用不同背景,而其它关基本不用修改脚本。角色3用来画线。角色3的大小要合适。当点击球角色时,脚本要判断是画线还是点击球角色,首先将角色3移到所画线起点鼠标点击处,这时球和角色3发生碰撞,画线程序就知道不是画线了。角色3不能太大,画线时碰到球角色,可能发生错误。

角色3的画线脚本如下图。首先建立一个变量:点击球后不画线标识,初始值为0,允许画线脚本工作,当点击球后,球开始移动不再允许画线,置其为1。画线基本要求是:当鼠标按下,从鼠标按下位置开始画线,只要鼠标不抬起,沿着鼠标移动轨迹画线,当鼠标抬起画线结束。鼠标单击两个球以及scratch系统带有绿旗的运行按键、带有红色圆的停止按键和缩放按键时,不画线,碰到红色块时不画线。判断方法是,如鼠标Y坐标大于180或角色3碰到两个球时,不画线。下图第1条脚本是移动角色3到右上角,这样当球移动时不会碰到角色3。第1条判断脚本保证了只有鼠标按下且鼠标在工作区域时开始准备画线。第2条判断脚本保证了鼠标点击了球时不会画线。不碰到红色,在落笔和抬笔之间的脚本移动角色3轨迹被画在屏幕上,碰到红色时不落笔不画线。这里判断鼠标抬起脚本保证鼠标抬起时,画线结束。不知何故,画线脚本只有在全屏模式下才能画线。

蓝球移动脚本如下图。这里要求球不能穿过黑线和红色方块。要求所画的黑线的X坐标沿着移动方向连续增加(或减少)时,黑线的Y坐标跟着变小或保持不变,换句话说,黑线上不能有突起或坑,否则球将不能通过这个突起或坑。还要求两条黑线之间的距离要大于球的半径,否则球不能在两条线之间正确移动,可试一下,在球上下画两条间距小于球直径的线,点击球后的效果。
在单击蓝色球脚本中,第1条脚本将“点击球后不画线标识”置为1,不允许再画线。其后脚本等待鼠标抬起,避免球移动后,在鼠标点击处画不必要的线。画线可能穿过球,其后脚本首先要判断一下球是否碰到黑色,如是,球要向上离开黑线,否则球向下寻找黑线。第1个如果_那么_否则语句实现了以上功能,否则之后脚本为找到黑线,球连续下降,如果碰到红色,估计还未画黑线,提示,球移到初始位置,停止执行下边脚本。碰到黑色即碰到黑线,Y坐标增加5,使球不再碰到黑线,为下边移动脚本做好准备。下边无条件重复执行中的脚本,是球移动脚本。第一步要判断移动方向。根据前边假设,黑线是斜线,前边脚本已使球未碰到黑线,坐标X增加或减少使其左右移动,必定一边碰到黑线,一边碰不到黑线,显然球的移动方向是未碰到黑线的一侧。这里X坐标增加10,球右移10,如碰到黑色或红色,表示球移动方向是左,否则向右。下边如果_那么_否则语句中,否则之后的脚本使球向右移动,那么之后脚本使球向左移动。向左和向右脚本基本相同,这里仅解释一下向左移动脚本。首先,右移10步碰到了黑色,必须减10步(注意,向右移未碰到黑或红色,不必减10步)。下边重复执行直到碰到黑色或红色脚本是球X坐标减少左移时,是否碰到黑色或红色,不检测Y坐标减少5步碰到黑色或红色情况,因为其后的判断脚本如碰到黑色或红色时,球Y坐标增加5步,使其碰不到黑或红色。这样,球坐标X一直减少向左移,直到碰到黑或红色,退出如果_那么_否则语句,执行下一次循环。这里的所有判断颜色语句中都是是否碰到黑或红色,这是因为球也不能穿过红色的方块。这些脚本能否在更复杂的环境运行,没有进一步测试,如有人发现错误,请告知。
当绿旗被点击的脚本中,首先将球移到初始位置,再重复判断是否碰到ball2。完成角色ball脚本,可以把其所有脚本拖到本文第2图的角色ball2图标中,单击ball2图标可看到和ball完全相同的脚本,只需修改两处:初始位置和判断是否碰到ball。

用scratch实现网上游戏“球球情侣2”相关推荐

  1. 用pygame实现网上游戏‘球球情侣‘(检测矩形和某颜色碰撞的例子)

    网上有个'球球情侣'游戏,游戏中有两个不同颜色的球,玩者首先用鼠标画曲线画出球移动的路径,分别右击两个球,使两球沿曲线移动,如果两球碰到一起,进入下一关.编写很多关是游戏公司的事,我们只编写最简单的一 ...

  2. 用pygame实现网上游戏‘球球情侣‘(用pygame.mask完成碰撞检测)

    网上有个'球球情侣'游戏,游戏中有两个不同颜色的球,玩者首先用鼠标画曲线画出球移动的路径,分别右击两个球,使两球沿曲线移动,如果两球碰到一起,进入下一关.编写很多关是游戏公司的事,这里只编写最简单的一 ...

  3. 《球球大作战》游戏优化之路(上)

    自从2015年<球球大作战>发布以来,现已拥有五亿多的玩家.如此庞大的玩家群体,对游戏的画面,性能要求是非常高的.在Unite Shanghai 2019大会中,<球球大作战> ...

  4. java实现简单窗体小游戏----球球大作战

    java实现简单窗体小游戏----球球大作战 需求分析 1.分析小球的属性: ​ 坐标.大小.颜色.方向.速度 2.抽象类:Ball ​ 设计类:BallMain-创建窗体 ​ BallJPanel- ...

  5. 《球球大作战》游戏优化之路(下)

    演讲内容 大家好,我叫徐宇峰,负责<球球大作战>的性能优化. <球球大作战>现在拥有五亿多的玩家,为了吸引如此庞大的玩家群体,我们提供给玩家更炫更酷的皮肤,这些美轮美奂的皮肤, ...

  6. 安卓3d游戏引擎_3D球闯关游戏-3D球闯关游戏安卓官方版预约 v1.2.5

    3D球闯关游戏是一款让人上瘾的球球跳跃闯关游戏,在音轨上不断跳跃,控制球球顺利到达终点,玩家需要在曼妙的背景音乐下找到自己的闯关节奏,大家只有找到了节奏才能更轻松的完成挑战,轻松点击球球就可以让它不断 ...

  7. java做小窗体_java实现简单窗体小游戏----球球大作战

    java实现简单窗体小游戏----球球大作战 需求分析 1.分析小球的属性: ​坐标.大小.颜色.方向.速度 2.抽象类:Ball ​设计类:BallMain-创建窗体 ​BallJPanel-画小球 ...

  8. C++ 小游戏-球球飞车

    C++ 小游戏-球球飞车 功能实现 地图随机生成 彩色界面打印 按键检测 存档 商店 运行截图 核心代码展示 地图生成: void rand_map(int a,int pd) {srand(time ...

  9. 最新最酷Android手机游戏灵活的球球代码

    ********休闲娱乐灵活球球小游戏******** ==========================================我是分割线========================= ...

最新文章

  1. 树莓派:一个关于教育的故事
  2. [转]c++之菱形继承
  3. JAVA构造器的实际使用
  4. 对的调用没有匹配的函数_前端开发之——函数、事件、js对象
  5. RabbitMQ管理(3)——Web端管理
  6. zabbix监控docker容器
  7. java算法题走楼梯,程序员必学算法「动态规划」:爬楼梯(完全背包解法)
  8. XDP: eXpress Data Path
  9. 一文了解 AI 改变生活的 14 种姿势
  10. 封装dialog弹窗
  11. 阿里矢量图库 iconfont 引入项目使用方法
  12. 8.《创业邦》:十大创业困境
  13. USB转RS485代替PC/PPI通讯电缆
  14. vue 中面包屑带跳转的做法
  15. 矩阵正定 matlab,matlab 错误使用 chol 矩阵必须为正定矩阵
  16. 群里的初级工程师求助说,要采集采招数据,必须给他安排上
  17. Android 控件GridView之仿支付宝钱包首页带有分割线的GridView九宫格的完美实现
  18. 部署并安装Discuz论坛
  19. mysql char 50_MySQL中数据类型varchar(50)和char(50)是完全相同的。
  20. 英语语法最终珍藏版笔记-2关于动词时态的几点说明

热门文章

  1. [自动化测试] 去哪儿机票搜索
  2. echarts风向图
  3. SUN Solaris10 安装配置NET-SNMP——方式2(pkg软件包)
  4. 邱锡鹏神经网络答案github,邱锡鹏神经网络怎么样
  5. R语言中的方差分析汇总
  6. 【算法】25匹马,每次最多赛5匹,最少几次可以赛出前三名?
  7. 小米平板位置服务器,腾讯内容开放平台
  8. 《编程珠玑》高清pdf版
  9. 优秀课件笔记之决策支持系统
  10. 【20211127】【Python】Python中常用的矩阵操作,单位阵、对角阵、矩阵的特征值和特征向量、矩阵的协方差