Autor
|
Tema: tableros (Leído 18,213 veces)
|
leosansan
Desconectado
Mensajes: 1.314
|
Conviértelo a base64 y así no habrá problemas con el código cifrado... total, el que quiera descifrarlo únicamente tiene que añadir la decodificación de base 64 antes de ponerse a decodificar en serio.
La base que elijo la tomo para cada mensaje de forma aleatoria, pero pero después de aplicarle otro módulo de cifrado que son varios según el nivel de exigencia de cifrado que se requiera.
Entre los módulos está, por ejemplo, un desplazamiento con un array del mismo tamaño que el mensaje, lo que le da mucha fuerza, obtenido en cada ocasión de forma aleatoria y combinado con otro desplazamiento con otro array aleatorio, también distinto para cada mensaje, en base a números primos tomados a su vez de un intervalo diferente y aleatorio en cada ocasión. Y por supuesto utilizo todos los caracteres ASCII disponibles, ¡y más!, no me limito al abecedario y los números.
Y hay otros 12 módulos adicionales, aunque cada cierto tiempo añado alguno nuevo, cuestión de no aburrirse.  ¡¡¡¡ Saluditos! ..... !!!!
|
|
« Última modificación: 19 Marzo 2014, 12:30 pm por leosansan »
|
En línea
|
|
|
|
eferion
Desconectado
Mensajes: 1.248
|
No lo comentaba como algo a añadir en el proceso de cifrado.
Yo me refería para que el texto cifrado pudieses pegarlo en el foro sin distorsión.
Básicamente coger el código ya cifrado y pasarlo a base64 para que el código resultante no tenga caracteres extraños que el foro pueda modificar.
|
|
|
En línea
|
|
|
|
leosansan
Desconectado
Mensajes: 1.314
|
No lo comentaba como algo a añadir en el proceso de cifrado.
Yo me refería para que el texto cifrado pudieses pegarlo en el foro sin distorsión.
Básicamente coger el código ya cifrado y pasarlo a base64 para que el código resultante no tenga caracteres extraños que el foro pueda modificar.
.....Tá bien, ahí va.... XyYjODczNTtMOVNNJiM4NTk1O0UmIzk2NTA7JiM5NzkyOyQtLEAmIzk2NTg7JiM5NTc0O7ImIzg1 OTQ7KSKvMDImIzk2NTA7ICAgICAgICBoJiM5NjQ0OyEmIzk1MTY7J6evJ1ynuFBeXCYjOTc4Nzsm JiM5NTc3Oy+kYdAmIzgyNTI74zApsiYjODI1MjtSsNJKWiYjODU5NDsiJiM4NTk1OyYjOTc5NDsw YahoOCsmIzg1OTU7NtnP/iYjOTc5NDsNCmEmIzk3OTQ7JiM5NTMyO0c4YSYjODU5Nju2JyYjOTUz MjvL0jNCtiYjOTY2ODsmIzg1OTI7JiM5ODM1OyYjOTYwNDtvJiM5NDc0OyYjOTYwODtUMU0mIzk2 NTg7JiM4NTk0O0MnL0jQuyYjOTY1MDtWUzUmIzk2MTk7JiMzMDU7ICYjODU5NDtMuSYjMzA1OyYj OTU1Njs/piYjOTQ4NDu3JiM5NjMyOyYjOTYxODtpJiM4MjE1O/VfJiM4NTk1OyYjODU5NjsmIzk2 Njg7KSCyJiM4NTk3OyYjOTc5MjtQJiM4NTk1OzlALCYjODU5NztoJiM5NzkyO7LIW7PQJiM5ODI0 OyYjOTUyNDulQw0KzyYjOTY1ODslJiM4MjE1O9964yBfJiM5NjA4O2bNJiM5ODI5O2nPJiM5NDg4 OyYjOTUzMjv1aCIhJiM5NjYwOyYjOTY0NDs9MbcmIzMwNTsmIzk4Mjk7Rbm7JiM4MjUyO8DSJiM5 ODI0OyYjOTQ5NjtQZ1UmIzk4MzU7YSYjOTc4NzsmIzk2NDQ7LGPjpyYjOTU1MjtMpvWvbt6ibSA1 Okkk2SYjODI1MjsmIzk2NTg7TiJSJiM5NTgwOyYjODIxNTsgJiM5NTgwO/4uaiYjODczNTu0JiM4 NTk1OyYjOTY1MDvAJA0KR6c2LEnb1SYjODU5Nzsz8CYjOTQ5MjtNXiYjODU5MztqZsjbQg0KJiM5 NjU4Oz62JiM4NTk1Oz0mIzk2Njg7QDEmIzk0OTY7JyYjOTQ3NDsmIzk0ODg7LbUmIzk2MDg7Tk5S PrYmIzk3ODY7JiM5ODM1OyQmIzk3ODg72yPBsSQmIzk0ODQ7uGNOODtGTG31p1ZF3yYjOTYxNzsm Izk3OTI7SiYjODU5MztLZnnGvdko ¡¡¡¡ Saluditos! ..... !!!! Tal como prometí cuelgo la respuesta a la petición de cómo formar una matriz de 8x8 con los elementos centrales, es decir los cuadraditos. La salida de dicho código es la indicada justamente en el mensaje anterior:
* Lo codificado:char d[8][8][4]; for (l=0;l<8;l++){ for (j=0;j<8;j++){ for (i=1;i<tam;i+=2){ if (k<3){ d[l][j][k]=219; k++; } else{ d[l][j][k]='\0'; k=0; } } } } for (i=0;i<8;i++){ printf("\t\t"); for (j=0;j<8;j++){ printf("%s ",d[i][j]); } puts ("\n"); } putchar ('\n');
Y el código entero:/** a0=linea superior a1=lineas intermedias a2=linea inferior a3=lineas laterales 218=┌ 196=─ 194=┬ 191=┐ 179=│ 195=├ 197=┼ 180=┤ 192=└ 193=┴ 217=┘ 219=█ **/ #include <stdio.h> #include <stdlib.h> #include <string.h> #include <windows.h> #include <time.h> #define CUADRADITOS3 "\xdb\xdb\xdb" #define CUADRADITOS 179,219,179,219,179,219 #define CUADRADITOS1 "\xdb\xdb\xdb" #define CUADRADITOS2 "\xfe " #define ULCORNER 218,196,196,196,196,196 /* upper-left corner, esquina superior izquierda y tres guiones*/ #define RTEE 195,196,196,196,196,196 /*right-tee, letra 'T' apuntando hacia la derecha y tres guiones*/ #define CROSS 197,196,196,196,196,196 /* crossover, cruz grande (de mayor tamaño que el signo '+' y tres guiones) */ #define LTEE 180 /* left-tee, letra 'T' apuntando hacia la izquierda */ #define BTEE 194,196,196,196,196,196 /* bottom-tee, letra 'T' apuntando hacia abajo y tres guiones*/ #define URCORNER 191 /* upper-right corner, esquina superior derecha */ #define LLCORNER 192,196,196,196,196,196 /* lower-left corner, esquina inferior izquierda y tres guiones */ #define TTEE 193,196,196,196,196,196 /* top-tee, letra 'T' apuntando hacia arriba y tres guiones */ #define LRCORNER 217 /* lower-right corner, esquina inferior izquierda */ #define VLINE CUADRADITOS /*vertical line, linea vertical y tres espacios*/ #define VLINE_ 179 /* vertical line, linea vertical */ #define TOKEN 219 /* ficha o pieza */ int main(){ int i,j,k=0,l,tam,cont=0; char a[]="\xfe "; char b[8][8][6]; /******* AQUI MATRIZ CUADRADITOS=254=xfe 8X8 *******/ /** SOLO CUADRADITOS SIN LINEAS INTERMEDIAS **/ /*for (i=0;i<8;i++) for (j=0;j<8;j++) strcpy( b[i][j], a ); for (i=0;i<8;i++){ for (j=0;j<8;j++){ printf("%s ",b[i][j]); } putchar ('\n'); }*/ int a1[]={RTEE,CROSS,CROSS,CROSS,CROSS,CROSS,CROSS,CROSS,LTEE}, a0[]={ULCORNER,BTEE,BTEE,BTEE,BTEE,BTEE,BTEE,BTEE,URCORNER}, a2[]={LLCORNER,TTEE,TTEE,TTEE,TTEE,TTEE,TTEE,TTEE,LRCORNER}, a3[]={CUADRADITOS,CUADRADITOS,CUADRADITOS,CUADRADITOS,CUADRADITOS,CUADRADITOS,CUADRADITOS,CUADRADITOS,CUADRADITOS}; tam=sizeof (a2)/sizeof (a2[0]); /****** IMPRIMIMOS LA MATRIZ TOTAL ************/ /** linea superior **/ printf("\t"); for (j=0;j<tam;j++) printf("%c",a0[j]); putchar ('\n'); /** linea lateral **/ printf("\t"); for (j=0;j<tam;j++) printf("%c",a3[j]); /** salto de linea... **/ /** y dibujo intermedias y laterales **/ for (i=0;i<7;i++){ putchar ('\n'); printf("\t"); for (j=0;j<tam;j++) printf("%c",a1[j]); putchar ('\n'); printf("\t"); for (j=0;j<tam;j++) printf("%c",a3[j]); } /** linea inferior **/ putchar ('\n'); printf("\t"); for (j=0;j<tam;j++) printf("%c",a2[j]); putchar ('\n'); /******* AQUI LA NEW MATRIZ SOLA DE CUADRADITOS 8X8 *******/ /*********** A PARTIR DE LA MATRIZ INICIAL ***************/ puts("\t\tA PARTIR DE LA MATRIZ DE 8X8\n"); char d[8][8][4]; for (l=0;l<8;l++){ for (j=0;j<8;j++){ for (i=1;i<tam;i+=2){ if (k<3){ d[l][j][k]=219; k++; } else{ d[l][j][k]='\0'; k=0; } } } } for (i=0;i<8;i++){ printf("\t\t"); for (j=0;j<8;j++){ printf("%s ",d[i][j]); } puts ("\n"); } putchar ('\n'); /*************** OBTENCION DIRECTA ***************/ /******* OTRA 8X8 *******/ puts("\t\tDE FORMA DIRECTA\n"); for (i=0;i<8;i++){ printf("\t\t"); for (j=0;j<8;j++){ printf("%s ",CUADRADITOS3); } puts ("\n"); } putchar ('\n'); /******* AQUI UNA MATRIZ SOLA DE CUADRADITOS=254=xfe 8X8 *******/ for (i=0;i<8;i++){ printf("\t\t\t"); for (j=0;j<8;j++){ printf("%s ",CUADRADITOS2); } putchar ('\n'); } putchar ('\n'); return 0; }
¡¡¡¡ Saluditos! ..... !!!!
|
|
« Última modificación: 22 Marzo 2014, 09:10 am por leosansan »
|
En línea
|
|
|
|
Eternal Idol
Kernel coder
Moderador
 
