嘿那里,所以我把一个随机模式生成的东西拼凑起来。
到目前为止我的代码:
int permutes = 100;
int y = 31;
int x = 63;
while (permutes > 0) {
int rndTurn = random(1, 4);
if (rndTurn == 1) { y = y - 1; } //go up
if (rndTurn == 2) { y = y + 1; } //go down
if (rndTurn == 3) { x = x - 1; } //go right
if (rndTurn == 4) { x = x + 1; } //go left
setP(x, y, 1);
delay(250);
}
我的问题是,我如何才能让代码不再回归?
e.g。代码说“向左走”,但下一个循环说“走右”,我怎么能阻止它呢?
注意:setP会打开一个特定的像素。
干杯!
答案 0 :(得分:6)
这取决于你的意思。
如果你的意思是“避免回到我以前最常做的一步”那么你必须记住最后一次运动的方向。也就是说,如果你向上移动你的下一个动作就不能失败。
如果你的意思是“避免回到曾经的某个地方”,那么你将不得不记住你曾经去过的每一个地方。这可以使用哈希表有效地实现,该哈希表使用具有表示具有适当的Equals / HashCode函数的坐标的类的键。
答案 1 :(得分:2)
由于每个方块对应一个像素,因此您的坐标空间必须是有限的,因此您可以跟踪已经访问过的坐标。
如果有相应的getP
函数来确定某个像素是否已经开启,那么您可以使用它。
答案 2 :(得分:1)
你记得最后一个方向,并使用random(1,3)
选择其余三个中的任何一个,然后将其存储为最后一个。
答案 3 :(得分:-2)
不确定这种方法是否有效。
创建一个名为lastRndTurn的新变量作为int,并在if语句之后赋值。
然后在int rndTurn = random(1, 4)
。
while (lastRndTurn == rndTurn)
{
rndTurn = random(1, 4);
}