教你用GeoGebra做开关灯游戏!玩游戏、做游戏,谁更简单

教你用GeoGebra做开关灯游戏!玩游戏、做游戏,谁更简单

首页休闲益智像素点灯更新时间:2024-04-16

开关灯游戏,又称为点灯游戏、灭灯游戏、翻转游戏。

游戏基本设置为:有m×n排的圆(或者正方形),将一个圆(或者正方形)视为一盏灯,灯只有亮、暗两种状态。当点击一盏灯时,会同时改变此盏灯及其相邻灯的状态。

当点亮所有灯(也有的设置为灭掉所有灯),则游戏过关。

示例

啊K尝试用GeoGebra制作了5×3的开关灯游戏,来看下效果:

“重新开始”按钮是做了随机开关灯的设置。所以,游戏的难易程度也是随机的。

另外,还顺手做了个关掉所有灯的按钮:

这个功能真的是顺手做的......

想玩这个游戏的话,请点击文末的“了解更多”,前往游戏,看看你能不能点亮所有灯!

若是对怎么制作这个游戏感兴趣,请接着往下看!

制作思路:

(有没有发现和很类似!)

下面开始制作!

一次性生成所有圆

l1 = 扁平列表(序列(序列(圆周((i, j), 1), i, 1, 9, 2), j, 1, 5, 2))

注:扁平列表(Flatten)、圆周(Circle)

构造独立的圆

由于每个圆都有亮与暗两种状态,即在两种颜色间切换。“两”——考虑引入布尔值:假设为真时,显示黄色;若是假,显示成暗黄色。

■ 于是,需构造15个布尔值,即:

在单元格A1,输入:true;并下拉填充至A15。

■ 而独立的圆的构造,则:

在B1、B2处分别输入12,再选中B1、B2,下拉填充至B15。

在C1处,输入=元素(l1, B1)

如果此时下拉C1进行填充,即可产生相应的独立的圆。不过——我们需要先输入C1的单击时脚本,再下拉填充,以保证得到的所有圆都有脚本!

问题来啦——圆的单击时脚本应输入什么,以保证可以改变本身及其相邻圆的颜色?

现在,布尔值A1,A2,……,A15对应的圆编号如下:

■ 根据开关灯的规则:在C1的单击时脚本输入如下六条指令,并下拉填充至C15。

下面进行解释

注:执行(Execute)、SetValue(赋值)、Row(行序)、If(如果)、Mod(余式)、SetColor(设置颜色)

将上面的脚本拆开来看,我们一边找开关灯的规律,一边说明:

点击圆时,自身也会改变颜色,于是:

执行({"SetValue(A" Row(%0) ",!A" Row(%0) ")"})

除了点击第1、6、11个圆之外,它的前一个圆也会改变颜色。而1、6、11可看为除以5的余数为1,于是:

执行({"If(Mod(" Row(%0) ",5)!=1,SetValue(A" (Row(%0)-1) ",!A" (Row(%0)-1) "))"})

除了点击第5、10、15个圆之外,它的后一个圆也会改变颜色。而5、10、15可看为除以5的余数为1,,于是:

执行({"If(Mod(" Row(%0) ",5)!=0,SetValue(A" (Row(%0) 1) ",!A" (Row(%0) 1) "))"})

当点击第1至10个圆时,它后面的第五个圆也会改变颜色,于是:

执行({"If(1<=" Row(%0) " <=10,SetValue(A" (Row(%0) 5) ",!A" (Row(%0) 5) "))"})

当点击第6至15个圆时,它前面的第五个圆也会改变颜色,于是:

执行({"If(6<=" Row(%0) " <=15,SetValue(A" (Row(%0)-5) ",!A" (Row(%0)-5) "))"})

上面是改变相应的布尔值,而要设置颜色,还需要:

执行(序列("SetColor(C" k ",If(A" k ",%1,%2))",k,1,15), "黄色","#4e3a00")

完善

按钮及其脚本如下:

至于文本,如下:

注:乘积(Product)

text1是在所有布尔值都为真时,即,当A1×A2×……×A15不等于0,才显示。

结语

5×3型的开关灯游戏就这么完成啦!当然也可以制作出其他类型的,关键在于找出规律——让相应的布尔值改变,结合执行指令与表格区,即可完成。


如需源文件,请回复:开关灯

查看全文
大家还看了
也许喜欢
更多游戏

Copyright © 2024 妖气游戏网 www.17u1u.com All Rights Reserved