最新消息:

Micro:bit创意课程系列:井字游戏

Micro Bit 少儿编程 4555浏览 0评论

之前的课程Python编写了一个井字游戏,今天在micro:bit上也来做一个这个游戏

设计想法

 

Micro:bit创意课程系列:井字游戏

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

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

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

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

先赢三局者为胜

•数理的应用

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

 

Micro:bit创意课程系列:井字游戏

各单元格的值

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

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

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

AB方下手时,若发现该格的值不是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

 

Micro:bit创意课程系列:井字游戏

A键、按B键程序

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

 

Micro:bit创意课程系列:井字游戏

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

 

Micro:bit创意课程系列:井字游戏

A+B键程序

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

 

Micro:bit创意课程系列:井字游戏

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

转换公式:A(B)转换值=X*1+Y*3

 

Micro:bit创意课程系列:井字游戏

A方下手位置】的函式

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

 

Micro:bit创意课程系列:井字游戏

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

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

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

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

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

B方显示出来

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

 

Micro:bit创意课程系列:井字游戏

其他各格的作法相同

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

【判断谁赢了】的函式

先设定8条成直线的变量

 

Micro:bit创意课程系列:井字游戏

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

重新再来一局

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

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

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

 

Micro:bit创意课程系列:井字游戏

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

先赢三局者为胜

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

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

 

Micro:bit创意课程系列:井字游戏

完成。

参考完整程序

https://sites.google.com/site/wenyumaker2/02micro-bit-yan-jiu/48-jing-zi-you-xi/microbit-%E4%BA%95%E5%AD%97%E9%81%8A%E6%88%B2.hex?attredirects=0&d=1

您必须 登录 才能发表评论!