Paso 23: Demo - lazo del juego de la bola
Entrar en el bucle de juego. Todas las operaciones lógicas del juego deben hacerse durante el VSYNC de la pantalla para prevenir contingencias de hardware y anomalías gráficas. Los controladores de gráficos proporcionan dos funciones muy útiles, WAIT_FOR_VSYNC_START() y WAIT_FOR_VSYNC_END(), que, como el código no va sobre el límite del ciclo, puede asegurar que el bucle de juego no está haciendo nada productivo mientras que la pantalla está visualizada. Cada iteración del bucle juego comenzaremos con WAIT_FOR_VSYNC_START() y terminan con WAIT_FOR_VSYNC_END(). Todo lo demás se encuentra entre estas dos funciones llamadas.Como se describió anteriormente, el primer paso en el circuito del juego es mover la bola. Se trata de comprobar el estado y luego moviéndolo en la dirección correcta. Simplemente incrementar y disminuir las variables de ubicación no es suficiente, ya que la bola debe permanecer dentro de la pantalla de juego. Por lo tanto, la detección de movimiento y colisión de bola para los límites superiores, inferiores, izquierdas y derecha están vinculados indisolublemente. Las comparaciones pueden guardarse por comprobar el estado en primer lugar, a continuación, averiguar si debe mover la bola o para cambiar el estado. Los Estados verticales y horizontales deben comprobarse por separado, ya que actúan independientemente. Colisiones en los límites izquierdos y derecho de la pantalla son las condiciones de calificación, pero, por ahora, tener la pelota rebote por la pantalla es el objetivo de esta demo. Las comparaciones entre las funciones VSYNC deberían ser algo como:
if (state_y == BALL_UP) if (ball_y == 0) state_y = BALL_DOWN; else ball_y--; else if (ball_y+BALL == SCREEN_HEIGHT) state y = BALL_UP; else ball_y++; if (state_x == BALL_LEFT) if (ball_x == 0) state_x = BALL_RIGHT; else ball_x--; else if (ball_x == SCREEN_WIDTH-BALL) state_x = BALL_LEFT; else ball_x++;