Adding trash to play arround
[hammerdown.git] / maze / maze.js
blob2d3bd6e26e51b2100e90cb254dbf5346b240d9c7
1 //maze.js 
2 //vomitado por Eriiiiiic dominio público-púbico
4 //Es momento de bailar la esponja
5 var esponja = false;
7 //declaraciones pendejas globales
8 //dimensiones cabronas 
9 var columnas = 60;
10 var renglones = 12;
12 //puto laberinto y sus caminos
13 var maze = new Array(renglones);        
14 for (x = 0; x < maze.length; x++){
15         maze[x] = new Array(columnas); 
18 //inicialización de movimientos de mierda a dibujar
19 var row = new Array(4);
20 var column = new Array(4);
21 //reglon (en x de la chingada)
22 row[0] = -1;
23 row[1] = 0;
24 row[2] = 1;
25 row[3] = 0;
26 //columna (en y de la chingada)
27 column[0] = 0;
28 column[1] = 1;
29 column[2] = 0;
30 column[3] = -1;
32 //tamaño imbecil del laberinto a dibujar idiota
33 var mazeRow = 1 + 2*renglones;
34 var mazeCol = 1 + 2*columnas;
36 //puto arreglo para dibujar un inutil laberinto con pinche ASCII
37 var mazeDraw = new Array(mazeRow);
38 for (x = 0; x < mazeDraw.length; x++){
39         mazeDraw[x] = new Array(mazeCol);
42 //puta posicion actual (x,y)
43 var posMazeX = 1;
44 var posMazeY = 0; 
46 //vómito de laberinto
47 function mazeFuck(posX, posY){
48         //inicializa bandera de cagada validez 
49         var flag = true;
50         
51         //valor default de no moviemiento de mierda
52         maze[posX][posY] = new Array();
53         maze[posX][posY].push(-1);
54         
55         //mientras hayan movimeintos de mierda válidos
56         while(flag){
57                 var valido = new Array();
58                 //chequeo de casillas válidas imbecil
59                 for (var i = 0; i < 4; i++){
60                         //verifica que este adentro del maldito arreglo
61                         if ( (posX + row[i] >= 0) && (posY + column[i] >= 0) && (posX + row[i] < maze.length) && (posY + column[i] < maze[0].length) ){
62                                 //verifica que no este recorrida la puta posición
63                                 if ( maze[posX + row[i]][posY + column[i]] == undefined ){
64                                         //guarda movimientos de mierda válidos
65                                         valido.push(i);
66                                 }
67                         }
68                 }
69                 // no me caso de poner comentarios de la verga
70                 //si hay movimientos de mierda válidos
71                 if (valido.length != 0){ 
72                         //elige un valor de mierda válido al chile (random)
73                         var movPos = valido[  Math.floor( Math.random()*4)  % valido.length  ];
74                         
75                         //si es igual a -1 quito el valor a la chingada
76                         if(maze[posX][posY][0] == -1){
77                                 maze[posX][posY].pop();
78                         }
79                         
80                         //guarda el movimeinto de mierda
81                         maze[posX][posY].push(movPos);
82                         
83                         //recursion!!!!
84                         mazeFuck(posX + row[movPos], posY + column[movPos]);
85                 
86                 }else{
87                         //si no hay, bla bla dice: "FLAG! no mames, eres falso, salte del puto while 
88                         flag = false;
89                 }
90         }
93 //dibuja perra!!!!
94 function drawMaze(){
95         
96         //genera el laberinto y sus caminos de la chingada
97         mazeFuck(0, 0);
98         //se inicializa con algun caracter cagada
99         for (i = 0; i < mazeDraw.length; i++){
100                 for (j = 0; j < mazeDraw[i].length; j++){
101                         mazeDraw[i][j] = "0";                   
102                 }
103         }
105         //pendejo color del camino
106         var colorin_road = "<font color=\"black\">::</font>";
108         //harcodea entrada y salida, que pendejo y webon
109         mazeDraw[1][0] = "<font color=\"yellow\">1</font>"; 
110         mazeDraw[mazeDraw.length - 2][mazeDraw[0].length - 1]= "<font color=\"green\">S</font>";
111         
112         //recorre al arreglo lameculos para dibujar el putillo recorrido
113         for (x = 0; x < maze.length; x++){
114                 for (y = 0; y < maze[x].length; y++){
115                         for     ( z= 0; z < maze[x][y].length; z++){
116                                 //si el putin valor es -1 no tumba pared
117                                 if(maze[x][y][z] != "-1"){
118                                         //guarda el mierda de valor del movimiento
119                                         var tempr = row[ maze[x][y][z] ]; 
120                         var tempc = column[ maze[x][y][z] ];
121                                         var posR = 2*x + 1;
122                                         var posC = 2*y + 1;
123                                         //pinta caminillo hijo de puta en posicion actual, +1 y +2 en respecputamente
124                                         mazeDraw[posR][posC] = colorin_road;
125                                         mazeDraw[ posR + tempr ][ posC + tempc ] = colorin_road;
126                                 mazeDraw[ posR + 2*tempr ][ posC + 2*tempc ] = colorin_road;
127                                 }
128                         }
129                 }
130         }
131         
132         //imprime el laberinto pinche cabron
133         printMaze(mazeDraw);
136 function printMaze(m){
137         //inicializo cadenilla ogt
138         var cadenilla= "";
139         //la recorro a la puta
140         for (i = 0; i < m.length; i++){
141                 for (j = 0; j < m[i].length; j++){
142                                 cadenilla += m[i][j];
143                 }
144                 cadenilla += "</br>";
145         }
146         //la imprimo la chigandera a putazos hardcore id
147         document.getElementById("666").innerHTML = cadenilla;
150 //funcion para checar validez de la pinch posicion y devolver su puto estado
151 function checaPosColorea(i){
152         //usa "i" de mierda para saber a donde chingados se quiere mover
153         //valida posicion y si es difrente a puta pared harcodeada = "0" se mueve
154         if( (posMazeX + row[i] >= 0) && (posMazeY + column[i] >= 0) && (posMazeX + row[i] < mazeDraw.length) && 
155         (posMazeY + column[i] < mazeDraw[0].length) ){
156                 if (mazeDraw[posMazeX + row[i]][posMazeY + column[i]] != "0"){
157                         mazeDraw[posMazeX][posMazeY] = "<font color=\"red\">::</font>";
158                         mazeDraw[posMazeX + row[i]][posMazeY + column[i]] = "<font color=\"yellow\">1</font>";
159                         posMazeX+=row[i];
160                         posMazeY+=column[i];
161                         if ( ( posMazeX + row[i] == mazeDraw.length - 2) && ( posMazeY + column[i] == mazeDraw[0].length - 1) ){
162                                 alert("Es momento de bailar la esponja");
163                                 esponja = true;
164                         }
165                 }
166         }       
169 //funcion para detectar si presiona las flechas el simio, 
170 //y luego mover la puta posicion
171 function handleKeyboard(e)
173         if(e.keyCode == 37){//izquierda = 3
174                 checaPosColorea(3);     
175         }else if(e.keyCode == 38){//arriba = 0
176                 checaPosColorea(0);
177         }else if(e.keyCode == 39){//derecha = 1
178                 checaPosColorea(1);
179         }else if(e.keyCode == 40){//abajo = 2
180                 checaPosColorea(2);
181         }
182         
183         printMaze(mazeDraw);
184         if(esponja){
185                 document.getElementById("esponja").innerHTML = "<img src=\"./dancethesponge1.jpg\"/><img src=\"./dancethesponge2.jpg\"/>";
186         }