Revision: 3806 http://vexi.svn.sourceforge.net/vexi/?rev=3806&view=rev Author: clrg Date: 2010-02-18 00:08:38 +0000 (Thu, 18 Feb 2010)
Log Message: ----------- Fix board generation process (now delivers valid boards) Modified Paths: -------------- trunk/xtra/org.vexi.simplysudoku/src/org/vexi/simplysudoku/board.t trunk/xtra/org.vexi.simplysudoku/src/org/vexi/simplysudoku/main.t trunk/xtra/org.vexi.simplysudoku/src/org/vexi/simplysudoku/sector.t trunk/xtra/org.vexi.simplysudoku/src/org/vexi/simplysudoku/simple.t Modified: trunk/xtra/org.vexi.simplysudoku/src/org/vexi/simplysudoku/board.t =================================================================== --- trunk/xtra/org.vexi.simplysudoku/src/org/vexi/simplysudoku/board.t 2010-02-17 18:50:41 UTC (rev 3805) +++ trunk/xtra/org.vexi.simplysudoku/src/org/vexi/simplysudoku/board.t 2010-02-18 00:08:38 UTC (rev 3806) @@ -17,9 +17,14 @@ thisbox.completed = 0; var complFunc = function(v) { - if (v > 9) throw "More than 9 completed numbers not possible"; - if (v == 9) completed ++; - else if (trapee.completed == 9) completed --; + if (v > 9) { + throw "More than 9 completed numbers not possible"; + } + if (v == 9) { + completed ++; + } else if (trapee.completed == 9) { + completed --; + } cascade = v; } @@ -27,20 +32,36 @@ var i = $sectors.indexof(s); switch(v) { case "up": - if (3 > i) true; // do nothing - else $sectors[i-3][ni].focused = true; + if (3 > i) { + // do nothing + true; + } else { + $sectors[i-3][ni].focused = true; + } break; case "down": - if (i > 5) true; // do nothing - else $sectors[i+3][ni].focused = true; + if (i > 5) { + // do nothing + true; + } else { + $sectors[i+3][ni].focused = true; + } break; case "left": - if (i%3 == 0) true; // do nothing - else $sectors[i-1][ni].focused = true; + if (i%3 == 0) { + // do nothing + true; + } else { + $sectors[i-1][ni].focused = true; + } break; case "right": - if (i%3 == 2) true; // do nothing - else $sectors[i+1][ni].focused = true; + if (i%3 == 2) { + // do nothing + true; + } else { + $sectors[i+1][ni].focused = true; + } break; } } @@ -48,23 +69,33 @@ var numberCheck = function(s, ni, n) { var si = $sectors.indexof(s); - // clear number if (n == "") { + // clear number if ($sectors[si][ni].value == null) return false; $sectors[si][ni].value = null; return true; } - // already filled in with this number - if ($sectors[si][ni].value == n) return false; + if ($sectors[si][ni].value == n) { + // already filled in with this number + return false; + } // check row for number for (var i=0; 9>i; i++) { - if (i-(i%3) != si-(si%3)) continue; + if (i-(i%3) != si-(si%3)) { + continue; + } for (var j=0; 9>j; j++) { - if (si == i and ni == j) continue; - if (j-(j%3) != ni-(ni%3)) continue; - if ($sectors[i][j].value != n) continue; + if (si == i and ni == j) { + continue; + } + if (j-(j%3) != ni-(ni%3)) { + continue; + } + if ($sectors[i][j].value != n) { + continue; + } $sectors[i][j].highlight(); return false; } @@ -72,11 +103,19 @@ // check column for number for (var i=0; 9>i; i++) { - if (i%3 != si%3) continue; + if (i%3 != si%3) { + continue; + } for (var j=0; 9>j; j++) { - if (j%3 != ni%3) continue; - if (si == i and ni == j) continue; - if ($sectors[i][j].value != n) continue; + if (j%3 != ni%3) { + continue; + } + if (si == i and ni == j) { + continue; + } + if ($sectors[i][j].value != n) { + continue; + } $sectors[i][j].highlight(); return false; } @@ -84,9 +123,15 @@ // check sector for number for (var i=0; 9>i; i++) { - if (i == ni) continue; - if ($sectors[si][i].value == null) continue; - if ($sectors[si][i].value != n) continue; + if (i == ni) { + continue; + } + if ($sectors[si][i].value == null) { + continue; + } + if ($sectors[si][i].value != n) { + continue; + } $sectors[si][i].highlight(); return false; } @@ -104,22 +149,36 @@ } // only clear player-entered values - thisbox.clear = function() { - for (var i=0; 9>i; i++) $sectors[i].clear(); + thisbox.clearValues = function() { + for (var i=0; 9>i; i++) { + $sectors[i].clearValues(); + } } // reset entire board thisbox.reset = function() { - for (var i=0; 9>i; i++) $sectors[i].reset(); + for (var i=0; 9>i; i++) { + $sectors[i].reset(); + } } + /** okay I implemented board generation and board + * layout differently, so sue me, bad programmer + */ + var getSq = function(row, col) { + var i = 3*vexi.math.floor(row/3) + vexi.math.floor(col/3); + var j = 3*(row%3) + col%3; + return $sectors[i][j]; + } + thisbox.setupBoard = function(level) { var grid = new .simple(); for (var i=0; 9>i; i++) { for (var j=0; 9>j; j++) { + var sq = getSq(i,j); //if (board[i][j] > -1) { - $sectors[i][j].value = grid.get(i, j); - $sectors[i][j].numset = true; + sq.value = grid.get(i, j); + sq.numset = true; //} } } Modified: trunk/xtra/org.vexi.simplysudoku/src/org/vexi/simplysudoku/main.t =================================================================== --- trunk/xtra/org.vexi.simplysudoku/src/org/vexi/simplysudoku/main.t 2010-02-17 18:50:41 UTC (rev 3805) +++ trunk/xtra/org.vexi.simplysudoku/src/org/vexi/simplysudoku/main.t 2010-02-18 00:08:38 UTC (rev 3806) @@ -48,8 +48,9 @@ $start.action ++= function(v) { $sudoku.reset(); - if ($gametype.text != "Empty Board") + if ($gametype.text != "Empty Board") { $sudoku.setupBoard($gametype.text.toLowerCase()); + } show = $board; return; } Modified: trunk/xtra/org.vexi.simplysudoku/src/org/vexi/simplysudoku/sector.t =================================================================== --- trunk/xtra/org.vexi.simplysudoku/src/org/vexi/simplysudoku/sector.t 2010-02-17 18:50:41 UTC (rev 3805) +++ trunk/xtra/org.vexi.simplysudoku/src/org/vexi/simplysudoku/sector.t 2010-02-18 00:08:38 UTC (rev 3806) @@ -22,31 +22,49 @@ var numberMove = function(n, v) { var i = $numbers.indexof(n); - if (i == -1) throw "Illegal number index"; + if (i == -1) { + throw "Illegal number index"; + } switch(v) { case "up": - if (3 > i) move(thisbox, v, i+6); - else $numbers[i-3].focused = true; + if (3 > i) { + move(thisbox, v, i+6); + } else { + $numbers[i-3].focused = true; + } break; case "down": - if (i > 5) move(thisbox, v, i-6); - else $numbers[i+3].focused = true; + if (i > 5) { + move(thisbox, v, i-6); + } else { + $numbers[i+3].focused = true; + } break; case "left": - if (i%3 == 0) move(thisbox, v, i+2); - else $numbers[i-1].focused = true; + if (i%3 == 0) { + move(thisbox, v, i+2); + } else { + $numbers[i-1].focused = true; + } break; case "right": - if (i%3 == 2) move(thisbox, v, i-2); - else $numbers[i+1].focused = true; + if (i%3 == 2) { + move(thisbox, v, i-2); + } else { + $numbers[i+1].focused = true; + } break; } } var numberCheck = function(n, v) { var ret = check(thisbox, $numbers.indexof(n), v); - if (ret and v != "" and $numbers.value == "") completed++; - if (ret and v == "") completed--; + if (ret and v != "" and $numbers.value == "") { + completed++; + } + if (ret and v == "") { + completed--; + } return ret; } @@ -55,9 +73,12 @@ $numbers[i].check = numberCheck; } - thisbox.clear = function() { - for (var i=0; 9>i; i++) - if (!$numbers[i].numset) $numbers[i].value = ""; + thisbox.clearValues = function() { + for (var i=0; 9>i; i++) { + if (!$numbers[i].numset) { + $numbers[i].value = ""; + } + } } thisbox.reset = function() { Modified: trunk/xtra/org.vexi.simplysudoku/src/org/vexi/simplysudoku/simple.t =================================================================== --- trunk/xtra/org.vexi.simplysudoku/src/org/vexi/simplysudoku/simple.t 2010-02-17 18:50:41 UTC (rev 3805) +++ trunk/xtra/org.vexi.simplysudoku/src/org/vexi/simplysudoku/simple.t 2010-02-18 00:08:38 UTC (rev 3806) @@ -55,7 +55,7 @@ var swapCols = function(c1, c2) { // have to do it 1 cell at a time since // grid is specified by row, not by col - for (var i=0; 8>i; i++) { + for (var i=0; 9>i; i++) { var cell1 = grid[i][c1]; var cell2 = grid[i][c2]; grid[i][c1] = cell2; @@ -64,6 +64,8 @@ } var swapRowSet = function(rs1, rs2) { + rs1 = rs1%3; + rs2 = rs2%3; // swap two sets of 3 rows for (var i=0; 3>i; i++) { var row1 = grid[3*rs1+i]; @@ -74,9 +76,11 @@ } var swapColSet = function(cs1, cs2) { + cs1 = cs1%3; + cs2 = cs2%3; // swap two sets of 3 cols for (var i=0; 3>i; i++) { - for (var j=0; 8>j; j++) { + for (var j=0; 9>j; j++) { var cell1 = grid[j][3*cs1+i]; var cell2 = grid[j][3*cs2+i]; grid[j][3*cs1+i] = cell2; @@ -85,6 +89,13 @@ } } + var printgrid = function() { + for (var i=0; 9>i; i++) { + vexi.trace(grid[i]); + } + vexi.trace("==========================="); + } + var generate = function() { for (var i=0; 8>i; i++) { var off = 6>i ? 3*(i%3) : 0; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. ------------------------------------------------------------------------------ Download Intel® Parallel Studio Eval Try the new software tools for yourself. Speed compiling, find bugs proactively, and fine-tune applications for parallel performance. See why Intel Parallel Studio got high marks during beta. http://p.sf.net/sfu/intel-sw-dev _______________________________________________ Vexi-svn mailing list Vexi-svn@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/vexi-svn