Pong sur le PIC de XGS (6 / 36 étapes)

Étape 6: Constructions de jeu - logique de jeu - détection de Collision

Il s’agit d’un concept de loin le plus difficile à envisager lors de l’écriture de Pong. Détection de collision est intrinsèquement géométriques et par conséquent mathématique, dans la nature.

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.

Articles Liés

Comment faire la meilleure Table de Beer Pong sur le campus

Comment faire la meilleure Table de Beer Pong sur le campus

Êtes-vous fatigué de jouer pong bière boiteux pli des tables ?  Ou peut-être fatigué de prendre vos amis porte les gonds, chaque fois que vous voulez jouer ?  Vous êtes-vous déjà demandé comment ils construisent toute la bière fraîche, tables de ping
Nulle part de Beer Pong sur roues

Nulle part de Beer Pong sur roues

nous aimons jouer pong bière alors j'ai créé ma propre version pour prendre n'importe où. Il peut être pris à part et stockées, et c'est sur roues. Le projet nécessite de couture et m'a pris environ 2 heures. Camping cet été va être un souffle lorsqu
Pong sur Arduino esplora !

Pong sur Arduino esplora !

Hey tout le mondeL'Arduino Esplora est un microcontrôleur incroyable utilisant le grand 32u4 Atmega avec intégré usb serial ainsi que de nombreux grands capteurs tels que :-Capteur-Capteur-Accéléromètre 3 axes-Joystick-Slider-RGB LED-BuzzerMaintenant
Comment mettre le texte sur un pic

Comment mettre le texte sur un pic

il s'agit d'un instructables sur comment mettre le texte sur une image. Je vais faire des choses en utilisant ce lapin heureux (très très ennuyeux)alors Amusez-vous.Étape 1: Les choses dont vous aurez besoin Chose que vous aurez besoin:PC ou ordinate
Bob l’éponge sur le mur

Bob l’éponge sur le mur

J'ai voulu une murale spéciale pour notre fille, quand j'ai enlevé un morceau de mousse à la salle d'artisanat, je suis venu avec une idée sympa de verryÉtape 1: mousse de rembourrage j'ai coupé dans la pièce de mousse le corps de Bob l'EpongeÉtape 2
PIC 12F675 programmeur/OscCal restauration/testeur

PIC 12F675 programmeur/OscCal restauration/testeur

Un de mes circuits que je construis assez souvent (20-40 à la fois), utilise un PIC 12F675. J'ai eu les problèmes suivants :Les conseils que je fais, n'a pas les capacités de programmation en circuit. C'est pour permettre une mise en page du Conseil
Ping Pong Gun

Ping Pong Gun

il s'agit d'un très amusant moyen de jouer au paintball sans toute la peinture. Ces armes sont faciles à faire et nécessite peu de matériel.Étape 1: Les matériaux Vous avez besoin :1-1/2 pouces ABS pipe (d'environ 18 pouces de long)-bouteille d'eau d
Amusez-vous avec PIC Assembly - Episode 22

Amusez-vous avec PIC Assembly - Episode 22

Le dicton est que « la nécessité est la mère de l'invention ». En réalité, cependant, il y a beaucoup de « mères » de l'invention. Mon préféré est « paresse » mais parfois trucs obtient inventé juste parce que c'est un plaisir au défi de comprendre u
Comment peindre une pépinière sur le thème de star/nuit-ciel qui durera jusqu’au lycée.

Comment peindre une pépinière sur le thème de star/nuit-ciel qui durera jusqu’au lycée.

Avant j'ai même eu des enfants, j'ai commencé à peindre ma chambre d'hôtes dans un thème de star/nuit-ciel parce que je suis vraiment, vraiment, vraiment noix pour l'espace et toutes les choses liées à la star. Comme la « all-I-ever-wanted-to-be-was-
Comment faire pour s’accrocher à une palette de ping-pong

Comment faire pour s’accrocher à une palette de ping-pong

Ping pong est un sport étonnant qui exige une coordination oculo-manuelle précise et des réflexes. Il faut habileté à frapper la balle et même plus de compétences de frapper la balle sur la table. Compétences de base à connaître sont pouvant servir l
Éponge + méthode de chlorure ferrique--Etch PCB en une Minute !

Éponge + méthode de chlorure ferrique--Etch PCB en une Minute !

Dans ce Instructable, je vais vous montrer Comment etch un circuit avec environ une cuillère à soupe de chlorure ferrique solution de gravure et une éponge carrée de 2 pouces. Vous serez surpris comme le cuivre exposé sur le circuit imprimé disparaît
Clignoter une LED avec langage assembleur & un PIC

Clignoter une LED avec langage assembleur & un PIC

pour énoncer l'évidence aveuglante, il y a beaucoup de saveurs du microcontrôleur dans le monde.  Il y a d'innombrables applications pour eux aussi.  Ce Instructable couvrira les étapes nécessaires à clignoter une LED en utilisant un microcontrôleur
Comprendre l’ICSP pour les microcontrôleurs PIC

Comprendre l’ICSP pour les microcontrôleurs PIC

programmation de microcontrôleurs n'est pas difficile. Construire un programmeur rend un grand premier projet électronique. L'objectif de cette instructable est d'expliquer la méthode simple « in circuit serial programming » utilisée avec PICs de Mic
Starry Night argile polymère plat porte-éponge

Starry Night argile polymère plat porte-éponge

j'étais fatigué de mon porte-éponge en plastique moche.  J'ai lu que l'argile polymère cuite est assez résistant à l'eau, et gens ont fait des scultpures en plein air avec lui.  Je décide donc d'utiliser l'argile polymère pour rendre le porte-éponge.