5.游戏主入口、游戏类和游戏帧更新接口
5.1 知识点
将实现的类图
创建游戏帧更新接口
/// <summary>
/// 游戏帧更新接口
/// </summary>
interface ISceneUpdate
{
/// <summary>
/// 更新方法
/// </summary>
void Update();
}
创建游戏类,场景类型枚举。游戏类创建对应的变量和方法。
/// <summary>
/// 场景类型枚举
/// </summary>
enum E_SceneType
{
/// <summary>
/// 开始场景
/// </summary>
Begin,
/// <summary>
/// 游戏场景
/// </summary>
Game,
/// <summary>
/// 结束场景
/// </summary>
End,
}
/// <summary>
/// 游戏类
/// </summary>
class Game
{
//游戏窗口宽高
public const int w = 80;
public const int h = 20;
//游戏帧更新接口变量 用来标记 当前选中的场景
public static ISceneUpdate nowScene;
//构造函数
//初始化控制台和场景
public Game()
{
//初始化控制台
Console.CursorVisible = false;
Console.SetWindowSize(w, h);
Console.SetBufferSize(w, h);
//初始化场景
ChangeScene(E_SceneType.Begin);
}
//游戏开始的方法
public void Start()
{
//游戏主循环 主要负责 游戏场景逻辑的更新
while (true)
{
//判断当前游戏场景不为空 就更新
if (nowScene != null)
{
nowScene.Update();
}
}
}
//场景切换方法
public static void ChangeScene(E_SceneType type)
{
//切场景之前 应该把上一个场景的绘制内容擦掉
Console.Clear();
//根据场景枚举new出新的对应的场景类
switch (type)
{
case E_SceneType.Begin:
nowScene = new BeginScene();
break;
case E_SceneType.Game:
nowScene = new GameScene();
break;
case E_SceneType.End:
nowScene = new EndScene();
break;
}
}
}
在程序主入口new出一个游戏类,开始游戏
/// <summary>
/// 游戏入口
/// </summary>
class Program
{
static void Main(string[] args)
{
//new出一个游戏类
Game game = new Game();
//开始游戏
game.Start();
}
}
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 785293209@qq.com