想在我的蛇游戏中添加一个苹果作为移动对象

本文关键字:苹果 一个 对象 移动 我的 游戏 添加 | 更新日期: 2023-09-27 17:58:31

我用c#和命令提示符创建了一个类似蛇的游戏,但现在我在添加一个苹果让蛇追逐时遇到了困难。一旦它被放在屏幕上,它就不会停留在网格的边界内。我还想添加一个随机变量,这样一旦它被击中,它就会移动到不同的位置。

static void Apple()
{
    do
    {
        Console.ForegroundColor = ConsoleColor.White;
        NewApple = RandApple.Next(200);
        Console.Write("L");
    } while (!Gameover);
}

想在我的蛇游戏中添加一个苹果作为移动对象

这需要许多不同的东西。首先,你需要一些方法来识别你的比赛区域的边界。

之后,你需要在X和Y坐标上使用Random.Next生成器来获得苹果的位置。然后做一个Console.SetCursorPosition,将X和Y分别作为Left和Top,然后做Console。写苹果的"模型"(不是WriteLine。我可以向你保证,这会完全打乱你的游戏环境)。一旦你解决了这个问题,你需要把它全部转移到一个方法中,只有当蛇真的遇到苹果时,你才会调用这个方法。

你可能还想确保它不会在蛇目前所在的任何地方产卵。

如果我理解正确的话,你正在为游戏中的每个对象(蛇头、身体、苹果、奖金对象等)制作一个新的线程/任务。考虑到你想保持一切同步,这样你就不会遇到一个任务在移动控制台光标,而另一个任务正在写入的情况,这是个坏主意。(我们在这里谈论的只是可能发生这种事情的几秒钟,但这就是计算机工作的速度。所以它可以,也会发生)。

总而言之,永远不要使用多个线程来处理代码的相同部分。

让我知道这是否合理。如果需要的话,我会尝试更深入地解释。

这不是一种有效的方法,但可以帮助您继续工作。

永远循环,可以使用随机类获得2个随机数,然后检查板是否为空,蛇是否不在:

    while(true)
    {
        Random rand = new Random();
        int row = rand.Next(0, N_ROWS); //Where N_ROWS is the board's number of rows
        int col = rand.Next(0, N_COLS); //Where N_COLS is the board's number of cols 
        if(Board[row,col] == EMPTY && Board[row,col] != SNAKE_BODY) //assuming your board is a 2D array
        {
             Board[row,col] = Apple;  //Place the apple
             break;
        }
     }

编辑:忘记打破,对不起

相关文章: