藍橋杯用書‎ > ‎01基礎入門‎ > ‎

1.5猜拳123

123

“剪刀石头布”是小朋友们喜闻乐见的一款猜拳游戏,几乎是每个人的必修课。过去,我们和小朋友一起玩,和爸爸妈妈、爷爷奶奶一起玩。现在,我们还可以和电脑一起玩啦。

大家都知道,比赛时常常有人先出、有人后出,后出的就是耍赖皮。如果人和电脑比赛,电脑会作弊么?

打开Scratch,一起来做一款自己的猜拳游戏吧!

Scratch游戏系列之001猜拳比赛

1、本样例适合对象

本样例适合2年级及以上,且已经学习完基础课程的孩子。

其中,低年级的孩子适合补全程序,高年级的孩子适合编写完整的程序。

2、 游戏规则

“剪刀石头布”这款游戏跟生活中的游戏规则一样。

游戏开始后,比赛双方在约定的时刻同时出示自己的拳,然后根据“剪刀胜布,石头胜剪刀,布胜石头,相同为平局”的原则判断输赢。

比赛可以一局一胜、三局两胜、五局三胜,只要你喜欢,规矩可以自己定。本程序采取一局一胜的方式,计算比赛总分。

参赛选手的一方为人,另一方为电脑。

我们在舞台上设置两个角色,一个代表人,另一个代表电脑。每个角色具有3个造型,分别按照剪刀、石头、布的顺序排列。

此外还需要设置一个“裁判”角色,用来发号施令,控制比赛进程。

3、流程图

本程序主要的流程如下图所示。

Scratch游戏系列之001猜拳比赛

 

4、制定规则

规则一:比赛双方要同时出拳。

规则二:判断胜负,“剪刀胜布,石头胜剪刀,布胜石头,相同为平局”。

规则三:如果选手胜利了,选手得一分;如果电脑胜利了,电脑得一分。

规则四:比赛结果要显示出来告诉选手。

5、准备工作

5.1     判断胜负

程序的核心算法和难点就是实现规则二。如果这一条实现了,游戏的主要功能就实现了。

“剪刀胜布,石头胜剪刀,布胜石头,相同为平局”这是对两个选手出拳状态的比较过程。

最直接的方法就是按照规则二去罗列一系列的比较条件,用“如果那么”积木去层层嵌套。这种思维方式非常符合常人的思维模式,条理清晰,易于表达。

Scratch游戏系列之001猜拳比赛

但是,按照上面的流程去编写程序,不符合计算机的口味。不是写不出来,而是写起来特别累赘。

我们一再提倡培养编程思想,
那么在遇到复杂问题的时候,
就应当主动尝试用编程思想去解决问题,
数学的角度去量化问题

仔细观察不难发现,每个选手出拳只有“剪刀、石头、布”这3种状态,同时也对应了3种造型。我们可以这样去标记这3种状态。

剪刀=1,石头=2,布=3

这样拳和数字就一一对应了。

接下来继续找规律。我们可以整理出下面的表格。

选手出拳 A电脑出拳 B计算公式 A-B计算结果比赛结果
剪刀1剪刀11-10平局
剪刀1石头21-2-1选手败
剪刀131-3-2选手胜
石头2剪刀12-11选手胜
石头2石头22-20平局
石头232-3-1选手败
3剪刀13-12选手败
3石头23-21选手胜
333-30平局

通过上表可以总结出:
用“选手出拳”去减“电脑出拳”,
计算结果如果等于
0表示平局;
结果为
1-2表示选手胜;
结果为
-12
表示选手败。

计算结果没有摸棱两可的情况,
是唯一、确定的


所以我们可以用这种方式来判断胜负。

(低龄的孩子没有学过负数,需要加以引导,可不做硬性要求,由老师完成这部分代码的编写。学习编程的孩子中,往往都会学习超龄的知识,这也是非常正常的情况)

5.2     游戏流程和细节

作为一款游戏,还需要合理的安排游戏流程,完善各种细节。比如
角色选型、
舞台布局、
声音效果、
动画效果、
操作方式、
激励机制
等等。

这些设置不拘一格,作者可以尽情发挥创作。

一款优秀的游戏,
应该具有简单的操作说明、
简洁的操作流程、
激励机制、
美观的画面、
具有声音或者动画反馈


这是我们设计游戏的指导思想和目标。

5.3     准备素材

我们可以使用Scratch软件中的角色和声音,也可以在网络上下载。首先应该选定角色造型,接下来才可以进行舞台布局、构思游戏情节、对白、声效等设置。

