我使用一個函數生成一個級別,所以我發送一個指向我的屏幕指針來更新他。 但是,當我嘗試使用SDL_MapRGB時,在*screen->format
部件上出現錯誤。 有沒有辦法做到這一點? 下面是我使用的代碼:SDL_MapRGB,如何使用指針指向屏幕 - >格式
void generateLevel(SDL_Surface** screen)
{
int i=0, j=0;
char object =' ';
FILE* level = NULL;
SDL_Surface* lvl[LARGEUR_MAP][HAUTEUR_MAP];
SDL_Rect posElem;
//Ouverture du fichier contenant les infos du niveau
level = fopen("lvl.txt","r");
if(level == NULL)
{
fprintf(stderr,"Erreur lors de l'ouverture du fichier");
exit(EXIT_FAILURE);
}
//Boucle pour lire le fichier et placer les éléments du décor
for(j=0;j<HAUTEUR_MAP;j++)
{
for(i=0;i<LARGEUR_MAP;i++)
{
object = fgetc(level);
if(object == '\n')
object = fgetc(level);
switch(object)
{
case 'm':
lvl[i][j] = IMG_Load("images\\mur.jpg");
posElem.x = i*TAILLE_BLOC;
posElem.y = j*TAILLE_BLOC;
SDL_BlitSurface(lvl[i][j], NULL, *screen, &posElem);
break;
}
}
}
SDL_FillRect(*screen, NULL, SDL_MapRGB(*screen->format,255,255,255));
SDL_Flip(*screen);
fclose(level);
}
的錯誤出現在代碼的結尾,在SDL_FillRect(); 一切工作正常,但這,我不知道如何做到這一點。試着用*屏幕 - >格式,**屏幕 - >格式,屏幕 - >格式,甚至屏幕 - >格式(我多麼迫不及待地^ ^)。
編輯:錯誤
error: request for member 'format' in '* screen', which is of pointer type 'SDL_Surface*' (maybe you meant to use '->' ?)"`
'(* screen) - > format'? – 2014-12-19 11:42:30
完美!你總是在這裏幫助Sourav :) 我可以問你爲什麼需要「()」嗎? – DoT 2014-12-19 11:43:53
它與[運算符優先級](http://en.cppreference.com/w/c/language/operator_precedence)相關。有點長,要發表評論。我會在我的答案中詳細說明。 :-) – 2014-12-19 11:44:49