下边附上我的代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
namespace ConsoleApp28
{
enum E_MoveDir
{
Up,
Down,
Right,
Left,
}
class Icon
{
public E_MoveDir dir;
public int x;
public int y;
public Icon(int x,int y,E_MoveDir dir)
{
this.x = x;
this.y = y;
this.dir = dir;
}
public void Move()
{
switch(dir)
{
case E_MoveDir.Up:y -= 1; break;
case E_MoveDir.Down:y += 1; break;
case E_MoveDir.Left:x -= 2; break;
case E_MoveDir.Right:x += 2; break;
}
}
public void Draw()
{
Console.SetCursorPosition(x, y);
Console.Write("@");
}
public void Clear()
{
Console.SetCursorPosition(x, y);
Console.Write("*");
}
public void ChangeDir(E_MoveDir dir)
{
this.dir = dir;
}
}
class Program
{
static Icon icon;
static void Main(string[] args)
{
Console.CursorVisible = false;
icon = new Icon(30, 5, E_MoveDir.Right);
icon.Draw();
Thread t = new Thread(NewThreadLogic);
t.Start();
t.IsBackground = true;
while (true)
{
Thread.Sleep(500);
icon.Clear();
icon.Move();
icon.Draw();
}
}
static void NewThreadLogic()
{
while(true)
{
switch(Console.ReadKey(true).Key)
{
case ConsoleKey.W:
icon.ChangeDir(E_MoveDir.Up);
break;
case ConsoleKey.A:
icon.ChangeDir(E_MoveDir.Left);
break;
case ConsoleKey.S:
icon.ChangeDir(E_MoveDir.Down);
break;
case ConsoleKey.D:
icon.ChangeDir(E_MoveDir.Right);
break;
}
}
}
}
}