Etape 23 : Boule Demo - boucle de jeu
Entrer dans la boucle de jeu. Toutes opérations logiques du jeu doivent être faites pendant le VSYNC de l’écran pour empêcher les contingences matérielles et anomalies graphiques. Les pilotes graphiques fournissent deux fonctions incroyablement utiles, WAIT_FOR_VSYNC_START() et WAIT_FOR_VSYNC_END(), qui, tant que le code ne va pas au-delà de la limite de cycle, peut assurer que la boucle de jeu ne fait rien de productif tandis que l’écran est en train de s’afficher. Chaque itération de la boucle de jeu débutera avec WAIT_FOR_VSYNC_START() et se termine par WAIT_FOR_VSYNC_END(). Tout le reste est pris en sandwich entre les appels de ces deux fonctions.Comme décrit précédemment, la première étape de la boucle de jeu est de déplacer la balle. Il s’agit de vérifier l’État et avant de passer dans le bon sens. Tout simplement incrémentation et la décrémentation les variables de l’emplacement n’est pas assez, car le ballon doit rester dans l’écran de jeu. Par conséquent, la détection de mouvement et de collision de balle pour les limites upper, lower, plus à gauche et à droite sont inextricablement liées. Les comparaisons peuvent être sauvegardés en vérifiant l’État tout d’abord, puis déterminer si la balle doit se déplacer ou de modifier l’État. Les États verticales et horizontales doivent être contrôlées séparément, car ils fonctionnent indépendamment. Collisions aux limites droite et gauche de l’écran sont les conditions de cotation, mais, pour l’instant, vu la balle rebondir autour de l’écran est le but de cette démo. Les comparaisons entre les fonctions VSYNC doivent ressembler à :
if (state_y == BALL_UP) if (ball_y == 0) state_y = BALL_DOWN; else ball_y--; else if (ball_y+BALL == SCREEN_HEIGHT) state y = BALL_UP; else ball_y++; if (state_x == BALL_LEFT) if (ball_x == 0) state_x = BALL_RIGHT; else ball_x--; else if (ball_x == SCREEN_WIDTH-BALL) state_x = BALL_LEFT; else ball_x++;