11. Control de Flujo 2: Iteraciones.. Sirve para tomar decisiones de todo tipo. Sirve para evaluar...

24
11. Control de Flujo 2: Iteraciones.

Transcript of 11. Control de Flujo 2: Iteraciones.. Sirve para tomar decisiones de todo tipo. Sirve para evaluar...

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

11. Control de Flujo 2: Iteraciones.

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

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();

elseenemigo.patrullar();

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

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;

}

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

Iteraciones

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

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.

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

while( <condicion> ){

< sentencias >;}

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

while( continuar ){

captarTeclas();protagonista.Mover();moverEnemigos();aplicarFisica();

}

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

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(<iniciar contador>; <condicion>; <iterar contador>){

<sentencias>;}

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

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++){

<sentencias>;}

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

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();

}

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

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.

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

for(int i=0; i<enemigos.size(); i++)

{

Enemigo en = enemigos.get(i);

if(bala.isColision(en))

{

bala.Morir();

en.Morir();

break;

}

}

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

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.

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

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;

}}

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

Lo primero es asignar qué estados puede tener cada casilla.

enum Casilla{

CROSS,CIRCLE,NONE

};

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

Tendremos un tablero que lo podremos usar con los siguientes métodos:

//Constructor del tablero, con un ancho y largo específicopublic Tablero(int width, int height);

//Obtiene la marca asignada a una casilla x, ypublic Casilla getMarcaCasilla(int x, int y);

//Cambia la marca asignada a una casillapublic void setMarcaCasilla(Casilla marca, int x, int y)

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

Debemos crear una función que inicialice el tablero y que sirva para resetearlo cuando queramos iniciar un nuevo juego.

void Resetear(){

…}

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

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

}

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

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);

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