我正在做一个学校项目,我们需要编写棋盘游戏(麦地那)。它进展顺利,但我遇到了一些麻烦。
有四种不同颜色的宫殿碎片(在游戏板上显示为“P”)需要出现在阵列中。在控制台应用程序中显示颜色不是问题,除非在数组
中阵列需要完全是白色的,但程序需要区分哪个'P'需要哪种颜色。
这是我选择玩家的开关盒(只有宫殿碎片):
switch(c)
{
case 1:
printf("What color? 1 - red, 2 - grey, 3 - black, 4 - brown\n");
scanf ("%d", &d);
switch(d)
{
case 1:
printf("Where would you like to place your palace? X Y\n");
scanf ("%d %d",&y, &x);
tab[x-1][y-1]='P';
player[t].po--;
break;
case 2:
printf("Where would you like to place your palace? X Y\n");
scanf ("%d %d",&y, &x);
tab[x-1][y-1]='P';
player[t].pg--;
break;
case 3:
printf("Where would you like to place your palace? X Y\n");
scanf ("%d %d",&y, &x);
tab[x-1][y-1]='P';
player[t].pn--;
break;
case 4:
printf("Where would you like to place your palace? X Y\n");
scanf ("%d %d",&y, &x);
tab[x-1][y-1]='P';
player[t].pb--;
break;
}
break;
这是我的展示:
void display(char tab[DIMH][DIMV])
{
int i, j, k;
for(i=0; i<9; i++)
{
printf(" %d ", i+1);
}
for(i=0; i<9; i++)
{
printf(" %d ", i+10);
}
printf(" \n");
for(i=0; i<DIMV; i++)
{
printf("+---");
}
printf("+\n");
for(i=0; i<DIMH; i++)
{
for(j=0; j<DIMV; j++)
{
printf("| %c ", tab[i][j]);
}
printf("| %d \n", i+1);
for(k=0; k<DIMV; k++)
{
printf("+---");
}
printf("+\n");
}
}
我有一个结构播放器,概述了每个玩家拥有的棋子数量(例如,player.pb是玩家黑色宫殿)。
或者,如果有人知道如何在桌子上显示多个字母(Pb =黑宫等),同时在电路板上保持正确的间距,那将非常有用。
谢谢
答案 0 :(得分:0)
颜色问题特定于您的硬件和软件环境。如果您知道您正在输出到ANSI终端,则可以使用转义码,但使用像ncurses这样的curses库可能是类UNIX操作系统上最好的选择。在Windows上,许多命令行编译器都有这种类型的库。检查您的文档。
要打印多个字符,您需要更改为打印字符串。您可以使用字段宽度说明符来帮助,或使所有字符串具有相同的长度(例如,两个字符长)。