Changeset View
Changeset View
Standalone View
Standalone View
applets/fifteenPuzzle/package/contents/ui/FifteenPuzzle.qml
Show First 20 Lines • Show All 68 Lines • ▼ Show 20 Line(s) | 54 | function shuffleBoard() { | |||
---|---|---|---|---|---|
69 | // an inversion is a pair of tiles at positions a, b where | 69 | // an inversion is a pair of tiles at positions a, b where | ||
70 | // a < b but value(a) > value(b) | 70 | // a < b but value(a) > value(b) | ||
71 | 71 | | |||
72 | // also count the number of lines the blank tile is from the bottom | 72 | // also count the number of lines the blank tile is from the bottom | ||
73 | var inversions = 0; | 73 | var inversions = 0; | ||
74 | var blankRow = -1; | 74 | var blankRow = -1; | ||
75 | for (var i = 0; i < size; ++i) { | 75 | for (var i = 0; i < size; ++i) { | ||
76 | if (pieces[i].number == 0) { | 76 | if (pieces[i].number == 0) { | ||
77 | blankRow = i / boardSize; | 77 | blankRow = Math.floor(i / boardSize); | ||
78 | continue; | 78 | continue; | ||
79 | } | 79 | } | ||
80 | for (var j = 0; j < i; ++j) { | 80 | for (var j = 0; j < i; ++j) { | ||
81 | if (pieces[j].number == 0) { | 81 | if (pieces[j].number == 0) { | ||
82 | continue; | 82 | continue; | ||
83 | } | 83 | } | ||
84 | if (pieces[i].number < pieces[j].number) { | 84 | if (pieces[i].number < pieces[j].number) { | ||
85 | ++inversions; | 85 | ++inversions; | ||
▲ Show 20 Lines • Show All 43 Lines • ▼ Show 20 Line(s) | 128 | } else if (below != -1 && pieces[below].number == 0) { | |||
129 | swapPieces(below, position); | 129 | swapPieces(below, position); | ||
130 | } | 130 | } | ||
131 | secondsTimer.start(); | 131 | secondsTimer.start(); | ||
132 | checkSolved(); | 132 | checkSolved(); | ||
133 | } | 133 | } | ||
134 | 134 | | |||
135 | function checkSolved() { | 135 | function checkSolved() { | ||
136 | var size = boardSize * boardSize; | 136 | var size = boardSize * boardSize; | ||
137 | for (var i = 0; i < size - 1; ++i) { | 137 | for (var i = 0; i < size - 2; ++i) { | ||
138 | if (pieces[i].number > pieces[i + 1].number) { | 138 | if (pieces[i].number > pieces[i + 1].number) { | ||
139 | // Not solved. | 139 | // Not solved. | ||
140 | return; | 140 | return; | ||
141 | } | 141 | } | ||
142 | } | 142 | } | ||
143 | solved(); | 143 | solved(); | ||
144 | } | 144 | } | ||
145 | 145 | | |||
▲ Show 20 Lines • Show All 118 Lines • Show Last 20 Lines |