在 C 中绘制游戏板

tha*_*eer 0 c coordinates coordinate-systems 2d-games

好吧,正如标题所说,我正在尝试绘制一个游戏板。好吧,董事会本身是我做的,它看起来像他的:

4 |
3 |
2 |
1 |
0 |
   - - - - -
   0 1 2 3 4
Run Code Online (Sandbox Code Playgroud)

但这不是问题。我觉得很难的是我想在板上绘制星形 (*) 的图标,并且坐标在这样的数组中给出

posX {2,4,2,1}
posY {2,3,4,4}
Run Code Online (Sandbox Code Playgroud)

所以在这种情况下,我应该在坐标 (2,2) 、 (4,3) 、 (2,4) 、 (1,4) 等中绘制 * 。有任何想法吗?

For*_*ent 5

如果您在终端(控制台)上打印这些,则不能简单地打印坐标轴和返回并放置坐标,但是如果您的坐标系足够小,则每次重新绘制整个电路板都不会有问题添加了一个新点。

一种简单的方法是保留一个二维字符数组,并根据坐标放置“”或“*”。通过这种方式,您可以在每次向坐标添加新点时简单地逐行打印二维数组。

当然,您还负责打印轴,但该部分应该是直截了当的。

char points [4][4] ={
       {' ',' ',' ',' '},
       {' ',' ',' ',' '},
       {' ',' ',' ',' '},
       {' ',' ',' ',' '},
       };
Run Code Online (Sandbox Code Playgroud)

是您将拥有的空板。现在如果你想在坐标 (1,2) 输入一些东西,你需要做的就是说points[1][2]='*';

要打印整个数组,您将需要一个嵌套循环,外部遍历行,内部遍历列。像这样:

int i,j;

for (i=0; i<4; ++i)
    {
        for (j=0; j<4; ++j) printf("%c ", points[i][j]);

     printf("\n");
     }
Run Code Online (Sandbox Code Playgroud)

这样坐标值将从左到右和从上到下增加。如果你想要,否则你应该改变 for 循环边界。

要刷新屏幕,我建议您打印一大堆换行符以有效清除屏幕。还有其他方法可以做到这一点(如系统(“cls”),但不是那么痛苦