Descargar la presentación
La descarga está en progreso. Por favor, espere
Publicada porFabián San Miguel Modificado hace 10 años
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; }
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(); }
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(); }
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; }
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);
Presentaciones similares
© 2024 SlidePlayer.es Inc.
All rights reserved.