c# - 如何在控制台中创建 2D 图像而不使用 C# 中的任何现有解决方案?
问题描述
我是编程初学者
所以,我想重新发明轮子。我打算只使用 C# 中的控制台创建我自己的 2D 游戏,如马里奥等。我的问题是,如何在控制台中创建/绘制像素来制作图像?还是唯一的方法是使用 Unicode 字符?
我知道马里奥(或任何其他类似的游戏)是用汇编语言创建的(当然没有像 OpenGL =) 这样的任何库)。是否可以在 C# 上创建类似的东西?我不想使用 WinForms 应用程序、Unity、OpenGL 等等等等
解决方案
您只能打印字符。在这里,我建议一种用于编码游戏的架构:
- 将整个游戏地图设计为 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 行”和“第 0 列”。玩家按下右按钮,因此我们必须将角色移动到“第 1 行”和“第 1 列”。
- 正如我所说,当角色被玩家移动时,我们需要一个图层来识别角色,他是撞到障碍物还是硬币?在上面的例子中,我们的角色到达了地图上的硬币位置,所以在这一层过程中,我们必须增加玩家硬币。
这是一个非常简单的主机游戏架构示例。当然,您需要处理细节和代码并创造一些有趣的东西:)。我希望它有所帮助;
推荐阅读
- docusignapi - 什么会导致 Docusign Payments 消息“付款设置失败”?
- r - rstudio一列中每个类别的平均值/平均值
- wordpress - 有没有办法在没有插件或编辑标题的情况下在 WordPress 上使用 Google Analytics?
- javascript - javascript中“GridHyperLinkColumn”的基于条件的链接
- c++ - 为什么“unordered_map”分配内存2次?
- node.js - 如何在nodejs上完成child_process?
- email - 使用 GMail API 发送时如何设置显示名称?
- reactjs - React js 简单钩子效果
- c# - 如何使其他类可以访问此 var?
- python - 如何在 Flask 中实现基于角色的访问控制?