Autor
|
Tema: tableros (Leído 18,212 veces)
|
leosansan
Desconectado
Mensajes: 1.314
|
Interesante la simplificación de leosansan, ventajas del trabajo en equipo ................................................. Ahora otra vez leo, me parece interesante tu simplificación del código, pero explícamente la aritmética usada de 12, 18, 36, etc ..... No entiendo esas fórmulas, y creo que también hubiera sido bueno comentariar esa explicación en el programa, los demás no somos adivinos jejejeje (broma)
¿Es una coña,no?.
Por si acaso simple cuestión de mates ,,,,sólo te contaré que se corresponden con posiciones centrales de los espacios en blanco, ni a la derecha ni a la izquierda de las paredes laterales, centrados ..... haz números ..... siempre que a mi no se me haya ido el baifo !!!. No olvides que se trataba de no hacerle la tarea al que inicio el tema, así que algo de oscurantismo es inevitable.¡¡¡¡ Saluditos! ..... !!!! .
|
|
|
En línea
|
|
|
|
Yoel Alejandro
|
Pero indistintamente, lo cortés no quita lo valiente, siempre es bueno comentariar al menos a qué refieren las fórmulas aunque no se de una explicación detallada. P.ej.: posiciones centrales de las casillas.
Ya sabes, documentar el código para que sea más fácil de mantener por otra persona o por tí mismo en el futuro. Una vez leí un chiste de programadores que el código más odiado del mundo puede llegar a ser ........ tu propio código (de 6 meses atrás). Por que ya no te acuerdas de qué hacía ni como, jajajaja
espero no lo tomes a mal, saludos!!!
|
|
|
En línea
|
Saludos, Yoel. P.D..- Para mayores dudas, puedes enviarme un mensaje personal (M.P.)
|
|
|
leosansan
Desconectado
Mensajes: 1.314
|
|
|
|
En línea
|
|
|
|
amchacon
Desconectado
Mensajes: 1.211
|
"Yo, en particular, estoy muy contento con tus aportes ya que la mayoría de los expertos lo son más de C++ y a mí me interesa más el C puro y duro"
Jejeje, pues sí, es un dicho que entre más bajo el nivel más duro es el programador, jeje. De hecho me impongo como costumbre personal tratar de hacer los programas en C puro, salvo que sea estrictamente necesario usar C++ (por ejemplo si se requieren clases). Nunca es estrictamente necesario usar C++, incluso C se puede orientar a objetos si se quiere. Jejeje, pues sí, es un dicho que entre más bajo el nivel más duro es el programador, jeje. Pero no mejor  Otra cosa distinta es "mi" código, el que yo me guardo, donde va una descripción del problema que se plantea y diversa notitas aclaratorias, pero que no pongo cuando lo cuelgo en el foro. ¡¡¡Que se lo curre un poquito!!!,..... Me intriga lo que guardas en esa carpeta... Deben ser GB y GB de códigos Oo
|
|
|
En línea
|
|
|
|
JonaLamper
Desconectado
Mensajes: 394
|
Creo que lo que el usuario decía, era que dentro de cada celda van a ir 3 fichas. Algo así: ┌─────┬─────┐ │ ███ │ ███ │ ├─────┼─────┤ │ ███ │ ███ │ └─────┴─────┘ Y a su vez, cuando hayas dibujado ese tablero 8x8 con sus respectivas fichas, debes relacionar esas fichas con un array bidimensional de forma que cada 3 fichas sea una posición del array. Lo cual me imagino será un array del tipo: typedef tipo_array nombre_array [8][8];Pd: ups... salió mal el dibujo  bueno, creo que se entiende 
|
|
« Última modificación: 12 Marzo 2014, 12:15 pm por JonaLamper »
|
En línea
|
Utilizar palabras para hablar de palabras es como utilizar un lápiz para hacer un dibujo de ese lápiz sobre el mismo lápiz.
|
|
|
leosansan
Desconectado
Mensajes: 1.314
|
Creo que lo que el usuario decía, era que dentro de cada celda van a ir 3 fichas. Algo así:
┌─────┬─────┐ │ ███ │ ███ │ ├─────┼─────┤ │ ███ │ ███ │ └─────┴─────┘
¿Algo así?:┌───┬───┬───┬───┬───┬───┬───┬───┐ │███│███│███│███│███│███│███│███│ ├───┼───┼───┼───┼───┼───┼───┼───┤ │███│███│███│███│███│███│███│███│ ├───┼───┼───┼───┼───┼───┼───┼───┤ │███│███│███│███│███│███│███│███│ ├───┼───┼───┼───┼───┼───┼───┼───┤ │███│███│███│███│███│███│███│███│ ├───┼───┼───┼───┼───┼───┼───┼───┤ │███│███│███│███│███│███│███│███│ ├───┼───┼───┼───┼───┼───┼───┼───┤ │███│███│███│███│███│███│███│███│ ├───┼───┼───┼───┼───┼───┼───┼───┤ │███│███│███│███│███│███│███│███│ ├───┼───┼───┼───┼───┼───┼───┼───┤ │███│███│███│███│███│███│███│███│ └───┴───┴───┴───┴───┴───┴───┴───┘ ................................. Me intriga lo que guardas en esa carpeta... Deben ser GB y GB de códigos Oo ...............................
Pues estas en lo cierto, son varios GB de códigos, nunca sabes lo que puedes reaprender de ellos. Es como releer un libro, siempre encuentras cosas a mejorar y/o recordar.¡¡¡¡ Saluditos! ..... !!!!
|
|
« Última modificación: 12 Marzo 2014, 22:47 pm por leosansan »
|
En línea
|
|
|
|
JonaLamper
Desconectado
Mensajes: 394
|
Eso es leo. Recuerdo ese ejercicio. La cosa era como referenciar cada bloque de 3 fichas a una posición de un array bidimensional.
Una idea podría ser que cada bloque de 3 fichas sea un string que almacene el código ascii que corresponda y después guardar dicho string en un array.
¿Sería una buena idea?
|
|
|
En línea
|
Utilizar palabras para hablar de palabras es como utilizar un lápiz para hacer un dibujo de ese lápiz sobre el mismo lápiz.
|
|
|
leosansan
Desconectado
Mensajes: 1.314
|
Eso es leo. Recuerdo ese ejercicio. La cosa era como referenciar cada bloque de 3 fichas a una posición de un array bidimensional.
Una idea podría ser que cada bloque de 3 fichas sea un string que almacene el código ascii que corresponda y después guardar dicho string en un array.
¿Sería una buena idea?
No me queda clara la idea. Tendrías que poner el enunciado completo.
Pero por lo que capto, eso de referenciar me suena a algo como esto: ┌───┬───┬───┬───┬───┬───┬───┬───┐ │█1█│█1█│█1█│█1█│█1█│█1█│█1█│█1█│ ├───┼───┼───┼───┼───┼───┼───┼───┤ │█1█│█1█│█1█│█1█│█1█│█1█│█1█│█1█│ ├───┼───┼───┼───┼───┼───┼───┼───┤ │█1█│█1█│█1█│█1█│█1█│█1█│█1█│█1█│ ├───┼───┼───┼───┼───┼───┼───┼───┤ │█1█│█1█│█1█│█1█│█1█│█1█│█1█│█1█│ ├───┼───┼───┼───┼───┼───┼───┼───┤ │█1█│█1█│█1█│█1█│█1█│█1█│█1█│█1█│ ├───┼───┼───┼───┼───┼───┼───┼───┤ │█1█│█1█│█1█│█1█│█1█│█1█│█1█│█1█│ ├───┼───┼───┼───┼───┼───┼───┼───┤ │█1█│█1█│█1█│█1█│█1█│█1█│█1█│█1█│ ├───┼───┼───┼───┼───┼───┼───┼───┤ │█1█│█1█│█1█│█1█│█1█│█1█│█1█│█1█│ └───┴───┴───┴───┴───┴───┴───┴───┘
Process returned 0 (0x0) executi En quote no queda bien, se ve mejor en una captura de pantalla: Y eso se logra sencillamente con una condición en la linea lateral y las intermedias: if ((j+2)%4==0) printf("1"); else printf("%c",a1[j]/* o a3[j] en donde toca*/);
¡¡¡¡ Saluditos! ..... !!!!
|
|
« Última modificación: 13 Marzo 2014, 16:55 pm por leosansan »
|
En línea
|
|
|
|
JonaLamper
Desconectado
Mensajes: 394
|
No lo tengo, pero conseguí una imagen del tablero completo:  En primer lugar pido perdón porque el siguiente código, es el código con la menor eficiencia que he visto en mi vida (ignorad los typedef que son para usarlos más tarde). #include <iostream> #include <fstream> #include <windows.h> using namespace std; const int FILAS = 8; const int COLUMNAS = 8; const char ascii218 = 218; const char ascii196 = 196; const char ascii194 = 194; const char ascii179 = 179; const char ascii195 = 195; const char ascii197 = 197; const char ascii192 = 192; const char ascii193 = 193; const char ascii217 = 217; const char ascii191 = 191; const char ascii180 = 180; const char ascii219 = 219; typedef enum {magenta, amarillo, azul, verde, neutro} tFicha; typedef tFicha tTablero[FILAS][COLUMNAS]; int main() { //Linea superior for (int i = 0; i <= 33; i++) { if (i == 0) { cout << ascii218; } else if (i == 33) { cout << ascii191 << endl; } else if (i%4 == 0) { cout << ascii194; } else { cout << ascii196; } } //Lineas intermedias for (int j = 0; j < 7; j++) { for (int i = 0; i < 33; i++) { if (i%4 == 0) { cout << ascii179; } else { cout << ascii219; } } //hacemos un saltito de linea cout << endl; for (int i = 0; i < 33; i++) { if (i == 0) { cout << ascii195; } else if (i == 33) { cout << ascii180 << endl; } else if (i%4 == 0) { cout << ascii197; } else { cout << ascii196; } } //hacemos otro saltito de linea cout << endl; } //Linea inferior for (int i = 0; i < 33; i++) { if (i%4 == 0) { cout << ascii179; } else { cout << ascii219; } } //hacemos un saltito de linea cout << endl; for (int i = 0; i < 33; i++) { if (i == 0) { cout << ascii192; } else if (i == 33) { cout << ascii217 << endl; } else if (i%4 == 0) { cout << ascii193; } else { cout << ascii196; } } return 0; }
Ahora bien, tengo dos problemas... el primero es que no sé cómo solucionar la parte de la derecha de la tabla (las "sobras" que salen remarcadas en rojo). Y el segundo, es hacer algo más eficiente ese código (realmente lo importante es que funcione, pero si además es eficiente sería más mejor  ).  Un saludo y si a alguien se le ocurre cualquier cosa por pequeña que sea, no dude en ponerla ^^
|
|
« Última modificación: 14 Marzo 2014, 00:46 am por JonaLamper »
|
En línea
|
Utilizar palabras para hablar de palabras es como utilizar un lápiz para hacer un dibujo de ese lápiz sobre el mismo lápiz.
|
|
|
amchacon
Desconectado
Mensajes: 1.211
|
La eficiencia es buena, como mucho se puede mejorar creandote un vector fila y ir imprimiendo filas del tirón.
Aparte de eso. El código podría ser más claro. Y sobre todo más genérico (para cualquier tamaño del tablero).
Ah, y los pegotes se puede resolver pintandolos al reves (primero el pegote y despues el cuadrado).
|
|
« Última modificación: 14 Marzo 2014, 01:30 am por amchacon »
|
En línea
|
|
|
|
|
|