我将如何在C ++中显示我的俄罗斯方块的存储桶?

时间:2015-08-01 00:21:23

标签: c++ bucket tetris

我已经成为一名编程学生已有一年左右了,我的任务是创建一个俄罗斯方块游戏。我试图显示用于游戏的桶,它必须是25 x 12.我尝试使用嵌套循环思考和研究一种方法,但无济于事。一切都很好,除了我得到一个错误C2078:初始化程序太多了。有人可以看看代码,找到一些我没有看到的东西,或者找到一种更有效的方式来绘制桶吗?任何帮助将不胜感激,谢谢。

{{1}}

4 个答案:

答案 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]可能更有意义 (请注意heightwidth的顺序) 因为我们通常认为数组的“高度”是行数 (以及您列出初始化程序的方式表明那是 你有什么想法。

答案 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.评论以了解此事。