【发布时间】:2016-04-22 21:57:39
【问题描述】:
您好,我必须在明天之前用 C 语言编写一个俄罗斯方块游戏,但我在使用 getter 时遇到了一些麻烦,它应该将精灵作为 4x4 矩阵返回。
这很可能很简单,尽管我对指向数组的指针不太熟悉。
所以在我存储形状的第一个文件中,这是 1 个形状的测试吸气剂
int shape_i[4][4] = {
{1,0,0,0},
{1,0,0,0},
{1,0,0,0},
{1,0,0,0}
};
int **get_shape(){
return shape_i;}
现在从我的绘图文件中我这样称呼它
void draw_shape(){
int **shape= get_shape();
for (int i = 0; i<4; i++){
for (int j=0; j<4; j++){
int value = shape[j][i];
if (value != 0){
SDL_Rect rect;
rect.x = (get_x()+i)*BLOCK_WIDTH;
rect.y = (get_y()+j) *BLOCK_HEIGHT;
rect.h = BLOCK_HEIGHT;
rect.w = BLOCK_WIDTH;
SDL_FillRect(window,&rect,0x044DDE);
}
}
}
SDL_Flip(window);
}
编译时不会出错,但我的程序一旦到达 get_shape() 就会停止
【问题讨论】:
-
你有什么错误?目前尚不清楚哪个是所需的输出,哪个是您得到的输出。
-
如果我替换 **shape=get_shape(); 我的窗口一旦到达 get_shape() 就会关闭并停止运行,它不会给我一个错误。 int shape[4][4] = { {1,0,0,0}, {1,0,0,0}, {1,0,0,0}, {1,0,0,0} };它工作得很好
-
而且for循环也错了,应该从0到3
-
@Teepeemm 如果在分配中,那么 shape[4][4] = {...} 是正确的
标签: c arrays pointers return tetris