//使用键盘控制方块的左右上下移动
using System;
namespace 方块移动
{
struct Vector2
{
public int x, y;
public Vector2(int x, int y)
{
this.x = x;
this.y = y;
}
}
class GameObject
{
private Vector2 position;
private Vector2 size;
private ConsoleColor color;
public GameObject(Vector2 position, Vector2 size, ConsoleColor color)
{
this.position = position;
this.size = size;
this.color = color;
}
public GameObject(int pos_x, int pos_y, int size_x, int size_y, ConsoleColor color)
: this(new Vector2(pos_x, pos_y), new Vector2(size_x, size_y), color)
{
}
/// <summary>
/// 绘制一个图形
/// </summary>
public void Draw()
{
Console.ForegroundColor = color;
for (int i = 0; i < size.x; i++)
{
for (int j = 0; j < size.y; j++)
{
Console.SetCursorPosition((position.x + i) * 2, position.y + j);
Console.Write("■");
}
}
}
/// <summary>
/// 定点擦除图形
/// </summary>
public void Remove()
{
// Console.Clear();
for (int i = 0; i < size.x; i++)
{
for (int j = 0; j < size.y; j++)
{
Console.SetCursorPosition((position.x + i) * 2, position.y + j);
Console.Write(" ");
}
}
}
public void Move(char dir)
{
Remove();
switch (dir)
{
case 'w':
position.y -= 1;
break;
case 's':
position.y += 1;
break;
case 'a':
position.x -= 1;
break;
case 'd':
position.x += 1;
break;
}
Draw();
}
}
class Program
{
static void Main(string[] args)
{
GameObject go = new GameObject(20, 10, 5, 5, ConsoleColor.Red);
go.Draw();
while (true)
{
char c = Console.ReadKey().KeyChar;
//Console.WriteLine(c);
go.Move(c);
}
}
}
}