Descargar la presentación
La descarga está en progreso. Por favor, espere
Publicada porJorge Sánchez Gutiérrez Modificado hace 5 años
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 ¿?
Presentaciones similares
© 2024 SlidePlayer.es Inc.
All rights reserved.