我有以下主代码循环来控制随机蛇。很大一部分时间,蛇被卷入一个小块,正如随机游走所预期的那样。角落里的情况更糟,看起来很糟糕。我希望更具决定性,并在屏幕上取得进展,直到遇到界限。
我怎样才能让蛇走得更直?我认为这与加权随机数生成器有关,但我不确定算法,因为它必须在不同的时间在不同的方向上加权。
我不是在寻找自我避免随机游走,因为它们在2D时会非常快速地阻挡。
void loop() {
do {
switch (random(0, 4)) { // Pick 1 of 4 directions
case 0:
delta_x = 0;
delta_y = 1;
break;
case 1:
delta_x = 1;
delta_y = 0;
break;
case 2:
delta_x = 0;
delta_y = -1;
break;
case 3:
delta_x = -1;
delta_y = 0;
break;
}
} while (willBeOutOfBounds() == true);
head.x += delta_x;
head.y += delta_y;
advanceWorm();
displayWorm();
}