Desconectado
Mensajes: 5.969
Israel nunca torturó niños, ni lo volverá a hacer.
|
leosansan: por favor no escribas mas mensajes consecutivos en un mismo hilo.
|
|
|
En línea
|
La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste. Juan Domingo Perón
|
|
|
JonaLamper
Desconectado
Mensajes: 394
|
En primer lugar, perdonad por estar tanto tiempo sin contestar. He estado avanzando durante estos días y tal y como lo llevo, creo que no es necesario poner el enunciado de lo que hace este juego. Os dejo el código: #include <iostream> #include <string> #include <Windows.h> #include <iomanip> #include <cstdlib> #include <ctime> using namespace std; // Constantes const int COLUMNAS = 8; const int FILAS = 8; const int maxIntentos = 15; const char tresBloques[4] = {char(219), char(219), char(219), char(0)}; // Vector tresBloques const char tresLineas[4] = {char(196), char(196), char(196), char(0)}; // Vector tresLineas // Tipos enumerados typedef enum {neutro, magenta, amarillo, azul, verde, none} tFicha; typedef enum {arriba, abajo, derecha, izquierda} tDireccion; typedef enum { black, // 0 dark_blue, // 1 dark_green, // 2 dark_cyan, // 3 dark_red, // 4 dark_magenta, // 5 dark_yellow, // 6 light_gray, // 7 dark_gray, // 8 light_blue, // 9 light_green, // 10 light_cyan, // 11 light_red, // 12 light_magenta, // 13 light_yellow, // 14 white // 15 } tColor; // Arrays typedef tFicha tTablero[FILAS][COLUMNAS]; typedef bool tMatrizBooleana[FILAS][COLUMNAS]; // Estructuras typedef struct { tTablero tablero; int intentos; int puntos; } tJuego; typedef struct { int fila; int columna; tDireccion direccion; } tMovimiento; // Prototipos void colorCrush(tJuego &juego); void generarTablero(tJuego &juego); void procesarTablero(tJuego &juego); void mostrarTablero(tJuego &juego); void lineaArriba(); void lineaMedio(); void lineaAbajo(); void comprobarGrupo(); void movimientoUsuario(); void rellenarHuecos(); void setColor(tColor color); void columnas(tTablero tablero, int i); void pintarEspacios(tFicha cuadrado); void iniciarArrayBool(tMatrizBooleana arrayBool); void comprobarFilas(tJuego &juego, tMatrizBooleana arrayBool); void comprobarColumnas(tJuego &juego, tMatrizBooleana arrayBool); // Next void gestionCaida(tJuego &juego); int main() { tJuego juego; srand(time(NULL)); colorCrush(juego); return 0; } void generarTablero(tTablero tablero) { for (int i = 0; i < FILAS; i++) { for (int j = 0; j < COLUMNAS; j++) { tablero[i][j] = tFicha(1 + rand() % 4); } } } void setColor(tColor color) { HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE); SetConsoleTextAttribute(handle, color); } void mostrarTablero(tJuego &juego) { setColor(tColor(15)); cout << setw(15) << "Attempts: " << juego.intentos << setw(15) << "Points: " << juego.puntos << endl; lineaArriba(); for (int i = FILAS - 1; i > (FILAS - (FILAS)); i--) { cout << setw(2); cout << i + 1; cout << setw(2); columnas(juego.tablero, i); lineaMedio(); } int i = 0; cout << setw(2); cout << FILAS - (FILAS - 1); cout << setw(2); columnas(juego.tablero, i); lineaAbajo(); cout << setw(6); for (int j = 1; j < COLUMNAS; j++) { cout << j << setw(4); } cout << COLUMNAS << endl; } void columnas(tTablero tablero, int i) { for (int j = 0; j < COLUMNAS; j++) { cout << char(179); pintarEspacios(tablero[i][j]); setColor(tColor(15)); } cout << char(179) << endl; } void lineaArriba() { cout << setw(4) << char(218) << tresLineas; for (int i = 0; i < COLUMNAS - 2; i++) { cout << char(194) << tresLineas; } cout << char(194) << tresLineas << char(191) << endl; } void lineaMedio() { cout << setw(4) << char(195) << tresLineas; for (int i = 0; i < COLUMNAS - 2; i++) { cout << char(197) << tresLineas; } cout << char(197) << tresLineas << char(180) << endl; } void lineaAbajo() { cout << setw(4) << char(192) << tresLineas; for (int i = 0; i < COLUMNAS - 2; i++) { cout << char(193) << tresLineas; } cout << char(193) << tresLineas << char(217) << endl; } void pintarEspacios(tFicha cuadrado) { if (cuadrado == magenta) { setColor(tColor(13)); cout << tresBloques; } else if (cuadrado == amarillo) { setColor(tColor(14)); cout << tresBloques; } else if (cuadrado == azul) { setColor(tColor(3)); cout << tresBloques; } else if (cuadrado == verde) { setColor(tColor(2)); cout << tresBloques; } else if (cuadrado == neutro) { setColor(tColor(0)); cout << tresBloques; } } void colorCrush(tJuego &juego) { juego.intentos = maxIntentos; juego.puntos = 0; generarTablero(juego.tablero); mostrarTablero(juego); procesarTablero(juego); int j = 0; while (j < 10) { cout << endl << endl; mostrarTablero(juego); procesarTablero(juego); cout << endl; system("pause"); j++; } } void procesarTablero (tJuego &juego) { tFicha fichaAnterior = neutro; tMatrizBooleana arrayBool; iniciarArrayBool(arrayBool); comprobarFilas(juego, arrayBool); comprobarColumnas(juego, arrayBool); } void iniciarArrayBool(tMatrizBooleana arrayBool) { for (int i = 0; i < FILAS; i++) { for (int j = 0; j < COLUMNAS; j++) { arrayBool[i][j] = false; } } } void comprobarFilas(tJuego &juego, tMatrizBooleana arrayBool) { int contador = 0; int j = 0; tFicha fichaAnterior = neutro; for (int i = 0; i < FILAS; i++) { while (j < COLUMNAS) { while (juego.tablero[i][j] == fichaAnterior && j < COLUMNAS) { contador++; fichaAnterior = juego.tablero[i][j]; j++; } if (contador == 2) { juego.puntos = juego.puntos + 3; for (int h = contador + 1; h > 0; h--) { arrayBool[i][j-h] = true; juego.tablero[i][j-h] = neutro; } } else if (contador == 3) { juego.puntos = juego.puntos + 8; for (int h = contador + 1; h > 0; h--) { arrayBool[i][j-h] = true; juego.tablero[i][j-h] = neutro; } } else if (contador >= 4) { juego.puntos = juego.puntos + 15; for (int h = contador + 1; h > 0; h--) { arrayBool[i][j-h] = true; juego.tablero[i][j-h] = neutro; } } contador = 0; fichaAnterior = juego.tablero[i][j]; j++; } j = 0; fichaAnterior = none; } } void comprobarColumnas(tJuego &juego, tMatrizBooleana arrayBool) { int contador = 0; int j = 0; tFicha fichaAnterior = neutro; for (int i = 0; i < COLUMNAS; i++) { while (j < FILAS) { while (juego.tablero[j][i] == fichaAnterior && j < COLUMNAS) { contador++; fichaAnterior = juego.tablero[j][i]; j++; } if (contador == 2) { juego.puntos = juego.puntos + 3; for (int h = contador + 1; h > 0; h--) { arrayBool[j-h][i] = true; juego.tablero[j-h][i] = neutro; } } else if (contador == 3) { juego.puntos = juego.puntos + 8; for (int h = contador + 1; h > 0; h--) { arrayBool[j-h][i] = true; juego.tablero[j-h][i] = neutro; } } else if (contador >= 4) { juego.puntos = juego.puntos + 15; for (int h = contador + 1; h > 0; h--) { arrayBool[j-h][i] = true; juego.tablero[j-h][i] = neutro; } } contador = 0; fichaAnterior = juego.tablero[j][i]; j++; } fichaAnterior = neutro; j = 0; } } // void gestionCaida(tJuego &juego){ // bool hanCaido= true; // while (hanCaido) { // Volvemos a hacer caer todo el tablero // caidaFichas(juego.tablero, hanCaido); // if (hanCaido) { // Muestra el tablero // mostrarTablero(juego); // } // } // }
Tan solo me faltaría que las casillas de colores fueran desplazándose hacia abajo (para rellenar los huecos) y que, una vez que no hay más combinaciones de 3, 4 o 5 casillas adyacentes del mismo color, se llegara a un estado "estable" del tablero en el que se le pide al usuario qué ficha quiere mover y en qué dirección (arriba, abajo, izquierda o derecha) para que pueda seguir sumando el mayor número de puntos. El juego termina cuando no hay posibles combinaciones para el usuario. Como ya he dicho, estoy en ello. Una vez que tenga este "Color Crush" terminado, subiré el código por si alguien quiere echarse una partidilla  Un saludo y gracias!
|
|
|
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.
|
|
|
|
|