想在我的蛇游戏中添加一个苹果作为移动对象
本文关键字:苹果 一个 对象 移动 我的 游戏 添加 | 更新日期: 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;
}
}
编辑:忘记打破,对不起