我正在尝试创建一个控制台游戏,其中“Martian”中的字符“M”和“SpaceCreature”中的字符“S”在 X 轴的两端保持相对,并在 Y 轴上上下移动。
我使用箭头键使“M”上下移动。但是“S”也应该移动,但只要“M”移动,它就会自己移动。我需要让“S”以较慢的速度移动以跟随“M”。
截至目前,我使用箭头键让“M”上下移动,“S”也在同时移动。
我需要让 'S'移动得更慢。我试过 thread.Sleep,但这只会让“S”消失并像故障一样重新出现。我想我需要使用一个名为“Console.keyAvailable”的东西,但我发现很难确定该功能的位置。
//X and Y get set constructors are defined in the abstract class:-SpaceObject
public override void Draw() //In both classes Martian and SpaceCreature
{
Console.SetCursorPosition(X, Y);
Console.WriteLine("S");
//In Martian class:- Console.WriteLine("M");
}
static void Main(string[] args)
{
var m = new Martian(100, 10);
var s = new SpaceShip(100, 10);
const int MaxY = 25;
m.Draw(); //Abstract override void method
s.X = m.X + 100;
s.Y = m.Y;
s.Draw(); //Abstract override void method
ConsoleKeyInfo keyInfo;
while (true)
{
keyInfo = Console.ReadKey(true);
Console.Clear();
switch (keyInfo.Key)
{
case ConsoleKey.UpArrow:
if (m.Y > 0)
{
m.Y--;
}
break;
case ConsoleKey.DownArrow:
if (m.Y < MaxY)
{
m.Y++;
}
break;
}
m.Draw();
s.X = m.X + 100;
s.Y = m.Y;
s.Draw();
}
}
}
米脂
慕田峪7331174
相关分类