我有一个用ASCII打印的游戏板,我希望最终看起来像这样
___
3 ___/ 1 \___ ___
___/ 2 \___/ 2 \/ 3 \
2 / 1 \___/ 3 \___/\___/___
\___/ 2 \___/ / 2 \
1 / 1 \___/ 1 \___ \___/
\___/ 2 \___/ 2 \
0 \___/ \___/
1 2 3 4
Run Code Online (Sandbox Code Playgroud)
地图沿x轴和y轴分布,地图的大小也是固定的.要打印的数字都存储在2d数组中.如上所示,其中一些也可能是空的.这是我试图做的事情.map-> sizeX和map-> sizeY给出地图的X轴和y轴的大小.如果该块中的数字为0,则表示该块不存在,我们不打印它.任何帮助将非常感激.
void printMap(struct Map *map) {
for (int i = 0; i < map->sizeX; ++i) {
for (int k = 0; k < map->sizeX && i == 0; ++k)
printf(" ___ ");
printf("\n");
for (int j = 0; j < map->sizeY; ++j) {
if(i == 0) {
printf("/ %d \\", giveFloe(map, i, j)->numbOfFish);
}
else {
printf("/ %d \\", giveFloe(map, i, j)->numbOfFish);
}
}
printf("\n");
for (int l = 0; l < map->sizeX; ++l)
printf("\\___/");
}
printf("\n");
}
Run Code Online (Sandbox Code Playgroud)
这是我得到的输出,因为我无法正确打印第一行,我没有继续.地图不超过15 x 15,所以我确信它可以打印在终端窗口上.
___ ___ ___ ___ ___ ___ ___ ___ ___ ___
/ 3 \/ 0 \/ 2 \/ 0 \/ 2 \/ 0 \/ 3 \/ 0 \/ 1 \/ 0 \
\___/\___/\___/\___/\___/\___/\___/\___/\___/\___/
/ 0 \/ 0 \/ 0 \/ 2 \/ 0 \/ 1 \/ 0 \/ 3 \/ 0 \/ 3 \
\___/\___/\___/\___/\___/\___/\___/\___/\___/\___/
/ 2 \/ 0 \/ 3 \/ 0 \/ 3 \/ 0 \/ 3 \/ 0 \/ 1 \/ 0 \
\___/\___/\___/\___/\___/\___/\___/\___/\___/\___/
/ 0 \/ 1 \/ 0 \/ 2 \/ 0 \/ 2 \/ 0 \/ 2 \/ 0 \/ 3 \
\___/\___/\___/\___/\___/\___/\___/\___/\___/\___/
/ 3 \/ 0 \/ 0 \/ 0 \/ 2 \/ 0 \/ 3 \/ 0 \/ 1 \/ 0 \
\___/\___/\___/\___/\___/\___/\___/\___/\___/\___/
/ 0 \/ 3 \/ 0 \/ 2 \/ 0 \/ 1 \/ 0 \/ 3 \/ 0 \/ 1 \
\___/\___/\___/\___/\___/\___/\___/\___/\___/\___/
/ 3 \/ 0 \/ 2 \/ 0 \/ 2 \/ 0 \/ 3 \/ 0 \/ 2 \/ 0 \
\___/\___/\___/\___/\___/\___/\___/\___/\___/\___/
/ 0 \/ 2 \/ 0 \/ 3 \/ 0 \/ 3 \/ 0 \/ 2 \/ 0 \/ 2 \
\___/\___/\___/\___/\___/\___/\___/\___/\___/\___/
/ 3 \/ 0 \/ 2 \/ 0 \/ 3 \/ 0 \/ 3 \/ 0 \/ 2 \/ 0 \
\___/\___/\___/\___/\___/\___/\___/\___/\___/\___/
/ 0 \/ 2 \/ 0 \/ 3 \/ 0 \/ 1 \/ 0 \/ 3 \/ 0 \/ 3 \
\___/\___/\___/\___/\___/\___/\___/\___/\___/\___/
Run Code Online (Sandbox Code Playgroud)
这是我可以得到的,假设地图不会超过终端窗口.我需要地图看起来像上面绘制的六边形.
struct Map {
struct Floe *mapPointer;
int sizeX;
int sizeY;
struct Box *changelog;
int changeCount;
int maxChanges;
struct Player *players;
int playerCount;
};
Run Code Online (Sandbox Code Playgroud)
giveFloe()接受结构图并返回该floe坐标.
struct Floe {
int numbOfFish;
int whosPenguin;
};
Run Code Online (Sandbox Code Playgroud)
小智 1
我认为您的第一步可能是重新考虑网格的布局方式。
首先,您应该如何知道每个六边形应该打印在哪一行(注意我的图像如何将每一行视为一行)。
其次,同一行上相邻的两个六边形是否合法?请参阅网格右侧的3六边形。2
___
5 ___/ 1 \___ ___
4 ___/ 2 \___/ 2 \/ 3 \
3 / 1 \___/ 3 \___/\___/___
2 \___/ 2 \___/ / 2 \
1 / 1 \___/ 1 \___ \___/
0 \___/ 2 \___/ 2 \
\___/ \___/
0---1---2---3----4---5 <-- columns 4 and 5 don't fit normally
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
133 次 |
| 最近记录: |