Ver Mensaje Individual
  #2 (permalink)  
Antiguo 03/12/2014, 21:20
Avatar de vangodp
vangodp
 
Fecha de Ingreso: octubre-2013
Mensajes: 934
Antigüedad: 10 años, 6 meses
Puntos: 38
Respuesta: Como hago el tablero de coordenadas en mi juego de c++

Compilalo y mire como funciona... trastealo para ver los cambios.
Al trabajar con esos tableros, les puedes embelleces con lineas y mas cosas segun la tabla asc2, y hasta colores si te propones.
Aprenda sobre gameloop ya que todo juego va sobre un gameloop
Suerte =)

Código C++:
Ver original
  1. #include <iostream>
  2. #include <cstdlib>
  3. using namespace std;
  4.  
  5. //funcion que imprime el mapa. Esta un poco turbinada pero es solo para que veas lo que puedes hacer aun que sea en asc2 XD
  6. void imprimir ( char (*tablero)[9] ) {
  7.     system("cls"); //borra tablero anterior
  8.    
  9.     //imprime informacion de coordenadas x y lineas de arriba del tablero
  10.     cout << "  \xBA x1 x2 x3 x4 x5 x6 x7 x8 \xBA" << endl;
  11.     cout << "\xCD\xCD\xCE";
  12.     for( int c = 0; c < 25; c++  ){
  13.         cout << "\xCD";
  14.     }
  15.     cout << "\xB9" << endl;
  16.    
  17.     //Esto imprime el tablero y lineas del lado derecho del tablero
  18.     for ( int i = 0; i < 8; i++ ) {
  19.         cout << "y" << i+1 << "\xBA ";               //imprime informacion coordenada y lineas del lado izquierdo
  20.         for ( int z = 0; z < 8; z++ ) {
  21.             cout << tablero[i][z] << "  ";
  22.         }
  23.         cout << "\xBA" <<endl << "  \xBA                         \xBA" << endl;//imprime lineas del lado derecho y izquierdo
  24.     }
  25.    
  26.     //imprime lineas de abajo del tablero y 2 espacios en el final
  27.     cout << "\xCD\xCD\xCA";
  28.     for( int c2 = 0; c2 < 25; c2++  ){
  29.         cout << "\xCD";
  30.     }
  31.     cout << "\xBC" << endl << endl;    
  32. }
  33.  
  34. int main () {
  35.     bool salir = false;  // condicion del GAMELOOP
  36.     int x;               // coordenada x
  37.     int y;               // coordenada y
  38.  
  39.     //tablero de 8 por 9. 9 por el '\0' de fin de linea "oculto". Le trato como 8 por 8. 8 Filas y 8 columnas
  40.     char tablero [8][9] = {
  41.         {"________"},
  42.         {"________"},
  43.         {"________"},
  44.         {"________"},
  45.         {"________"},
  46.         {"________"},
  47.         {"________"},
  48.         {"________"}
  49.        
  50.     };
  51.    
  52.     imprimir ( tablero );//cada vez que quiera imprimir mapa: LLamo la funcion imprimir y la paso la direccion de tablero.
  53.     //GAMELOOP
  54.     while( !salir ){
  55.         //***ENTRADA***   Aqui leemos datos
  56.         cout << "Elija una coordenada de X1 a x9" << endl;  
  57.         cin >> x;
  58.         cout << "Elija una coordenada de Y1 a y9" << endl;  
  59.         cin >> y;    
  60.    
  61.         //***LÓGICA***  Aqui hacemos calculos del juego segun lo que se recebio en la entrada
  62.         if (x == 0 || y == 0){
  63.             salir = true;
  64.         }
  65.         x--; // El rango de la matriz es de x0 a x7. Si elijo coordenada x8 quiero elejir x7 por que 7 es el limite de la matriz y no 8. x-- corrije este erro.
  66.         y--; //lo mismo XD
  67.         if ( x >= 0 && y  >= 0 || x <= 7 && y <= 7 )// si no elejimos un rango x,y correcto no se hace asignaciones.
  68.                 tablero[y][x] = '\x9D';
  69.        
  70.         //***SALIDA***  Aqui imprimimos los cambios
  71.             imprimir ( tablero );
  72.     }
  73.    
  74.     //imprimimos el adios... ¿Obvio no? XDD
  75.     system("cls");
  76.     cout << "Adios" << endl;
  77.     cin.ignore();
  78.     return 0;
  79. }

Si algun dia te das el salto a los 2d aqui tienes buenos tutoriales: http://www.losersjuegos.com.ar/referencia/articulos

Última edición por vangodp; 03/12/2014 a las 21:37