首页 > 解决方案 > 如何在控制台中创建 2D 图像而不使用 C# 中的任何现有解决方案?

问题描述

我是编程初学者

所以,我想重新发明轮子。我打算只使用 C# 中的控制台创建我自己的 2D 游戏,如马里奥等。我的问题是,如何在控制台中创建/绘制像素来制作图像?还是唯一的方法是使用 Unicode 字符?

我知道马里奥(或任何其他类似的游戏)是用汇编语言创建的(当然没有像 OpenGL =) 这样的任何库)。是否可以在 C# 上创建类似的东西?我不想使用 WinForms 应用程序、Unity、OpenGL 等等等等

标签: c#graphicsconsole-applicationgame-development

解决方案


您只能打印字符。在这里,我建议一种用于编码游戏的架构:

  1. 将整个游戏地图设计为 2D 整数数组、行和列。每个值都定义了块,它可以是空的,也可以是障碍物或硬币。例如,“0”什么都没有,表示这个区域没有块。“1”是一个块,“2”是一个硬币。这是数组的示例:
[0][0,0,0,0,0]
[1][0,2,0,0,0]
[2][1,1,1,1,1]

这个数组定义了游戏地图。在渲染输出(女巫我会解释)我们有这个:


    O
[][][][][]

括号是游戏角色可以在上面行走的方块。而“O”是角色可以收集的硬币。第一行我们什么都没有,因为我们在数组中定义了它。构建游戏地图后,我们需要更新游戏帧。

  1. 当玩家按下按钮时,我们需要更新帧。为此,我们需要一层程序将数组解析为字符,它可以是一个以数组为参数并返回一串输出值的方法。

  2. 对于下一层,在玩家按下按钮并更新帧后,我们必须更新游戏角色的当前位置,例如,在玩家按下按钮之前,角色在“第 1 行”和“第 0 列”。玩家按下右按钮,因此我们必须将角色移动到“第 1 行”和“第 1 列”。

  3. 正如我所说,当角色被玩家移动时,我们需要一个图层来识别角色,他是撞到障碍物还是硬币?在上面的例子中,我们的角色到达了地图上的硬币位置,所以在这一层过程中,我们必须增加玩家硬币。

这是一个非常简单的主机游戏架构示例。当然,您需要处理细节和代码并创造一些有趣的东西:)。我希望它有所帮助;


推荐阅读