我获得了char *map
,其中包含您可以在屏幕上找到的不同元素。这些元素为e
,用于电力,c
用于投币,_
用于空格。
我已经完成了一个遍历数组的循环,并且只要我有一个这样的字符就会检测到。这是问题所在,当我看到blit为每个字母blit相应的sprite我的程序段错误。
当我拿出SDL_BlitSurface()
程序正常工作时,需要进行大量的循环。
我觉得我在SDL_BlitSurface()
这是一切出错的功能:
void print_map()
{
int i;
SDL_Rect pos;
int x;
int y;
if ((th_client[1].coin = IMG_Load("./images/coin.png")) == NULL)
printf("Erreur\n");
y = 0;
i = 0;
while (y != 10)
{
pos.y = (y * 10) + 5;
x = 0;
while (x != 95)
{
pos.x = (x * 10) + 5;
printf("pos x: %d\n", pos.x);
if (th_client[1].map[i] == 'c')
{
printf("char : %c\n", th_client[1].map[i]);
if ((SDL_BlitSurface(th_client[i].screen, NULL,th_client[i].coin, &pos)) == -1) // <- it blows up right here
printf("Erreur\n");
}
x++;
i++;
}
y++;
printf("y : %d\n", y);
}
SDL_FreeSurface(th_client[1].coin);
}
th_client [1]对应于图形线程,里面有我的结构,其中包含初始化SDL所需的一切。
输出:
pos x: 5
...
pos x: 945
y : 1 // <- jumps into the next line
pos x: 5
...
pos x: 355
char : c // <- Coin found
Segmentation fault