11. control de flujo 2: iteraciones.. sirve para tomar decisiones de todo tipo. sirve para evaluar...
TRANSCRIPT
![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](https://reader035.vdocuments.mx/reader035/viewer/2022070303/54ad5a5b497959640d8b4afc/html5/thumbnails/1.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022070303/54ad5a5b497959640d8b4afc/html5/thumbnails/2.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022070303/54ad5a5b497959640d8b4afc/html5/thumbnails/3.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022070303/54ad5a5b497959640d8b4afc/html5/thumbnails/4.jpg)
![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](https://reader035.vdocuments.mx/reader035/viewer/2022070303/54ad5a5b497959640d8b4afc/html5/thumbnails/5.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022070303/54ad5a5b497959640d8b4afc/html5/thumbnails/6.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022070303/54ad5a5b497959640d8b4afc/html5/thumbnails/7.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022070303/54ad5a5b497959640d8b4afc/html5/thumbnails/8.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022070303/54ad5a5b497959640d8b4afc/html5/thumbnails/9.jpg)
![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](https://reader035.vdocuments.mx/reader035/viewer/2022070303/54ad5a5b497959640d8b4afc/html5/thumbnails/10.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022070303/54ad5a5b497959640d8b4afc/html5/thumbnails/11.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022070303/54ad5a5b497959640d8b4afc/html5/thumbnails/12.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022070303/54ad5a5b497959640d8b4afc/html5/thumbnails/13.jpg)
![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](https://reader035.vdocuments.mx/reader035/viewer/2022070303/54ad5a5b497959640d8b4afc/html5/thumbnails/14.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022070303/54ad5a5b497959640d8b4afc/html5/thumbnails/15.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022070303/54ad5a5b497959640d8b4afc/html5/thumbnails/16.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022070303/54ad5a5b497959640d8b4afc/html5/thumbnails/17.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022070303/54ad5a5b497959640d8b4afc/html5/thumbnails/18.jpg)
![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](https://reader035.vdocuments.mx/reader035/viewer/2022070303/54ad5a5b497959640d8b4afc/html5/thumbnails/19.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022070303/54ad5a5b497959640d8b4afc/html5/thumbnails/20.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022070303/54ad5a5b497959640d8b4afc/html5/thumbnails/21.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022070303/54ad5a5b497959640d8b4afc/html5/thumbnails/22.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022070303/54ad5a5b497959640d8b4afc/html5/thumbnails/23.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022070303/54ad5a5b497959640d8b4afc/html5/thumbnails/24.jpg)