【发布时间】:2020-09-03 21:02:43
【问题描述】:
我正在尝试在 C# 控制台应用程序中制作蛇游戏。
using System.Reflection;
namespace First_console_game
{
class Program
{
static void Main(string[] args)
{
Random rnd = new Random();
int redo = 0;
Byte Foods = 0;
Byte Flops = 0;
int x = 10, y = 20;
int Foodx = rnd.Next(1, 200);
int Foody = rnd.Next(1, 175);
ConsoleKeyInfo keyInfo;
do
{
keyInfo = Console.ReadKey(true);
//Console.SetCursorPosition(Foodx, Foody); This is the position of the food cell, and this is the part where it doesn't work.
Flops += 1;
if (Flops == 5)
{
Console.Clear();
Flops = 0;
}
switch (keyInfo.Key)
{
case ConsoleKey.RightArrow:
x += 1;
Console.SetCursorPosition(x, y);
Console.Write("x");
break;
case ConsoleKey.LeftArrow:
x--;
Console.SetCursorPosition(x, y);
Console.Write("x");
break;
case ConsoleKey.UpArrow:
y -= 1;
Console.SetCursorPosition(x, y);
Console.Write("^");
break;
case ConsoleKey.DownArrow:
y += 1;
Console.SetCursorPosition(x, y);
Console.Write("x");
break;
}
} while (redo == 0);
Console.ReadLine();
}
}
}
在游戏中,我想要两个光标。一个用于食物,一个用于玩家。
但很明显,我不能使用Console.SetCursorPosition(Foodx, Foody),因为这会使玩家在屏幕上四处游荡,从而搞砸游戏。
那么如何添加一个单独的光标呢? 谢谢。
【问题讨论】:
-
您可能希望以比控制台更图形化的方式执行此操作。我怀疑您可以通过伪造控制台输入行来做到这一点。当您的程序运行时,使用 (/poll)
Console.KeyAvailable来确定用户是否按下了某个键。如果他/她有,请使用Console.ReadKey(false)阅读它(不会将键回显到屏幕上)。如果要回显该键,请移至您希望它出现的位置并将其写入屏幕。然后回到屏幕周围蛇行 -
那么如何添加单独的光标?这是不可能的。
标签: c# visual-studio console console-application