Again
[hammerdown.git] / new_project / maze.c
blob187ed71f93a7e15dd73863f924a79f231387e275
1 //vomitado por Eriiiiiic dominio público-púbico
3 #include <stdio.h>
4 #include <stdlib.h>
5 #include <time.h>
7 //declaraciones pendejas globales
8 //dimensiones cabronas
9 #define columnas 10
10 #define renglones 10
12 //tamaño imbecil del laberinto a dibujar idiota
13 #define mazeCol 21
14 #define mazeRow 21
16 //puto laberinto y sus caminos
17 int maze[renglones][columnas][4];
19 //inicialización de movimientos de mierda a dibujar
20 int row[4];
21 int column[4];
24 //puto arreglo para dibujar un inutil laberinto con pinche ASCII
25 int mazeDraw[mazeRow][mazeCol];
27 //puta posicion actual (x,y)
28 int posMazeX = 1;
29 int posMazeY = 0;
31 void init(){
33 srand(time(NULL));
35 int i, j, k;
36 for (i = 0; i < renglones; i++){
37 for (j = 0; j < columnas; j++){
38 for (k = 0; k < 4; k++){
39 maze[i][j][k] = -1;
44 //reglon (en x de la chingada)
45 row[0] = -1;
46 row[1] = 0;
47 row[2] = 1;
48 row[3] = 0;
49 //columna (en y de la chingada)
50 column[0] = 0;
51 column[1] = 1;
52 column[2] = 0;
53 column[3] = -1;
55 for (i = 0; i < mazeRow; i++){
56 for (j = 0; j < mazeCol; j++){
57 mazeDraw[i][j] = 0;
63 //vómito de laberinto
64 void mazeFuck(int posX, int posY){
65 //inicializa bandera de cagada validez
66 int flag = 1;
67 int x = 0;
68 int movPos=0;
69 maze[posX][posY][0] = 5;
71 //mientras hayan movimeintos de mierda válidos
72 while(flag){
74 int cuenta = 0;
75 int valido[4];
76 //chequeo de casillas válidas imbecil
77 int i;
78 for (i = 0; i < 4; i++){
79 //verifica que este adentro del maldito arreglo
80 if ( (posX + row[i] >= 0) && (posY + column[i] >= 0) &&
81 (posX + row[i] < renglones) &&
82 (posY + column[i] < columnas) ){
83 //verifica que no este recorrida la puta posición
84 if ( maze[posX + row[i]][posY + column[i]][0] == -1 ){
85 //guarda movimientos de mierda válidos
86 valido[cuenta++]=i;
91 // no me caso de poner comentarios de la verga
92 //si hay movimientos de mierda válidos
93 if (cuenta != 0){
94 //elige un valor de mierda válido al chile (random)
95 movPos = valido[rand() % cuenta];
96 maze[posX][posY][x++] = movPos;
98 //recursion!!!!
99 mazeFuck(posX + row[movPos], posY + column[movPos]);
101 }else{
102 //si no hay, bla bla dice: "FLAG! no mames, eres falso, salte del puto while
104 flag = 0;
110 void printMaze(){
111 //la recorro a la puta
112 int i, j;
113 for (i = 0; i < mazeRow; i++){
114 for (j = 0; j < mazeCol; j++){
115 printf("%d", mazeDraw[i][j]);
117 printf("\n");
121 //dibuja perra!!!!
122 void drawMaze(){
124 //genera el laberinto y sus caminos de la chingada
125 mazeFuck(0, 0);
126 //se inicializa con algun caracter cagada
127 int i, j;
128 for (i = 0; i < mazeRow; i++){
129 for (j = 0; j < mazeCol; j++){
130 mazeDraw[i][j] = 0;
134 //harcodea entrada y salida, que pendejo y webon
135 mazeDraw[1][0] = 1;
136 mazeDraw[mazeRow - 2][mazeCol - 1] = 1;
138 //recorre al arreglo lameculos para dibujar el putillo recorrido
139 int x, y, z;
140 for (x = 0; x < renglones; x++){
141 for (y = 0; y < columnas; y++){
142 for(z = 0; z < 4; z++){
143 //si el putin valor es -1 no tumba pared
144 if(maze[x][y][z] != -1){
145 //guarda el mierda de valor del movimiento
146 int tempr = row[ maze[x][y][z] ];
147 int tempc = column[ maze[x][y][z] ];
148 int posR = 2*x + 1;
149 int posC = 2*y + 1;
150 //pinta caminillo hijo de puta en posicion actual, +1 y +2 en respecputamente
151 mazeDraw[posR][posC] = 1;
152 mazeDraw[ posR + tempr ][ posC + tempc ] = 1;
153 mazeDraw[ posR + 2*tempr ][ posC + 2*tempc ] = 1;
159 //imprime el laberinto pinche cabron
160 printMaze();
163 void main(){
164 init();
165 drawMaze();