2222 < link rel ="stylesheet " href ="https://maxcdn.bootstrapcdn.com/font-awesome/latest/css/font-awesome.min.css ">
2323 <!-- Material Kit CSS -->
2424 < link href ="../assets/css/material-kit.css?v=2.0.4 " rel ="stylesheet " />
25+ < link href ="../assets/css/custom.css " rel ="stylesheet " />
2526 < style type ="text/css ">
2627 body {
2728 color : # 1b176b ;
4344 }
4445
4546 # maze-table > tbody > tr > td {
46- border-top : 4px solid # ffffff00 ;
47- border-left : 4px solid # ffffff00 ;
47+ /* border-top: 4px solid #ffffff00;
48+ border-left: 4px solid #ffffff00; */
49+ border : 4px solid # ffffff00 ;
4850 }
4951
52+ td .bg-finish {
53+ background-color : # 8cc0c7 !important ;
54+ }
55+
56+ /* td.border-finish-top {
57+ border-top: 4px solid #8cc0c7 !important;
58+ }
59+
60+ td.border-finish-bottom {
61+ border-bottom: 4px solid #8cc0c7 !important;
62+ }
63+
64+ td.border-finish-left {
65+ border-left: 4px solid #8cc0c7 !important;
66+ }
67+
68+ td.border-finish-right {
69+ border-right: 4px solid #8cc0c7 !important;
70+ } */
5071
5172 td .border-top {
5273 border-top : 4px solid # 1b176b !important ;
99120</ head >
100121
101122< body >
123+ <!-- NAVBAR -->
124+ < nav class ="navbar fixed-top navbar-expand-lg ">
125+ < div class ="container ">
126+ < div class ="navbar-translate ">
127+ < a class ="navbar-brand " href ="./ ">
128+ < img src ="../assets/img/logos/opr_logo.png " alt ="OPRobots Logo " style ="max-height: 100%; ">
129+ </ a >
130+ < button class ="navbar-toggler " type ="button " data-toggle ="collapse " aria-expanded ="false " aria-label ="Toggle navigation ">
131+ < span class ="sr-only "> Menú Lateral</ span >
132+ < span class ="navbar-toggler-icon "> </ span >
133+ < span class ="navbar-toggler-icon "> </ span >
134+ < span class ="navbar-toggler-icon "> </ span >
135+ </ button >
136+ </ div >
137+ < div class ="collapse navbar-collapse ">
138+ < ul class ="navbar-nav ml-auto ">
139+ < li class ="nav-item d-lg-none text-center ">
140+ < a class ="navbar-brand margin-top-20 margin-bottom-20 " href ="./ ">
141+ < img src ="../assets/img/logos/opr_logo.png " alt ="OPRobots Logo " style ="max-height: 100%; ">
142+ </ a >
143+ </ li >
144+ <!-- <li class="nav-item">
145+ <a href="./sobre-nosotros" class="nav-link">
146+ <i class="material-icons">info</i> Sobre nosotros
147+ </a>
148+ </li> -->
149+ < li class ="nav-item ">
150+ < a href ="../nuestros-robots " class ="nav-link ">
151+ < i class ="material-icons "> settings</ i > Nuestros Robots
152+ </ a >
153+ </ li >
154+ < li class ="nav-item active ">
155+ < a href ="../utils-helpers " class ="nav-link ">
156+ < i class ="material-icons "> support</ i > Utils & Helpers
157+ </ a >
158+ </ li >
159+ < li class ="nav-item ">
160+ < a href ="../tienda " class ="nav-link ">
161+ < i class ="material-icons "> store</ i > Tienda
162+ </ a >
163+ </ li >
164+ < li class ="nav-item d-lg-none ">
165+ < a href ="https://twitter.com/OPRobots " class ="nav-link ">
166+ < i class ="fa fa-twitter "> </ i > Twitter
167+ </ a >
168+ </ li >
169+ < li class ="nav-item d-lg-none ">
170+ < a href ="https://www.facebook.com/OPRobots " class ="nav-link ">
171+ < i class ="fa fa-facebook-square "> </ i > Facebook
172+ </ a >
173+ </ li >
174+ < li class ="nav-item d-lg-none ">
175+ < a href ="https://www.instagram.com/OPRobots " class ="nav-link ">
176+ < i class ="fa fa-instagram "> </ i > Instagram
177+ </ a >
178+ </ li >
179+ < li class ="nav-item d-lg-none ">
180+ < a href ="https://github.com/OPRobots " class ="nav-link ">
181+ < i class ="fa fa-github "> </ i > GitHub
182+ </ a >
183+ </ li >
184+ < li class ="nav-item d-none d-lg-block ">
185+ < a class ="nav-link p-5 " title ="Síguenos en Twitter " href ="https://twitter.com/OPRobots " target ="_blank ">
186+ < i class ="fa fa-twitter "> </ i >
187+ </ a >
188+ </ li >
189+ < li class ="nav-item d-none d-lg-block ">
190+ < a class ="nav-link p-5 " title ="Visítanos Facebook " href ="https://www.facebook.com/OPRobots " target ="_blank ">
191+ < i class ="fa fa-facebook-square "> </ i >
192+ </ a >
193+ </ li >
194+ < li class ="nav-item d-none d-lg-block ">
195+ < a class ="nav-link p-5 " title ="Síguenos en Instagram " href ="https://www.instagram.com/OPRobots " target ="_blank ">
196+ < i class ="fa fa-instagram "> </ i >
197+ </ a >
198+ </ li >
199+ < li class ="nav-item d-none d-lg-block ">
200+ < a class ="nav-link p-5 " title ="Síguenos en GitHub " href ="https://github.com/OPRobots " target ="_blank ">
201+ < i class ="fa fa-github "> </ i >
202+ </ a >
203+ </ li >
204+ </ ul >
205+ </ div >
206+ </ div >
207+ </ nav >
208+ < div class ="preloader " id ="preloader ">
209+ < div class ="item ">
210+ < div class ="spinner "> </ div >
211+ </ div >
212+ </ div >
213+ <!-- FIN NAVBAR -->
102214
103- < div class ="container text-center ">
215+ < div class ="container text-center maze-wall-placer " style =" margin-top: 90px; ">
104216 < h1 class ="title "> Maze Wall Placer</ h1 >
105217 < div class ="form-group row justify-self-center " style ="justify-self: center; ">
106- < label class ="col-auto col-form-label "> Filas:</ label >
218+ < label class ="col-auto col-form-label text-dark "> Filas:</ label >
107219 < div class ="col-auto ">
108220 < input type ="number " class ="form-control text-center " id ="rows " value ="16 ">
109221 </ div >
110- < label class ="col-auto col-form-label "> Columnas:</ label >
222+ < label class ="col-auto col-form-label text-dark "> Columnas:</ label >
111223 < div class ="col-auto ">
112224 < input type ="number " class ="form-control text-center " id ="cols " value ="16 ">
113225 </ div >
114226 < div class ="col text-right ">
115- < button class ="btn btn-sm btn-primary " id ="draw-maze "> Actualizar</ button >
227+ < button class ="btn btn-sm btn-blue " id ="draw-maze "> Actualizar</ button >
116228 </ div >
117229 </ div >
118230 < div class ="row ">
@@ -127,7 +239,7 @@ <h4 class="title">Maze Layout</h4>
127239 </ div >
128240 < div class ="row mb-5 ">
129241 < div class ="col ">
130- < h4 class ="title "> Maze Array</ h4 >
242+ < h4 class ="title "> Maze BIT Array</ h4 >
131243 < textarea name ="maze-array " id ="maze-array " rows ="4 " class ="form-control bg-light p-4 "> </ textarea >
132244 </ div >
133245 </ div >
@@ -155,6 +267,10 @@ <h4 class="title">Maze ASCII</h4>
155267 let row_parent = td_parent . dataset . row ;
156268 let col_parent = td_parent . dataset . col ;
157269
270+ if ( td_parent . classList . contains ( "bg-finish" ) ) {
271+ return ;
272+ }
273+
158274
159275 let top_sibling = document . querySelector ( 'td.main-td[data-row="' + ( parseInt ( row_parent ) - 1 ) + '"][data-col="' + col_parent + '"]' ) || document . createElement ( "td" ) ;
160276 let bottom_sibling = document . querySelector ( 'td.main-td[data-row="' + ( parseInt ( row_parent ) + 1 ) + '"][data-col="' + col_parent + '"]' ) || document . createElement ( "td" ) ;
@@ -439,6 +555,20 @@ <h4 class="title">Maze ASCII</h4>
439555 right_sibling . classList . add ( "border-left" ) ;
440556 }
441557 break ;
558+ case col == 2 && row == 2 :
559+ if ( td_parent . classList . contains ( "bg-finish" ) ) {
560+ td_parent . classList . remove ( "bg-finish" ) ;
561+ td_parent . classList . remove ( "border-finish-top" ) ;
562+ td_parent . classList . remove ( "border-finish-bottom" ) ;
563+ td_parent . classList . remove ( "border-finish-left" ) ;
564+ td_parent . classList . remove ( "border-finish-right" ) ;
565+ td_parent . querySelector ( "table td[data-row='2'][data-col='2']" ) . innerHTML = "" ;
566+ } else {
567+ td_parent . classList . add ( "bg-finish" ) ;
568+ td_parent . querySelector ( "table td[data-row='2'][data-col='2']" ) . innerHTML = "<b style='pointer-events:none'>F</b>" ;
569+ checkFinishBorders ( document . getElementById ( "maze-table" ) ) ;
570+ }
571+ break ;
442572 }
443573 clearFades ( td_snap ) ;
444574 buildMazeArray ( ) ;
@@ -465,10 +595,44 @@ <h4 class="title">Maze ASCII</h4>
465595 tbody . appendChild ( tr ) ;
466596 }
467597 table . appendChild ( tbody ) ;
598+ // table.style.position = "absolute";
599+ // table.style.top = "-2px";
600+ // table.style.left = "-2px";
601+ table . style . width = "60px" ;
602+ table . style . height = "60px" ;
603+ // td.style.position = "relative";
468604 td . appendChild ( table ) ;
469605
470606 }
471607
608+ let checkFinishBorders = function ( maze ) {
609+ maze . querySelectorAll ( "td.bg-finish" ) . forEach ( function ( td ) {
610+ let row = parseInt ( td . dataset . row ) ;
611+ let col = parseInt ( td . dataset . col ) ;
612+
613+ let left_td = document . querySelector ( 'td.main-td[data-row="' + row + '"][data-col="' + ( col - 1 ) + '"]' ) ;
614+ if ( left_td && left_td . classList . contains ( "bg-finish" ) ) {
615+ td . classList . add ( "border-finish-left" ) ;
616+ left_td . classList . add ( "border-finish-right" ) ;
617+ }
618+ let right_td = document . querySelector ( 'td.main-td[data-row="' + row + '"][data-col="' + ( col + 1 ) + '"]' ) ;
619+ if ( right_td && right_td . classList . contains ( "bg-finish" ) ) {
620+ td . classList . add ( "border-finish-right" ) ;
621+ right_td . classList . add ( "border-finish-left" ) ;
622+ }
623+ let top_td = document . querySelector ( 'td.main-td[data-row="' + ( row - 1 ) + '"][data-col="' + col + '"]' ) ;
624+ if ( top_td && top_td . classList . contains ( "bg-finish" ) ) {
625+ td . classList . add ( "border-finish-top" ) ;
626+ top_td . classList . add ( "border-finish-bottom" ) ;
627+ }
628+ let bottom_td = document . querySelector ( 'td.main-td[data-row="' + ( row + 1 ) + '"][data-col="' + col + '"]' ) ;
629+ if ( bottom_td && bottom_td . classList . contains ( "bg-finish" ) ) {
630+ td . classList . add ( "border-finish-bottom" ) ;
631+ bottom_td . classList . add ( "border-finish-top" ) ;
632+ }
633+ } ) ;
634+ } ;
635+
472636 let maze_table = document . getElementById ( "maze-table" ) ;
473637 maze_table . innerHTML = "" ;
474638 let maze_table_body = document . createElement ( "tbody" ) ;
@@ -494,23 +658,23 @@ <h4 class="title">Maze ASCII</h4>
494658
495659 if ( col == 1 && row == rows ) {
496660 td . classList . add ( "border-right" ) ;
497- td . style . backgroundColor = "#8cc0c7" ;
661+ td . classList . add ( "bg-finish" ) ;
498662 td . innerHTML = "<b>S</b>" ;
499663 } else if ( col == 2 && row == rows ) {
500664 td . classList . add ( "border-left" ) ;
501665 }
502666
503667 switch ( true ) {
504668 case cols >= 9 && rows >= 9 :
505- if ( ( col == 8 || col == 9 ) && ( row == rows - 7 || row == rows - 8 ) ) {
506- td . style . backgroundColor = "#8cc0c7" ;
507- td . innerHTML = "<b>F</b>" ;
669+ if ( ( col == 8 || col == 9 ) && ( row == rows - 7 || row == rows - 8 ) ) {
670+ td . classList . add ( "bg-finish" ) ;
671+ td . querySelector ( "table td[data-row='2'][data-col='2']" ) . innerHTML = "<b style='pointer-events:none' >F</b>" ;
508672 }
509673 break ;
510674 case cols == 6 && rows == 6 :
511675 if ( ( col == 5 || col == 6 ) && ( row == 1 || row == 2 ) ) {
512- td . style . backgroundColor = "#8cc0c7" ;
513- td . innerHTML = "<b>F</b>" ;
676+ td . classList . add ( "bg-finish" ) ;
677+ td . querySelector ( "table td[data-row='2'][data-col='2']" ) . innerHTML = "<b style='pointer-events:none' >F</b>" ;
514678 }
515679 break ;
516680 }
@@ -519,7 +683,7 @@ <h4 class="title">Maze ASCII</h4>
519683 }
520684 maze_table_body . appendChild ( tr ) ;
521685 }
522-
686+ checkFinishBorders ( maze_table ) ;
523687 buildMazeArray ( ) ;
524688 buildMazeAscii ( ) ;
525689 } ;
@@ -601,9 +765,8 @@ <h4 class="title">Maze ASCII</h4>
601765 }
602766 maze_ascii += "+" ; // End of the last row
603767
604- console . log ( maze_ascii ) ;
605768 document . getElementById ( "maze-ascii" ) . value = maze_ascii ;
606- document . getElementById ( "maze-ascii" ) . rows = Math . max ( 4 , rows * 2 + 1 ) ; // Adjust rows based on the number of rows in the maze
769+ document . getElementById ( "maze-ascii" ) . rows = Math . max ( 4 , rows * 2 + 1 ) + 1 ;
607770 }
608771
609772 let updateBordersFromArray = function ( maze_array ) {
0 commit comments