经过上一讲的突击训练,我们从门外汉开始走向编程的深坑,我们今天还要对上一讲的游戏进行加强。

上一个游戏还能演变成什么游戏呢?

我其实知道你们想到的是老hu机什么的,确实,上一个游戏改改可以变成老hu机,但是我们这不是要教小朋友吗,怎么可以学做老hu机?

大于、等于、小于的比较,是不是和剪刀石头布的游戏很像呢?我们要学点健康的东西。

好了,不会话了,我们开始:

首先,因为一共只有3样东西,剪刀石头布,小猫从当中选一个出来,那么随机范围只有从1-3,我们可以用1代表剪刀,2代表石头,3代表布,如果小猫随机选到了2,那就是说明小猫选了剪刀,同理玩家的选择也是这样。

然后就还是比较双方的数字,一共会有多少情况呢?

1-1,1-2,1-3

2-2,2-1,2-3

3-1,3-2,3-3

一共比较9种情况,再给出结果,

最后我们再循环一下,就可以完成这个游戏。

那我们就先动手试一试看:

1、我们先让小猫给个提示,说明一下数字代表什么;

2、然后新建一个变量,让小猫随机选择的这个数字存入变量中,准备作为比较对象,同时也要让玩家有一个变量,也放入输入的数字进行比较:

然后准备给小猫的变量充值,当然我们程序员都是叫赋值,其实都是一样:

然后再放入上节课我们学的随机模块:

这样小猫就会在1-3中随机选一个数字,对应着也就是剪刀石头布中的一个。

然后再给玩家变量充值,不,是赋值:

看到侦测模块里面的椭圆形的模块了吗,是不是和变量的椭圆形很像?

它就是玩家在输入框中回答之后的内容存储变量,也就是说其实系统在玩家输入数字的时候变量已经建立好了,不过我们为了让程序更有条理看得更清楚,所以再加入了一个“玩家选择的数”变量,那么,我们只要将“回答”这个变量赋值给“玩家选择的数”变量,就可以了:

好了,现在双方都已经选择好了,要开始进行上述的九种情况的比较,这个我们在上节课中也已经讲过,于是就要用经典的“如果……那么……”模块:

但是上节课这里是比较数字大小,那这个石头剪刀布我们怎么比较呢?比小大不可以了啊?

这里我们就要用到新的姿势点:

这是“数字和逻辑运算”功能里面的三个功能模块,第一个是要同时满足两个条件,第二个是只要满足两个菱形内容中的一个,第三个是菱形框中的内容不成立。

这是我们程序员以后会经常接触到的逻辑关系,放在我们今天的游戏里,那么就是“小猫选择了1”且“玩家选择了1”,这个条件如果成立,就可以放在如果……那么中执行判断结果输出“打平了!”,具体怎么做呢?看下图:

将菱形框内放入带等号的菱形框,然后再放入变量:

上图做出来了我们第一个判断情况,那么就按这个方式,我们可以做出其余的八种情况,这里有一个小技巧,我们可以在黄色“如果……那么”模块上,单击鼠标右键,可以出现隐藏菜单:

“添加注释”就是对这一行代码进行批注,你可以选择试一试看,这个不多说;“删除”也很容易理解,这是我们常用的删除代码的方式,我们需要选择的是“复制”,点一下,哎我去,这个功能模块包括里面的模块都完整的拷贝了一份,这样我们就只要修改一下里面的内容就可以了:

修改如下:

看到了吗,我们把9种比较情况全部都通过代码写出来了,如果代码页面太长,我们可以滚动鼠标中间滚轮或是点击右下角的放大缩小按钮:

减号是缩小,等号是整理,加号是放大,都点点看可以了解一下。

这样代码我们基本都写完了,不过我们这样只能玩一次,为了可以不停玩下去,那么我们就需要用到上节课学习的循环模块,如果想玩有限次数,那么就用:

如果不限制,就用:

我们这里用玩5次来试一试,5次之后小猫和我们告别,游戏结束:

点击右下角的减号,缩小代码块,然后放入控制模块里面的重复执行有限次数代码,循环5次后,小猫和我们说拜拜然后全部结束:

游戏已经编写完成,我们把程序跑起来看看:

我先输入个1,点一下蓝色的勾:

哎呀开场就输了,再多跑几次看看有没有错误,程序员叫bug。一定要反复跑几次,仔细检查代码有没有问题。

跑完5次后,小猫和我们告辞,游戏结束。

是不是很快就能写出很酷的游戏了?

就问你有没有成就感?

嗯,有希望,有前途,我们下节课暂时就不继续学代码,学习一点Scratch的舞台知识,这个也是非常有趣的内容,我们下回见。


Scratch零基础魔法编程(一)为什么你要学Scratch儿童编程
Scratch零基础魔法编程(二)来不及解释了,马上开始编程游戏
Scratch零基础魔法编程(三)剪刀石头布
Scratch零基础魔法编程(四)舞台区详解
Scratch零基础魔法编程(五)角色详解
Scratch零基础魔法编程(六)用“角色”与“舞台”的组合做个小动画
Scratch零基础魔法编程(七)“触碰”基础
Scratch零基础魔法编程(七)篇外.用小动画和触碰能做大型游戏?
Scratch零基础魔法编程(八)声音模块详解

