如何制作出更好进步的蛇?

时间:2017-12-05 14:21:31

标签: c random

我有以下主代码循环来控制随机蛇。很大一部分时间,蛇被卷入一个小块,正如随机游走所预期的那样。角落里的情况更糟,看起来很糟糕。我希望更具决定性,并在屏幕上取得进展,直到遇到界限。

我怎样才能让蛇走得更直?我认为这与加权随机数生成器有关,但我不确定算法,因为它必须在不同的时间在不同的方向上加权。

我不是在寻找自我避免随机游走,因为它们在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();
}

0 个答案:

没有答案