Pong på XGS bild (23 / 36 steg)
Steg 23: Bollen Demo - spel Loop
Ange det spela kretsar. Alla spelets logiska operationer måste göras under VSYNC på displayen att förhindra hårdvara oförutsedda utgifter och grafiska avvikelser. Grafikdrivrutiner ger två otroligt användbara funktioner, WAIT_FOR_VSYNC_START() och WAIT_FOR_VSYNC_END(), som så länge koden inte går över gränsen på cykel, kan säkerställa det spela kretsar inte gör något produktivt medan skärmen är på väg att visas. Varje iteration av spelet loopen börjar med WAIT_FOR_VSYNC_START() och avsluta med WAIT_FOR_VSYNC_END(). Allt annat är inklämt mellan dessa två funktionsanrop.Som tidigare beskrivits är det första steget i det spela kretsar att flytta bollen. Detta innebär kontroll av staten och sedan ett steg i rätt riktning. Helt enkelt öka och minska variablerna läge är inte fullt tillräckligt, som bollen måste stanna inom skärmen av lek. Därför bollen rörelse och kollision upptäckt för övre, nedre, längst till vänster och längst till höger gränserna är oupplösligt knutna. Jämförelser kan sparas genom att kontrollera staten först och sedan räkna ut om bollen ska flytta eller ändra tillståndet. De vertikala och horisontella staterna måste kontrolleras separat, eftersom de agerar självständigt. Kollisioner till vänster och höger gränserna av skärmen är scoring villkoren, men för nu, ha bollen studsar runt på skärmen är målet med denna demo. Jämförelserna inklämt mellan funktionerna VSYNC bör se ut ungefär:
om (state_y == BALL_UP)
om (ball_y == 0)
state_y = BALL_DOWN;
annat
ball_y--;
annat
om (ball_y + boll == SCREEN_HEIGHT)
statliga y = BALL_UP;
annat
ball_y ++;
om (state_x == BALL_LEFT)
om (ball_x == 0)
state_x = BALL_RIGHT;
annat
ball_x--;
annat
om (ball_x == skärmbredd-BALL)
state_x = BALL_LEFT;
annat
ball_x ++;