puzzling puzzle
Blitz3D Forums/Blitz3D Programming/puzzling puzzle
| ||
hi there. im making a columns type game and there are four different colors. i have a 10 by 10 grid that i store in an array called dim grid(9,9) i assign a value to each place on the grid depending on the color: 1=blue 2=yellow 3=red 4=green now i need to check if 4 or more of the same color are adjacent then i want to assign their positions on the grid to 0. ive tried different ways (using a recursive function) but it doesnt seem to work! does anyone have any tips or some code to share? thanx in advance! |
| ||
You want to assign their positions to zero, or their colour values? |
| ||
oh sorry yeah, the color value in the grid array to 0 |
| ||
Something like this might work. Typed straight into replybox (untested).For Row = 0 to 9 For Col = 0 to 6 c = grid(row,col) If (grid(row,col+1) = c) And (grid(row,col+2) = c) And (grid(row,col+3) = c) DeleteRow(row,col,c) col = 7 EndIf Next Next Function DeleteRow(row,col,c) For N = col to 9 If grid(row,n) = c grid(row,n) = 0 Else N = 10 Endif Next ;If the blocks above this row will fall to fill the empty spaces, add that code here. End Function |
| ||
thank GDK but this only takes the case of the block being in a row, the block could be in the form of a square, or an L shape or a verical bar of four and so on... |
| ||
Treat adjacent similarly colored cells as a path and walk it recursively, trying each direction in turn. Keep a tally as you walk and make any necessary determinations when the call chain is complete. I'd recommend, however, using an array of Types and not just a simple integer array. This way you can track housekeeping information as you walk the grid. |
| ||
ok thanx xacto, good to know i was on the right track, what do u mean though about tracking housekeeping info? |