J'ai un jeu qui instancie une nouvelle structure toutes les 40 images et l'ajoute à une liste chaînée. Il parcourt ensuite la liste chaînée en dessinant chaque structure à l'écran sous la forme d'un cercle à l'aide de SDL. Cependant, les cercles sont dessinés à l'écran puis disparaissent à nouveau plutôt que de rester à l'écran.c mappe de dessin de liste chaînée à l'écran
Cette fonction rend la nouvelle structure et est appelé toutes les 40 cadres
void spawnAsteroid(){
srand(time(NULL));
int maxRad = 60;
int minRad = 20;
Asteroid asteroidddd = {0,0,rand()%SCREEN_WIDTH , rand()%SCREEN_HEIGHT, (rand()%(maxRad-minRad))+minRad};
asteroidList = g_list_prepend(asteroidList, &asteroidddd);
}
Celui-ci boucle dans la liste chaînée
void drawAsteroids(){
GList *list = asteroidList;
//loop through the list
while(list != NULL){
GList *next = list->next;
//draw each asteroid
drawAsteroid(list->data);
list = next;
}
}
Cette fonction dessine la structure comme un cercle
void drawAsteroid(void *asteroid){
//cast the void pointer so it can be dereferenced
Asteroid *newAsteroid = (Asteroid *)asteroid;
circleRGBA(renderer, newAsteroid->xPos, newAsteroid->yPos, newAsteroid->r, 0, 255, 0, 255);
}
Maintenant, je donne aux structures une vitesse et une vitesse x. Ensuite, je boucle à nouveau la liste et mettre à jour les variables de position par les varibales de vitesse afin que les cercles se déplacent lentement à travers l'écran. Cependant, aucun mouvement n'est vu.
Cette fonction boucle dans la liste
void updateAsteroids(){
GList *list = asteroidList;
//loop through the list
while(list != NULL){
GList *next = list->next;
//draw each asteroid
updateAsteroid(list->data);
list = next;
}
}
Cette fonction met alors à jour la position
void updateAsteroid(void *asteroid){
//cast so it can be dereferenced
Asteroid *newAsteroid = (Asteroid *)asteroid;
newAsteroid -> xPos += newAsteroid -> xSpeed/60;
newAsteroid -> yPos += newAsteroid -> ySpeed/60;
}
Possible duplication de [C fonction d'appel sur le contenu de la liste chaînée] (http://stackoverflow.com/questions/43441064/c-calling-function-on-contents-of-linked-list) – ptomato