La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

11. Control de Flujo 2: Iteraciones.. Sirve para tomar decisiones de todo tipo. Sirve para evaluar condiciones, ej: extremos de la pantalla. En videojuegos.

Presentaciones similares


Presentación del tema: "11. Control de Flujo 2: Iteraciones.. Sirve para tomar decisiones de todo tipo. Sirve para evaluar condiciones, ej: extremos de la pantalla. En videojuegos."— Transcripción de la presentación:

1 11. Control de Flujo 2: Iteraciones.

2 Sirve para tomar decisiones de todo tipo. Sirve para evaluar condiciones, ej: extremos de la pantalla. En videojuegos típicamente usado para la IA de enemigos. if( enemigo.distancia( protagonista ) < dist_min) enemigo.atacar(); else enemigo.patrullar();

3 Usado cuando se tiene un número finito de valores para una variable. Típicamente usado para el diseño de menús. Típicamente usado para el manejo de estados. (usando Enum) switch(estado) { case ST_UP: protagonista.MoverUp(); break; case ST_LEFT: protagonista.MoverLeft(); break; case ST_RIGHT: protagonista.MoverRight(); break; case ST_DOWN: protagonista.MoverDown(); break; case ST_SHOOT: protagonista.Disparar() break; default: break; }

4

5 Iteraciones

6 Usado para cuando se itera mientras se cumpla una condición. Ejemplo: Un recolector de recursos, recolectará mientras hayan recursos. Típicamente usado en el ciclo principal del videojuego.

7 While while( ) { ; }

8 while( continuar ) { captarTeclas(); protagonista.Mover(); moverEnemigos(); aplicarFisica(); }

9

10 Usado para iterar un número finito de veces. Típicamente utilizado para iterar un conjunto determinado de elementos, donde se conoce el nº de los elementos. for( ; ; ) { ; }

11 For Usado para iterar un número finito de veces. Típicamente utilizado para iterar un conjunto determinado de elementos, donde se conoce el nº de los elementos. for(int i=0; i<n; i++) { ; }

12 For Usado para iterar un número finito de veces. Típicamente utilizado para iterar un conjunto determinado de elementos, donde se conoce el nº de los elementos. for(int i=0; i<enemigos.size(); i++) { Enemigo en = enemigos.get(i); en.Mover(); }

13

14 Usado para quebrar el flujo normal de una iteración y terminar ésta. Usado para terminar una iteración cuando se ha cumplido una condición.

15 for(int i=0; i<enemigos.size(); i++) { Enemigo en = enemigos.get(i); if(bala.isColision(en)) { bala.Morir(); en.Morir(); break; }

16 Usado para quebrar el flujo normal de una iteración y continuar con la próxima iteración. Usado para no realizar el flujo normal de la iteración cuando se cumpla una condición.

17 for(int i=0; i<personajes.size(); i++) { Personaje p = personajes.get(i); if(p.getColor() == color) continuar; if(myBala.isColision(personaje.get(i))) { bala.Morir(); p.Morir(); break; }

18

19 Lo primero es asignar qué estados puede tener cada casilla. enum Casilla { CROSS, CIRCLE, NONE };

20 Tendremos un tablero que lo podremos usar con los siguientes métodos: //Constructor del tablero, con un ancho y largo específico public Tablero(int width, int height); //Obtiene la marca asignada a una casilla x, y public Casilla getMarcaCasilla(int x, int y); //Cambia la marca asignada a una casilla public void setMarcaCasilla(Casilla marca, int x, int y)

21 Debemos crear una función que inicialice el tablero y que sirva para resetearlo cuando queramos iniciar un nuevo juego. void Resetear() { … }

22 Finalmente debemos determinar si un jugador ha ganado una partida bool isFinalizado(Casilla tipo) { // verificar en eje x // verificar en eje y // verificar en diagonales }

23 Ejercicio: Crear función que determine dado un cierto estado del tablero, si es que puede ganar un jugador o no. bool PuedeGanar(Casilla tipo);

24


Descargar ppt "11. Control de Flujo 2: Iteraciones.. Sirve para tomar decisiones de todo tipo. Sirve para evaluar condiciones, ej: extremos de la pantalla. En videojuegos."

Presentaciones similares


Anuncios Google