3.绘制对象基类和类型枚举
3.1 知识点
要实现的代码
相关示图
主要操作
- 实现绘制对象类和绘制对象类相关的位置结构体、绘制接口、绘制对象类型枚举
- 实现绘制对象类的绘制方法和类型切换方法
3.2 知识点代码
IDraw
using System;
using System.Collections.Generic;
using System.Text;
namespace CSharp实践教学
{
interface IDraw
{
void Draw();
}
}
Position
using System;
using System.Collections.Generic;
using System.Text;
namespace CSharp实践教学
{
struct Position
{
public int x;
public int y;
public Position(int x, int y)
{
this.x = x;
this.y = y;
}
//肯定是存在比较相关的信息的
public static bool operator ==(Position p1, Position p2)
{
if (p1.x == p2.x && p1.y == p2.y)
return true;
return false;
}
public static bool operator !=(Position p1, Position p2)
{
if (p1.x == p2.x && p1.y == p2.y)
return false;
return true;
}
public static Position operator +(Position p1, Position p2)
{
Position pos = new Position(p1.x + p2.x, p1.y + p2.y);
return pos;
}
}
}
DrawObject
using System;
using System.Collections.Generic;
using System.Text;
namespace CSharp实践教学
{
/// <summary>
/// 绘制类型 根据不同类型 改变绘制的方块的颜色
/// </summary>
enum E_DrawType
{
/// <summary>
/// 墙壁
/// </summary>
Wall,
/// <summary>
/// 正方形方块
/// </summary>
Cube,
/// <summary>
/// 直线
/// </summary>
Line,
/// <summary>
/// 坦克
/// </summary>
Tank,
/// <summary>
/// 左梯子
/// </summary>
Left_Ladder,
/// <summary>
/// 右梯子
/// </summary>
Right_Ladder,
/// <summary>
/// 左长梯子
/// </summary>
Left_Long_Ladder,
/// <summary>
/// 右长梯子
/// </summary>
Right_Long_Ladder,
}
class DrawObject : IDraw
{
public Position pos;
public E_DrawType type;
public DrawObject(E_DrawType type)
{
this.type = type;
}
public DrawObject(E_DrawType type, int x, int y):this(type)
{
this.pos = new Position(x, y);
}
public void Draw()
{
Console.SetCursorPosition(pos.x, pos.y);
switch (type)
{
case E_DrawType.Wall:
Console.ForegroundColor = ConsoleColor.Red;
break;
case E_DrawType.Cube:
Console.ForegroundColor = ConsoleColor.Blue;
break;
case E_DrawType.Line:
Console.ForegroundColor = ConsoleColor.Green;
break;
case E_DrawType.Tank:
Console.ForegroundColor = ConsoleColor.Cyan;
break;
case E_DrawType.Left_Ladder:
case E_DrawType.Right_Ladder:
Console.ForegroundColor = ConsoleColor.Magenta;
break;
case E_DrawType.Left_Long_Ladder:
case E_DrawType.Right_Long_Ladder:
Console.ForegroundColor = ConsoleColor.DarkGray;
break;
}
Console.Write("■");
}
/// <summary>
/// 这是切换方块类型 主要用于搬砖下落到地图时 把搬砖类型编程墙壁类型
/// </summary>
/// <param name="type"></param>
public void ChangeType(E_DrawType type)
{
this.type = type;
}
}
}
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 785293209@qq.com