La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Programación Gráfica 5. Introducción a C++..

Presentaciones similares


Presentación del tema: "Programación Gráfica 5. Introducción a C++.."— Transcripción de la presentación:

1 Programación Gráfica 5. Introducción a C++.

2 Palabras reservadas asm auto bool break case catch char class const const_cast continue default delete do double dynamic_cast else enum explicit extern false float for friend goto if inline int long mutable namespace new operator private protected public register reinterpret_cast return short signed sizeof static static_cast struct switch template this throw true try typedef typeid typename union unsigned using virtual void volatile while

3 Control de Flujo

4 If - else Sirve para tomar desiciones.
En videojuegos típicamente usado para la IA de enemigos. if( enemigo->distancia( protagonista ) < dist_min) enemigo->atacar(); else enemigo->patrullar();

5 Switch switch(tecla) { case W: protagonista->MoverUp(); break; case A: protagonista->MoverLeft(); case D: protagonista->MoverRight(); case S: protagonista->MoverDown(); case ESPACE: protagonista->Disparar() case ESC: continuar = false; default: } 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)

6 While “Mientras”. 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. while( continuar ) { captarTeclas(); protagonista->Mover(); moverEnemigos(); aplicarFisica(); }

7 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.get(i)->Mover(); }

8 For

9 Sentencia Break 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. for(int i=0; i<enemigos.size(); i++) { if(bala->isColision(enemigo->get(i))) bala->Morir(); enemigo->get(i)->Morir(); break; }

10 Sentencia Continue 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. for(int i=0; i<personajes.size(); i++) { if(personaje.get(0)->getColor() == color) continuar; if(bala->isColision(enemigo->get(i))) bala->Morir(); enemigo->get(i)->Morir(); break; }

11 Arrays

12 String Cadenas de caracteres.
char <identificador> [<longitud máxima>]; char Saludo[5]; Saludo = "HOLA" ; Saludo[0] = 'H'; Saludo[1] = 'O'; Saludo[2] = 'L'; Saludo[3] = 'A'; Saludo[4] = '\000'; char Saludo[5] = "HOLA“;

13 Arrays Arreglos, representa un conjunto de elementos de un mismo tipo, donde el tamaño ya es conocido. Usado típicamente para: Tableros Videojuegos 2D donde se conoce cada una de las posiciones. Conjunto de elementos, cuando se sabe de antemano el numero de los elementos.

14 Arrays <tipo> <identificador>[<núm_elemen>][[<núm_elemen>]...]; int Vector[3]; Vector[0] = x; Vector[1] = y; Vector[2] = z; Vector[2] += velocidadZ; Vector[2] -= velocidadZ;

15 Arrays <tipo> <identificador>[<núm_elemen>][[<núm_elemen>]...]; int Vector[3]; Vector[0] = x; Vector[1] = y; Vector[2] = z; Vector[2] += velocidadZ; Vector[2] -= velocidadZ;

16 Arrays int Tabla[10][10]; char DimensionN[4][15][6][8][11]; ...
DimensionN[3][11][0][4][6] = DimensionN[0][12][5][3][1]; Tabla[0][0] += Tabla[9][9]; int tablero[3][3]; tablero[0][0] = 1; tablero[1][0] = 2; float R[10] = {2, 32, 4.6, 2, 1, 0.5, 3, 8, 0, 12}; float S[] = {2, 32, 4.6, 2, 1, 0.5, 3, 8, 0, 12};

17 Arrays

18 Arrays

19 Confección de un Tablero
Videojuego OXO

20 Confección de un Tablero: OXO
Lo primero es asignar qué estados puede tener cada casilla. enum TipoCasilla { CRUZ, CIRCULO, NONE }; int tamano; // tamaño del tablero. Lo segundo es crear nuestro tablero. TipoCasilla tablero[3][3];

21 Confección de un Tablero: OXO
Debemos crear una función que inicialice el tablero y que sirva para resetearlo cuando queramos iniciar un nuevo juego. void Resetear() { for(int i=0; i<tamano; i++) for(int j=0; j<tamano; j++) tablero[i][j] = NONE; }

22 Confección de un Tablero: OXO
Debemos crear una función que asigne un estado a una casilla, para los distintos jugadores. void Marcar(TipoCasilla tipo, int x, int y) { tablero[x][y] = tipo; }

23 Confección de un Tablero: OXO
Debemos crear una función que nos indique en qué estado está cada una de las casillas. TipoCasilla getCasilla(int x, int y) { return tablero[x][y]; }

24 Confección de un Tablero: OXO
Finalmente debemos determinar si un jugador ha ganado una partida bool isFinalizado(TipoCasilla tipo) { //verificamos en el eje x for(int i=0; i<tamano; i++) for(int j=0; j<tamano; j++) if(tablero[i][j] != tipo) break; else if(j == tamano -1) return true; }

25 Confección de un Tablero: OXO
bool isFinalizado(TipoCasilla tipo) { //verificamos en el eje y for(int j=0; j<tamano; j++) for(int i=0; i<tamano; i++) if(tablero[i][j] != tipo) break; else if(j == tamano -1) return true; }

26 Confección de un Tablero: OXO
bool isFinalizado(TipoCasilla tipo) { //verificamos las diagonales for(int i=0; i<tamano; i++) if(tablero[i][i] != tipo) break; else if(j == tamano -1) return true; } return false; //Sino hubo un resultado exitoso

27 Confección de un Tablero: OXO
Ejercicio: Crear función que determine dado un cierto estado del tablero, si es que puede ganar un jugador o no. bool PuedeGanar(TipoCasilla tipo);

28 Preguntas ¿?


Descargar ppt "Programación Gráfica 5. Introducción a C++.."

Presentaciones similares


Anuncios Google