我已经成为一名编程学生已有一年左右了,我的任务是创建一个俄罗斯方块游戏。我试图显示用于游戏的桶,它必须是25 x 12.我尝试使用嵌套循环思考和研究一种方法,但无济于事。一切都很好,除了我得到一个错误C2078:初始化程序太多了。有人可以看看代码,找到一些我没有看到的东西,或者找到一种更有效的方式来绘制桶吗?任何帮助将不胜感激,谢谢。
{{1}}
答案 0 :(得分:1)
"x"
和" "
不属于char
类型。它们是字符串(类型char[1]
),
所以这些字符串中的前12个被认为是你想要的
通过bucket[0]
初始化bucket[11]
。
如果您使用'x'
和' '
,则其类型为char
。
但也要检查你的数组尺寸。
char bucket [12][25]
是一个包含12行的数组,每行25个字符。
初始化列表中的前25个字符将成为
bucket
的第一行的内容。
宣布char bucket [height][width]
可能更有意义
(请注意height
和width
的顺序)
因为我们通常认为数组的“高度”是行数
(以及您列出初始化程序的方式表明那是
你有什么想法。
答案 1 :(得分:1)
我认为您可以尝试使用二进制数来表示任何行。 然后你可以将它显示为一个数字数组。数组中的每个单元格都是行。 短路数组可以正常,因为短路有16位。 (所有25X12只占用50个字节。不像矩阵需要12 * 25个字节。) 如果他们是x,我把你的位置为1。 我认为这是更优雅的解决方案。
例如
"x"," "," "," "," "," "," "," "," "," "," ","x"
必须是
'x',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','x'
在这种情况下,您打开了2位。 所以这一行的二进制文件是
100000000001
的值为
2049
if ((number & 2^i) !=0){
//The bit i is 1 so you draw x in column i.
}
我不是说这是更好的解决方案,但这是另一种思维方式。
答案 2 :(得分:0)
初始化矩阵的正确方法如下:
char bucket[width][height] = { { 'X', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', 'X'},
{ 'X', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', 'X'},
...
};
或者
char bucket[width + 1][height] = { "X X",
"X X",
...
};
答案 3 :(得分:0)
您需要在其中一个功能中使用for循环来显示您的存储桶。它看起来像这样。
int main(){
for (x = 0; x < height; x++){
//loops for height
for (y = 0; y < a; y++){
//loops for width
}
}
}
这只是一个结构性的例子。你应该像这样初始化你的桶:
char bucket[height][width]
请参阅David K.评论以了解此事。