Étape 6: Constructions de jeu - logique de jeu - détection de Collision
La balle a maintenant un moyen de passer d’une manière prévisible, mais comment la balle la transition entre les différents États ? Très logiquement, certains événements jeu dictera les transitions, mais la prochaine étape est de définir où les changements se produisent et à exactement dans quel état. Grâce à cette conception de Pong, ce qui devrait arriver quand la balle touche le haut et, par analogie, bas de l’écran de jeu ? Briser ce supplémentaire, de frapper le haut de l’écran, la balle doit se déplacer vers le haut. Pour simuler un effet rebondissant, le ballon doit passer à la vers le bas. Lorsque les différents États de balle ont été décrites ci-dessus, la boule a deux États à la baisse : left ou right.
L’analyse doit maintenant continuer au cas par cas. Donc, suppose que la balle se déplace vers le haut et à gauche juste avant la collision. À la baisse est la prochaine étape logique, mais doit il continuer mouvement gauche ou passer en se déplaçant de droite ? Si la balle était à la transition vers un état de droit se déplaçant, la balle serait son inversion le long de la diagonale qui il vient, ne jamais passer de l’autre côté de l’écran. La seule façon pour qu’elle atteigne l’autre côté de l’écran de jeu est de continuer à se déplacer dans une direction vers la gauche. Une situation similaire détient lorsque la balle se déplace vers le haut et à droite : continuer à se déplacer vers la droite et basculez vers le bas. Les cas à la baisse sont traités symétriquement.
Exactement quand ces changements de transition se produisent ? Il s’agit de la définition d’une collision : deux objets à un état d’intersection sont censés entrer en collision. Dans le cas de ce jeu, vu les objets effectivement se croisent avec l’autre conduira à des anomalies graphiques ; par conséquent, l’état exact d’intersection sera lorsque les objets sont tangents à un autre, ou tout simplement touchante mais ne pas de chevauchement.
Une discussion sur le plan est maintenant en ordre. Dans de nombreuses langues, traçage pixels fonctionne de manière similaire. Chaque unité dans une paire ordonnée est un pixel avec l’abscisse mesurant la quantité de pixels à partir de la limite gauche de l’écran et lié de la coordonnée y mesurer la distance entre le haut de l’écran. Soit la résolution actuelle X x Y, où X, Y > = 0. X a décrit la largeur maximale de l’écran tandis que Y désigne la hauteur de l’écran. Le coin supérieur gauche de l’écran est (0, 0), tandis que le coin inférieur droit est (X, Y). Pour tracer un point 40 pixels à gauche et 20 pixels vers le bas, utilisez la paire ordonnée (40, 20). Par conséquent, la ligne supérieure de l’écran peut être décrite sous la forme (x, 0), tandis que la ligne de l’écran peut être notée (x, Y), où 0 < = x < = X (voir Figure 1).
Il s’avère que (x, 0) et (x, Y) sont les points de collision dans l’écran de jeu. Pour le premier cas, la partie supérieure de la balle sera tangente à la partie supérieure de l’écran de jeu et la balle doit changer à l’état correct avant de réellement se coupant avec le bord supérieur. Étant donné que tous nos objets du jeu sont décrites avec des coins supérieurs gauche, chaque objet de jeu sera représentée dans les données avec une sorte de paire de coordonnées. Puis le bas du boîtier bord fonctionne de la même façon, mais avec un léger problème. Si l’emplacement de la balle est toujours égale à (x, Y), alors il doit déjà être coupant le bord inférieur de l’écran de jeu. Étant donné que le ballon est un carré avec un s de longueur constante, le point de tangence exact peut maintenant se calculer facilement. En soustrayant s de Y, la hauteur de l’écran donne le point où le bord inférieur de la balle est tangent au bord inférieur de l’écran de jeu. Ce représentant sous forme de paire de coordonnées, chaque point de collision possible peut être représenté par (x, Y - s).
Un ensemble similaire de collisions découle le cas lorsque la balle et la pagaie ne s’opposent pas ; en substance, la condition de notation. À l’aide de la définition de l’avion coordonnée, (0, y) et (X, y) doivent être les limites droite et gauche de l’écran de jeu, où 0 < = y < = Y. Étant donné que les coins supérieur gauche des objets sont utilisés pour définir leur emplacement, la définition du bord gauche, (0, y), peut être utilisé pour trouver les points de tangence. Tout comme lors de trouver des points de collision pour les bords haut et en bas, un cas a utilisé la définition d’un bord, mais une compensation devait être utilisée pour trouver le point exact de la tangente. Si l’emplacement de la balle étaient à égalité (X, y), le ballon serait ont déjà recoupé avec le bord droit. Puisque la balle a une largeur de s, (X - s, y) donne tous les points de tangence avec le bord droit de l’écran de jeu.
Toutes les collisions de bord écran ont maintenant été explicitement traitées. Ces deux derniers cas sont un peu plus difficiles, car c’est lorsque la balle entre en collision avec les palettes sur les côtés gauche et droit de l’écran. Le calcul est similaire à lorsque vous travaillez avec les mur-comme des bords supérieur et inférieur de l’écran de jeu, mais le mur est maintenant limité, ou a une longueur très spécifique. Où la balle peut effectivement se heurtent avec une pagaie ?
Tout d’abord, considérer la pagaie à gauche. Laissez h indiquent la hauteur de la raquette et w décrivent la largeur en pixels. Supposons que (px, p,y) est l’emplacement de la pagaie et (b,x, by) décrivent l’emplacement de la balle. (N’oubliez pas, ce sont la partie supérieure gauche coins.) Pour trouver le point de collision, le bord droit de la palette doit être utilisé. Étant donné que la largeur de la raquette est une constante, (px + w, py) donnera le coin supérieur droit de la raquette. C’est maintenant la limite supérieure des points de collision possible avec la pagaie. Trouver le coin inférieur droit se donnent la limite inférieure et ainsi créer tous les points possibles où la balle peut entrer en collision avec la pagaie. Étant donné que la hauteur de la raquette est une constante, le coin en bas à droite se trouvent en combinant le calcul du bord droit et h, ce qui donne (px + l, p,y + h). Pour effectivement vérifier l’abordage, comparer l’emplacement (b,x, b,y) avec (px + l, p,y + h). Ainsi, lorsque bx = px + w et py < = by < = py + h, une collision se produit (voir Figure 2).
La palette de droite présente un problème symétrique avec les calculs. Depuis le coin supérieur gauche est utilisé pour représenter les lieux, le bord gauche est pratiquement donné, donc tous les points entre (px, p,y) et (p,x, p,y + h) est les points de tangence possibles. Mais maintenant le bord droit de la balle est nécessaire pour trouver la collision. Car s est la longueur d’un côté de la boule, b,x+ s donne le coin supérieur droit de la balle. Le raisonnement ci-dessus peut désormais travailler, donc la collision se produit exactement quand bx + s = px et py < = by < = py + h.
Une dernière chose laissée à discuter : ce qui doit se produire lorsque la balle entre en collision avec les palettes ? Si la balle entre en collision avec la pagaie, alors l’État horizontal doit passer, sinon la balle passerait par la pagaie. La prochaine question évidente implique l’État vertical de la balle. Supposons que la balle va vers le haut ; alors si la balle devait retourner à son état vertical, ou descendre, puis la balle reviendrait selon sa voie diagonale même étant donné que la boule renverse son état horizontal. Par conséquent, l’État vertical doit être le même.
Une tendance intéressante peut maintenant être remarquée entre les relations avec les collisions et les États de la balle. Si la balle entre en collision avec le bord supérieur ou inférieur, faire basculer l’État vertical. Si la balle entre en collision avec l’une des pales, un bord gauche ou droit en quelque sorte, faire basculer l’État horizontal.