Etape 34 : Pong - Gamepad Input
L’analyse théorique de l’entrée pour lecteur et AI laissé une clé, mais intuitive, notion : les palettes ne doivent pas se déplacer hors écran. La détection de collision assuré la balle ne serait pas déplacer en dehors de l’écran de jeu, mais l’étape suivante consiste à faire en sorte que le joueur et l’AI impossible de déplacer à l’extérieur de cette même frontière. En affirmant que les palettes restent dans les limites de l’écran, frustration de joueur est réduite au minimum et il n’y a aucune tentative de dessiner des objets en dehors de l’écran visible. Pilotes graphiques peuvent vérifier pas explicitement que l’emplacement est une valeur valide, donc les fonctions graphiques, essayez d’écrire dans la mémoire en dehors de la mémoire tampon vidéo.La solution est la même chose pour le joueur et l’AI: avant d’essayer de déplacer la pagaie, simplement affirmer que la palette n’est pas à un certain bord de l’écran. Étant donné que les palettes ne peuvent se déplacer verticalement, il y a seulement deux cas. Supposons que la pagaie tente de déplacer vers le haut. Avant de modifier l’emplacement logique, vérifier la coordonnée y. Si c’est 0, alors la pagaie est actuellement tangent à la partie supérieure de l’écran et ne doit pas bouger vers le haut plus.
Reste le cas où la palette est en mouvement vers le bas. Étant donné que la hauteur de la palette est une constante, h, puis le point le plus bas pour le coin supérieur gauche doit être (x, Y - h), où x est le point fixe horizontal pour la pagaie et Y est la hauteur de l’écran. Pour aller plus bas signifierait la palette n’est pas juste tangent, mais qui se croisent, avec le bord inférieur de l’écran.
Maintenant, pour un contenu plus frais. L’entrée en jeu doit être pris en sandwich entre le mouvement de la balle et le code de détection de collision, mais il n’y a aucune relation entre le code AI et le code d’entrée de jeu. Les pilotes, encore une fois, prévoient une fonction sympa gère les entrées de la manette sur le PIC de XGS. La fonction Gamepad_Read() prend une constante comme un argument qui détermine quelle manette pour lire (GAMEPAD_0 ou GAMEPAD_1) et renvoie un nombre qui représente ce que le bouton est enfoncé. Les seuls boutons nécessaires pour ce jeu sont le haut et vers le bas de boutons sur le D-pad, représenté par GAMEPAD_UP et GAMEPAD_DOWN, respectivement.
À l’aide d’une instruction switch pour lire l’entrée, pour chaque cas, la seule chose à faire est d’ajuster la p1_y de la manière correcte, avec un attelage. Comme la palette de AI, la pagaie ne doit pas rouler hors de l’écran. La solution est exactement le même, simplement Vérifiez qu’il n’y a toujours la salle pour déplacer la palette avant de régler p1_y. Le code d’entrée de jeu devrait ressembler à :
switch (Gamepad_Read(GAMEPAD_0)) { case GAMEPAD_UP: if (p1_y != 0) p1_y--; break; case GAMEPAD_DOWN: if (p1_y != SCREEN_HEIGHT-PADDLE_HEIGHT) p1_y++; break; }