Stap 34: Pong - Gamepad Input
De theoretische analyse van zowel de speler input en AI weggelaten van een sleutel, maar intuïtieve, begrip: de peddels moeten niet verplaatsen scherm. De botsingdetectie ervoor gezorgd de bal niet buiten het scherm van het spel zou gaan, maar de volgende stap is om ervoor te zorgen dat de speler en de AI niet buiten deze dezelfde grens bewegen. Door te beweren dat de peddels binnen de grenzen van het scherm blijven, speler frustratie tot een minimum wordt beperkt en er wordt geen poging gedaan om objecten buiten het zichtbare scherm te tekenen. Grafische kunst wagenmenner kunnen niet expliciet gecontroleerd dat de locatie een geldige waarde, is zodat de grafische functies probeert kunnen te schrijven naar geheugen buiten de video buffer.De oplossing is hetzelfde voor zowel de speler als AI: voordat u probeert te verplaatsen van de peddel, gewoon beweren dat de peddel niet aan een bepaalde rand van het scherm is. Aangezien de peddels alleen verticaal bewegen kunnen, zijn er slechts twee gevallen. Stel dat de peddel probeert te verplaatsen naar boven. Controleer voor het wijzigen van de logische locatie, de y-coördinaat. Als dit 0 is, dan is de peddel is momenteel raaklijn aan de bovenkant van het scherm en niet omhoog meer moet verplaatsen.
Dat laat het geval waar de peddel naar beneden beweegt. Aangezien de hoogte van de peddel een constante is, h, vervolgens het laagste punt voor de linker bovenhoek moet (x, Y - h), waarbij x de horizontale dekpunt voor de peddel en Y de schermhoogte is. Te gaan lager zou betekenen de peddel is niet alleen tangent, maar elkaar kruisende, met de onderkant van het scherm.
Nu, voor sommige verser inhoud. De game input moet worden ingeklemd tussen ball beweging en de botsing detectiecode, maar er is geen relatie tussen de AI-code en de input spelcode. De stuurprogramma's, bieden weer, een leuke functie voor het verwerken van de gamepad input op de PIC XGS. De Gamepad_Read()-functie neemt een constante als een argument dat welke gamepad bepaalt te lezen (GAMEPAD_0 of GAMEPAD_1) en geeft als resultaat een getal dat aangeeft welke knop wordt ingedrukt. De enige knoppen die nodig zijn voor dit spel zijn de omhoog en omlaag knoppen op de D-pad, vertegenwoordigd door GAMEPAD_UP en GAMEPAD_DOWN, respectievelijk.
Gebruikt een instructie switch om te lezen van de inbreng, voor elk geval, is het enige ding om te doen te passen p1_y op de juiste manier, met een kink in de kabel. Zoals de AI peddel, moet de peddel niet roll off van het scherm. De oplossing is het exact hetzelfde, eenvoudig te controleren om er zeker dat er nog ruimte om te bewegen de peddel vooraleer u p1_y. De input spelcode eruit:
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; }