编程实现:
在scratch3中,利用自带的角色实现九宫格博弈战。
河豚和鱼轮流抢占九宫格,每占一格,就会在该格里放上一只河豚或鱼,谁先占据九宫格的某一行、某一列或者某一条对角线的三个方块,那么谁就获胜,海星会宣布获胜方;如果最终谁都没能获胜,海星会说“旗鼓相当”。
具体要求:
1). 点击绿旗,舞台上呈现一个九宫格(九宫格由 3 行 3 列排列整齐的方块组成),九宫格左侧显示一只河豚,舞台右下角显示一只海星,如图所示;
2). 鼠标点击任意一个空白方块,该方块中会呈现出一只河豚,同时九宮格左侧的河豚变成鱼,如图所示;
3). 然后鼠标点击任意一个空白方块时,该方块中会呈现出一只鱼,同时九宫格左侧的鱼变成河豚,如图所示;
4). 鼠标点击有动物的方块时,无任何效果;
5). 重复执行 “具体要求”2) ~ 4);
6). 如果河豚或鱼占据了九宮格的某一行、某一列或某一条对角线的三个方块,九宫格左侧的河豚或鱼消失,海星宣布获胜方 1 秒,如下图所示,然后游戏结束;
7). 九宫格被占满后,九宫格左侧的河豚或鱼消失,如果此时没有分出胜负,海星说“旗鼓相当”1 秒,然后游戏结束;
8). 游戏结束后,当前游戏界面不再有任何变化,并且鼠标点击任意方块都不会有任何效果。
解题思路:
对题目进行分解,我们分为三个模块
克隆生成九宫格棋盘
点击落子
判断输赢
一. 克隆九宫格棋盘
使用循环+克隆实现九宫格
二. 点击方块落子
1、点击九宫格中的任意方块,就表示要落子了,要确保角色只被点击一次,直接使用等待 “碰到鼠标指针” + “按下鼠标”的组合;
2、鼠标点击后,角色进行克隆,将克隆体移动到格子完成落子;
3、左侧的生物种类随之变化,只需要在克隆一次之后切换造型即可;
三、判断输赢
这里一共有9个格子,我们使用列表记录下每个格子的动物,刚开始时,都是空的,我们用数字0来占位;
每点击一个方块,就将对应的列表项更新为角色的造型编号(1:河豚;2:鱼)
每一次点击方块,都有可能决出胜负,所以只要点击了方块,就需要判断输赢。
九宫格是大家都熟悉的结构,一共有3行、3列和两条对角线,所以要同时判断8种组合:
1、2、3
4、5、6
7、8、9
1、4、7
2、5、8
3、6、9
1、5、9
3、5、7
只要有一种组合满足条件(存储数字相同且不等于0),就说明决出胜负了,如上图1,5,9满足条件。
当9个格子都填满了(列表中没有0),还没有决出胜负,就说明是平局。
思路有了,接下来,我们就进入程序实现环节。
编程实现
第一步:添加角色
1、添加scratch3自带的角色和背景,如图
角色stop作为九宫格的方格(可以在造型中改变颜色)
2、河豚角色删除其它造型,重新选择一条鱼作为造型2,这样就可以通过造型切换实现动物变化
第二步:使用循环+克隆实现九宫格
1、选中角色stop,添加变量"id",一定要勾选“仅适用于当前角色”,九宫格每个格子有一个属于自己的id,编号与后面要用的列表顺序一致
2、编写代码,实现九宫格排列
3、创建列表“九宫格”,在背景中编写代码,实现初始化,填充9个0
第三步:点击落子
1、新建变量"落子",初始值设为0(初始化可以放在背景里)
2、“stop角色:”九宫格每个克隆体启动时,如果方格被点击,更改“落子”值为方格的id
3、切换到河豚角色,当绿旗被点击,重复执行,判断变量“落子”是否大于0,大于零表示方格被点击了,此时需要进行克隆,同时将当前造型编号存到列表的对应位置,假设点击的是第一个格子,那就把列表的第一项(id)替换为当前的造型编号,然后切换到下一个造型,并将“落子”重置为0,表示一次落子完成,每一次落子就要进行判断输赢,这里使用广播消息。
4、当河豚角色作为克隆体启动时,移动到鼠标位置,实现落子
第四步:判断输赢
1、添加两个变量:变量“胜负”,默认值0,1为胜出;变量“动物”,存储获胜方
2、切换到“海星”角色:自制积木“判断输赢”,传入三个参数,分别代表列表中的三个位置(8种获胜组合)
定义积木:如果列表中这三个数相等且不为0,说明获胜,更新变量“胜负”值为1,并记录获胜方(列表中满足组合条件的值)
3、使用自制积木同时判断8种组合,如果变量“胜负”的值等于1表明有动物胜出,再判断动物,看是谁胜出,如果没有动物胜出,那就判断列表中是否还有空位(存在0),如果不存在说明没有分出胜负,说出“旗鼓相当”
第五步:游戏结束
停止游戏,九宫格左侧的河豚或鱼消失,当前游戏界面不再有任何变化,并且鼠标点击任意方块都不会有任何效果。
让河豚或鱼消失,自然会想到隐藏,但是要保持游戏界面不变,那就只能隐藏本体,不能隐藏克隆体,否则九宫格里的动物也会消失,因此并没有选择使用广播消息的方式。
新建一个变量“游戏结束”,初始值为0,如果值为1表示游戏结束,隐藏本体,停止角色其它脚本。切换到河豚角色,添加代码:
再切换到“海星”角色,添加代码,在需要游戏结束的地方设置变量“游戏结束”值为1。
到此程序已完成,完整程序下载:九宫格博弈战(Tic-Tac-Toe)
本站内容未经许可,禁止任何网站及个人进行转载。