Scratch(三)剪刀石头布的更多相关文章

  1. 基于空镜像scratch创建一个新的Docker镜像

    我们在使用Dockerfile构建docker镜像时,一种方式是使用官方预先配置好的容器镜像.优点是我们不用从头开始构建,节省了很多工作量,但付出的代价是需要下载很大的镜像包. 比如我机器上docke ...

  2. [Full-stack] 世上最好语言 - PHP

    前言 本篇是对个人PHP, Laravel系列博文的总结与思考. 目的在于理清并熟练如下过程: "需求 --> Usercase --> UI --> 框架 --> ...

  3. 香蕉派(or 皮?)上手初体验 -- 外观鉴赏,安装,配置&总结

    一.前言及简单介绍 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbG9uZ2Vyem9uZQ==/font/5a6L5L2T/fontsize/400/f ...

  4. 玩转树莓派《三》——Scratch

    今天大姨妈折磨了一整个白天,稍微好点,现在打开实验楼,看到有个朋友回答了关于ubuntu上面操作SQL 的时候到处数据到txt文件,被批评没有思考问题,或许吧,虽然那个权限我现在想起确实是可读可写的, ...

  5. 少儿编程崛起?2020年4月编程语言排名发布——Java,C,Python分列前三,Scratch挤进前20

    前三并没有什么悬念,依然是Java,C,Python.C与Java的差距正在缩小,不过我们不用担心,在大数据分析领域Java,Python依然都是不可或缺的. 基于图形的基于块的编程语言Scratch ...

  6. Linux From Scratch(从零开始构建Linux系统,简称LFS)- Version 7.7(三)

    八. 构建LFS系统 1. 准备虚拟内核文件系统 内核会挂载几个文件系统用于自己和用户空间程序交换信息.这些文件系统是虚拟的,并不占用实际磁盘空间, 它们的内容会放在内存里. mkdir -pv $L ...

  7. Linux From Scratch(从零开始构建Linux系统,简称LFS)(三)

    九. 系统配置 1. 安装 LFS-Bootscripts-20150222 软件包包含一套在 LFS 系统启动和关闭时的启动和停止脚本. cd /sources tar -jxf lfs-boots ...

  8. Scratch编程:快乐的小马(三)

    “ 上节课的内容全部掌握了吗?反复练习了没有,编程最好的学习方法就是练习.练习.再练习.一定要记得多动手.多动脑筋哦~~” 01 — 游戏介绍 这是一款简单的小游戏,实现了一匹小马跑来跑去(小马有跑动 ...

  9. Scratch少儿编程系列:(三)第一个例子 潜水员

    一. 选择背景 在上一节系统界面的介绍中,选择"6角色"的左边,点击"从背景库中选择背景". 选择主题水下中的"underwater3". ...

随机推荐

  1. java.util之一:ArrayList

    ArrayList是java中的线性结构的一种表示方法,在java中使用频率非常高,下面来一步一步分析其底层的实现.(JDK1.8) 一.构造函数 ArrayList的构造函数有三个,分别如下, 我们 ...

  2. 源码分析关于SpringBoot2.x版本与1.5版本之间的问题

    1.Social包在SpringBoot2.x移除问题 spring-boot-autoconfigure1.5x版本中支持facebook,领英和推特官方文档:https://docs.spring ...

  3. Java开发手册-编程规约精选

    # Java开发手册-编程规约精选 ## 总约 - 采用驼峰写法 ## 变量 - 首字母小写 ## 方法 - 方法名首字母小写- 参数首字母小写 ## 引用 - <阿里巴巴Java开发手册> ...

  4. Android 关于selector中item顺序的问题

    selector的item从上到下是按照匹配原则来改变状态的,一旦匹配到某个item的状态,就不会继续往下匹配了. https://blog.csdn.net/l403040463/article/d ...

  5. Spring Junit4 接口测试

    Junit实现接口类测试 - dfine.sqa - 博客园http://www.cnblogs.com/Automation_software/archive/2011/01/24/1943054. ...

  6. Java基础 println 输出常量的示例

        JDK :OpenJDK-11      OS :CentOS 7.6.1810      IDE :Eclipse 2019‑03 typesetting :Markdown   code ...

  7. 报错:flutter: Another exception was thrown: Could not find a generator for route RouteSettings

    原因是一个工程中多次使用MaterialApphttps://stackoverflow.com/questions/49132299/could-not-find-a-generator-for-r ...

  8. linux后台启动springboot并指定日志文件名称

    如果用nohup启动jar包的话,默认的日志文件就是nohup.out,那么如果启动多个jar包的话,看日志文件就麻烦了,因为他们都会写入到nohup.out文件中. 所以我们来指定一下不同jar包的 ...

  9. RabbitMQ 入门教程(PHP版) 使用rabbitmq-delayed-message-exchange插件实现延迟功能

    延迟任务应用场景 场景一:物联网系统经常会遇到向终端下发命令,如果命令一段时间没有应答,就需要设置成超时. 场景二:订单下单之后30分钟后,如果用户没有付钱,则系统自动取消订单. 场景三:过1分钟给新 ...

  10. 转 zabbix 优化方法 以及 后台数据库查询方法 两则

    ############sample 1 https://blog.51cto.com/sfzhang88/1558254 如何从Zabbix数据库中获取监控数据 sfzhang关注6人评论40627 ...