我正在做一个类似于西蒙游戏的记忆游戏,带有Twincat结构化文本。而且我有一个问题,我如何检查按钮是否与 LED 相同,并计算已按下多少按钮以防您按错?提前谢谢。这是我的代码:
VAR
iRandomNumber: DINT;
fb_delay : ton;
Run: BOOL;
GameSpeed: TIME:= T#2S;
io.blue: bool;
io.start: bool;
END_VAR
IF IO.Start THEN
run := TRUE;
IF iRandomNumber = 1 THEN
run := FALSE;
io.Blue := TRUE;
fb_delay(in:=TRUE,PT := GameSpeed);
IF fb_delay.Q THEN
io.Blue:= FALSE;
run:= TRUE;
END_IF
END_IF
ELSIF iRandomNumber= 2 THEN
...
我确实创建了分配给 4 个 LED 的随机数,这是 1 个蓝色 LED 的代码,其余 LED 相同。数字为 1,2,3,4,LED 为蓝色、绿色、红色、黄色。RUN var 用于激活随机数生成器
我会为颜色创建一个 eNum,然后制作一个这个 eNum 的数组。此外,我还有一个索引指向数组最后一个有效条目。
对于每个回合,都会生成一个新颜色并将其添加到数组中,因此对于每个按下的按钮,您必须检查数组位置并验证它在最后一个有效索引之前的颜色是否相同。然后生成一个新索引并增加指针。您可以再次播放所有内容并再次验证按钮。
您可以在指向索引增长时加快游戏速度。