Micro:bit系列——井字游戏

学习在micro:bit上做一个井字游戏

设计想法

file

A方的起始位置在(1,0),亮不闪烁的灯;B方的起始位置在(3,0),亮闪烁的灯,来和A方有所区别!

按A键,A、B方的灯会向下移动,到最下方时,就会移到上方,形成一个循环。

按B键,A、B方的灯会向右移动,到最右方时,就会移到左方,形成一个循环。

按A+B键,代表下在选好的位置上。当A下完后,自动切换B方下,同样B方下完后,会自动切换A来下。

先赢三局者为胜

数理的应用

建立一个【位置】数组来储存井字游戏中,九宫格各位置的值

file

各单元格的值

此位置数组一开始各位置(位置(0)~位置(8))的值设为0

若此格被A方下了后,其值设为1

若此格被B方下了后,其值设为-1

A、B方下手时,若发现该格的值不是0,就代表该格已经被下过了,就会要求重新再下一次

如何判断A方或B方赢?

九宫格中一共有8种情形会构成一条线

第1线:位置(0)-位置(1)-位置(2)

第2线:位置(3)-位置(4)-位置(5)

第3线:位置(6)-位置(7)-位置(8)

第4线:位置(0)-位置(3)-位置(6)

第5线:位置(1)-位置(4)-位置(7)

第6线:位置(2)-位置(5)-位置(8)

第7线:位置(0)-位置(4)-位置(8)

第8线:位置(2)-位置(4)-位置(6)

如果以上8条线的任一条线的3个位置的值加起来

其值等于3,代表A方完成一直线

其值等于-3,代表B方完成一直线

有了以上认识后,就可以来写程序了

程序内容:

程序一开始

建立A方及B方角色变量

B方要设闪烁

建立一个位置数组,其值都为0

一开始A方先下,所以把B方亮度设为0

另外,将下手次数设为1;A赢次数、B赢次数设为0

file

按A键、按B键程序

按A键,A方或B方的灯会往下移动,到最下方时会移到上方来

file

按B键,A方或B方的灯会往右移动,到最右方时会移到左方来

file

按A+B键程序

用来控制A方及B方下手的程序,由于接下来程序长,切开成3个函式来说明

file

将所在位置的坐标值转换成一个数值来表示

转换公式:A方(或B方)转换值=X1+Y3

file

A方下手位置的函式

A方(或B方)转换值<4,此区域为不可下手的区域

file

file

A方(或B方)转换值=4,代表A方或B方下在(1,1)的位置

先判断此格有没有人下过了,(=0,代表还没下过)

若没有人下过,就把位置(0)存成1,代表A方下过了

建立一个新的角色,用数组角色来占据此格

A方回到起始位置,并隐藏

B方显示出来

A方下手成功,下手次数增加1

file

其他各格的作法相同

B方下手位置的函式,同上说明

判断谁赢了的函式

先设定8条成直线的变量

如果其中一条线的值为3,代表A方赢了

重新再来一局

把位置的数组值再全部设为0

把占据九宫格的数组角色全部删除

屏幕显示A (代表A赢了)

file

如果其中一条线的值为-3,代表B方赢了,程序说明同上

先赢三局者为胜

利用第1行(x=0)的下方3颗灯代表A方所胜的局数

利用第5行(x=4)的下方3颗灯代表B方所胜的局数

file

完成。

黔西南 触摸未来
我们正身处一个只要愿意思考,就能改变世界的时代