6、编写程序

6.1     第一版游戏

6.1.1   舞台布局

在舞台上放置4个角色,分别是“选手”、“电脑”、“裁判”、“机器人”;放置2个变量,分别是“选手得分”、“电脑得分”。舞台布局如下图所示。

Scratch游戏系列之001猜拳比赛

其中,“选手”角色用来展示人的出拳,“电脑”角色用来展示电脑的出拳,“裁判”角色用来控制比赛进程,“机器人”角色用来装饰舞台。

6.1.2   程序流程

比赛开始前,选手和电脑都保持握拳状态。用鼠标点击裁判,裁判开始倒计时,依次说出“剪刀”、“石头”、“布”,并逐渐消失。双方选手在“听到布”的口令后出拳。随后,裁判说出比赛结果。谁赢了谁就得1分。

6.1.3   程序代码

“裁判”的程序如下所示。

Scratch游戏系列之001猜拳比赛

“选手”由电脑随机控制出拳内容,程序如下所示。

Scratch游戏系列之001猜拳比赛

“电脑”由电脑随机控制出拳内容,程序如下所示。

Scratch游戏系列之001猜拳比赛

“机器人”的程序如下所示。

Scratch游戏系列之001猜拳比赛

运行程序后,发现玩家除了可以点击“裁判”开始比赛以外,并不能控制“选手”出拳,只是被动的观看,游戏可玩性太差。

接下来就来实现玩家对“选手”的控制。

6.2     第二版游戏

在第一版游戏的基础上,允许选手在倒计时期间修改出拳,其余时段不允许修改出拳。为此,首先需要修改“裁判”的规则,增加一个“准备”阶段。

为了让游戏更有趣,本例中还加入了一些声音特效。

“裁判”的程序如下所示。

Scratch游戏系列之001猜拳比赛

如何控制“选手”出拳内容呢?我们用“左移键”、“下移键”、“右移键”来使出“剪刀”、“石头”、“布”。

“选手”的程序如下所示。

Scratch游戏系列之001猜拳比赛

其他角色的程序无变化。

到此为止,“剪刀石头布”的猜拳游戏已经编完了。

每一次出拳,双方各有33.3%的机会赢,33.3%的机会输,33.3%的机会平。这是一场公平的比赛。可是电脑不甘心输给选手,于是它动了点手脚,让选手只有1%的机会赢自己。让我们来看看电脑的小心思吧。

6.3     第三版游戏

首先,“电脑”需要和“裁判”串通,由“裁判”给“电脑”通风报信,告诉它“选手”已经出拳了,你赶紧出拳克制吧。

“裁判”的程序如下所示。

Scratch游戏系列之001猜拳比赛

接下来,“电脑”就会按照兵来将挡水来土掩的战术,一一克制“选手”。“选手”想赢就得看“电脑”的心情啦。

“电脑”的程序如下所示。

Scratch游戏系列之001猜拳比赛

7、总结

Scratch做一款自己心仪的小游戏,顺便做点美工、配点声音,是不是非常有趣啊。

孩子们在编写游戏的过程中,会尽情展现自己的聪明才智,把课堂上的知识应用到编程中。无论结果是中规中矩,还是古灵精怪,家长朋友们都应该予以鼓励,这可是孩子们创作的结果啊。陪孩子一起玩,孩子会感受到快乐和幸福。

通过这款游戏,孩子们会对概率有最原始的认识,加深对随机数的理解,体会到数学带来的乐趣。家长朋友们还担心孩子不爱学习数学么?

另一方面,我们也知道了电脑游戏是可以作弊的。尤其是一些赌博游戏,更是容易弄虚作假,小朋友们可千万别去参加这种游戏哦。

(文中部分图片来自于网络,对作者表示感谢。若有版权问题请联系我,我将予以纠正。)

8、程序链接

猜拳游戏第一版:https://kada.163.com/project/1421260-954149.htm

猜拳游戏第二版:https://kada.163.com/project/1419278-954149.htm

猜拳游戏第三版:https://kada.163.com/project/1421265-954149.htm

 

ą
01.jpg
(79k)
謝東森,
2021年2月25日 上午12:14
ą
02.jpeg
(43k)
謝東森,
2021年2月25日 上午12:14
ą
03.jpeg
(89k)
謝東森,
2021年2月25日 上午12:14
ą
04.jpg
(31k)
謝東森,
2021年2月25日 上午12:14
ą
05.jpg
(1616k)
謝東森,
2021年2月25日 上午12:14
Comments