运用计算思维解读“石头剪子布”游戏及程序实现

2019-08-13 09:09姜阳
中国信息技术教育 2019年14期
关键词:剪子程序解决问题

姜阳

在实际教学中,如何通过计算思维解决问题呢?下面,通过对“石头剪子布”游戏的思维解读,让学生依次经历“探究问题,总结规则—抽象问题特征—建立结构模型—编程解决部分问题—迁移解决全部问题”的完整过程,体验程序设计中运用计算思维解决问题的方法。

● “石头剪子布”游戏的思维解读

运用计算机解决问题的第一步是将现实世界中的事物进行抽象和设计,“石头剪子布”游戏的完成,首先要做好游戏思维的抽象,构建游戏的属性、规则和方法。

1.“石头剪子布”游戏的起源

“石头剪子布”游戏是一款猜拳游戏,又称为“猜丁壳”,起源于中国,最早记载于《全唐诗》中的《招手令》,诗中用比喻的手法生动地描述了类似的游戏。明朝李日华《六研斋笔记》载云:“俗饮,以手指屈伸相搏,谓之豁拳,又名豁指头。”随着世界贸易的发展,这款游戏传播到世界各地,在很多比赛中,由于该游戏简单快速且不需要任何道具,被选择用来决定比赛的先发战队。

2.“石头剪子布”游戏的规则

游戏规则:石头打剪刀,布包石头,剪刀剪布。

根据游戏规则,会产生如下页表所示的结果。

● 计算机构建“石头剪子布”游戏的思维解读

题目要求:编写一个程序,让计算机同我们一起玩“石头剪子布”游戏。人输了,则输出“输了”;人赢了,则输出“赢了”;人与计算机平了,则输出“平局”。

困惑:①计算机如何能够像人类一样用手来显示“石头”“剪子”“布”?②人类用手显示“石头”“剪子”“布”,计算机如何能看懂?③如何让计算机随机选择“石头”“剪子”“布”模拟人类游戏的过程?

解决方法:

第一个问题:计算机如何能够像人类一样用手来显示“石头”“剪子”“布”?

计算机没有人类一样的手和脚,不能够像人一样用肢体直接进行游戏,因此,我们只能站在计算机的角度思考问题。计算机只能处理数字化的信息,首先要考虑如何将游戏数字化,也就是将游戏的主体“石头”“剪子”“布”数字化。解决这个问题非常简单:根据人为规定的数字,通过一系列计算能够实现就可以。例如,为游戏做了如下规定:用数字0代表“石头”,数字1代表“布”,数字2代表“剪刀”。为什么选用这三个数字呢?一是便于记忆。三个数字简单、连续,编写程序人员可以快速记录下来。二是形象。用手实现“石头”时,同时也是数字“0”的表达手势,用手实现“剪刀”时,也是数字“2”的表达手势,根据数字的连续性,规定“1”来表达“布”。三是容易程序实现。因为0、1、2三个数字简单、连续,运用一系列运算可以很容易实现。“石头”“剪子”“布”可以运用任何一个数字来代表,不是必须用0、1、2三个数字。

第二个问题:人类用手显示“石头”“剪子”“布”,计算机如何能看懂?

计算机没有眼睛和思维,看不见人类的动作,也思考不出来代表的意义,所以,需要我们站在计算机的角度分析这个问题。既然人类的表示计算机看不懂,就选择计算机和人类都能读懂的方式,运用文字、图片或者图案等创设游戏画面,运用鼠标单击等进行动作的选择,代替了人类肢体语言的表达,如图1所示。

第三个问题:如何让计算机随机选擇“石头”“剪子”“布”模拟人类游戏的过程?

在计算机语言中有一种函数是随机函数,可以轻松解决问题。随机数:①真正的随机数是运用物理现象产生的,如掷钱币、骰子、转轮、核裂变等。②随机产生的数据特点是后面的数据与前面产生的数据没有任何联系。③计算机产生随机数的方法有二,一是产生[0,1]区间上均匀分布的随机数的方法,二是离散型均匀分布的随机数的方法。两种方法都是运用数学的相关理论和公式进行推导,我们就不再深入地研究和探讨了。本例中运用VB语言的随机数(rnd和randomize),随机产生0、1、2三个数字,模拟实现计算机进行“石头”“剪子”“布”的选择。

● 运用计算机实现“石头剪子布”游戏的思维框图

运用计算机实现“石头剪子布”游戏的思维框图如下页图2所示。

● “石头剪子布”游戏程序实现

界面设计如下页图3所示。

程序实现(具体代码省略)。

● 教学实施和建议

1.直接提供程序界面

学生刚刚进入程序设计的初级学习,只会简单的顺序结构和选择结构,因此,程序的界面可以由教师直接提供给学生,这样有利于后续问题的分析和理解。

2.提供部分程序框架

为了节省课堂教学时间,高效率地解决问题,教师可以提供程序的框架,如选择“石头”程序,提供部分框架内容:

Private Sub Picture1_Click()

Dim x As Integer

Label4.Caption = "石头" (人显示“石头”)

随机产生0,1,2三个数字

程序核心部分:如果是0(石头对石头),结果是平;如果是1(石头对布),结果是输;如果是2(石头对剪子),结果是赢。

3.引导学生完成程序代码编写

根据程序框架中的提示,运用学习过的程序语言知识,填写完整的代码。程序核心部分是典型的选择结构,运用三个If语句或者If语句的嵌套,完成选择和判断。

4.方法迁移,完成游戏程序其他部分

借鉴选择“石头”程序分析和代码实现,完成选择“布”和选择“剪子”两部分代码程序。

● 结束语

“石头剪子布”游戏的实现,运用计算思维方法,从计算机的角度分析问题、解决问题,引导学生运用数字化抽象和推理,建立结构模型,利用数字化工具自动解决问题,培养了学生处理数字环境中的问题的重要思维方式。

猜你喜欢
剪子程序解决问题
浅谈列方程解决问题
“解决问题的策略:一一列举”教学实录与反思
给Windows添加程序快速切换栏
100次发射(外一首)
简化化学平衡移动教学程序探索
两只想打架的熊
“程序猿”的生活什么样
英国与欧盟正式启动“离婚”程序程序
奇妙的圆
石头·剪子·布