0

我正在制作蛇和梯子游戏。我将屏幕划分为 10 条水平线和 10 条垂直线,但我发现的下一个问题是对特定插槽进行编号。

使用 outextxy() 函数我只能显示特定的数字并且尝试使用数组将不起作用:

int a[100];
for(i=0;i<100;i++)
{
    a[i]=i;
    outtextxy( x,y,a[i]);
}

此方法不起作用,因为 outtextxy() 显示 char 值。
所以或者我这样做了:

char a[100];
for(i=0;i<100;i++)
{
    a[i]=i;
    outtextxy( x,y,a[i]);
}

但后来我才知道 outtextxy() 仅适用于字符串。

这样我将不得不使用 100 个 outtextxy() 语句。有任何想法吗?

4

2 回答 2

1

如果我正确理解了您的问题,则需要将整数转换为字符串,然后再将其提供给outtextxy,因此您需要以下内容:

int a[100];
char output[MAX_OUTPUT_SIZE]; // For 0 to 99, MAX_OUTPUT_SIZE = 5 is more than enough
for(i=0;i<100;i++)
{ 
   a[i]=i;
   sprintf( output, "%d", i );
   outtextxy( x,y,output);
}

请注意,该数组a完全是附带的,因此除非您以后需要该数组,否则以下内容也可以正常工作:

char output[MAX_OUTPUT_SIZE]; // For 0 to 99, MAX_OUTPUT_SIZE = 5 is more than enough
for(i=0;i<100;i++)
{ 
   sprintf( output, "%d", i );
   outtextxy( x,y,output);
}
于 2012-09-01T12:13:01.607 回答
1

基本思想是这样的:

int rows = 10;
int cols = 10;

for(int r = 0; r < rows; ++r){
 for(int c = 0; c < cols; ++c){
   cout << r << ", " << c;
   if(c != cols-1) cout << " ";
 }
cout << endl;
}

现在,如果您想在数组中显示值,您有两种选择,具体取决于数组。如果它是一个二维数组,它看起来像

cout << arr[r][c]; // you should understand the difference between row-major / column major

如果它是一维数组:

cout << arr[ (r * cols) + c ]
于 2012-09-01T12:14:45.740 回答