Je travaille sur un petit jeu pour l'école. J'ai carrelé une image à l'écran, mais chaque fois que mon personnage bouge, je dois le recoller (les tuiles sont derrière le personnage, car c'est une grille et le personnage se déplace dans les cellules). J'ai essayé de tout coller sur une surface différente, puis j'ai fait maculer cette surface sur la surface de mon écran pour éviter d'avoir à la retiler à chaque fois et économiser sur le temps de traitement. Ça n'a pas vraiment fonctionné, c'est comme si la surface sur laquelle je dormais oublie ce qui était carrelé dessus. Il ne l'erreur pas, il n'affiche pas la surface carrelée sur la surface de ma fenêtre.Blitting une surface sur une autre surface (SDL2, C++, VS2015)
Voici mon code (la partie concernée au moins)
void postaviTiles() {
SDL_BlitSurface(cell, NULL, polje, &offsetcell); //cell
for (int i = 0; i < 89; i++) {
SDL_Delay(5);
if (offsetcell.x < 450) {
offsetcell.x += 50;
SDL_BlitSurface(cell, NULL, polje, &offsetcell);
}
else {
offsetcell.x = 9;
offsetcell.y += 50;
SDL_BlitSurface(cell, NULL, polje, &offsetcell);
}
SDL_UpdateWindowSurface(okno);
}
poljezrisano = true;
}
//--------------------------------------------------------------//
void tileCells() {
if (poljezrisano == false) {
postaviTiles();}
SDL_BlitSurface(polje, NULL, oknoSurface, NULL); //cell
SDL_UpdateWindowSurface(okno);
}
//--------------------------------------------------------------//
Il convient de mentionner que ce carrelage chaque fois fonctionne très bien, mais je veux tuiles une fois, avoir que sur une surface et puis juste bliter cette surface sur ma surface d'écran.
PS: Désolé pour la plupart des variables et des noms de fonction ne pas être en anglais