Index: samples/pop_pop_win/lib/src/game/field.dart |
diff --git a/samples/pop_pop_win/lib/src/game/field.dart b/samples/pop_pop_win/lib/src/game/field.dart |
deleted file mode 100644 |
index 8d301a27919d49c0b7b83444df9c92eb2448871a..0000000000000000000000000000000000000000 |
--- a/samples/pop_pop_win/lib/src/game/field.dart |
+++ /dev/null |
@@ -1,89 +0,0 @@ |
-// Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file |
-// for details. All rights reserved. Use of this source code is governed by a |
-// BSD-style license that can be found in the LICENSE file. |
-part of pop_pop_win.game; |
- |
-class Field extends Array2d<bool> { |
- final int bombCount; |
- final Array2d<int> _adjacents; |
- |
- factory Field([int bombCount = 40, int cols = 16, int rows = 16, |
- int seed = null]) { |
- var squares = new List<bool>.filled(rows * cols, false); |
- assert(bombCount < squares.length); |
- assert(bombCount > 0); |
- |
- var rnd = new Random(seed); |
- |
- // This is the most simple code, but it'll get slow as |
- // bombCount approaches the square count. |
- // But more efficient if bombCount << square count |
- // which is expected. |
- for (int i = 0; i < bombCount; i++) { |
- int index; |
- do { |
- index = rnd.nextInt(squares.length); |
- } while (squares[index]); |
- squares[index] = true; |
- } |
- |
- return new Field._internal(bombCount, cols, |
- new UnmodifiableListView<bool>(squares)); |
- } |
- |
- factory Field.fromSquares(int cols, int rows, List<bool> squares) { |
- assert(cols > 0); |
- assert(rows > 0); |
- assert(squares.length == cols * rows); |
- |
- int count = 0; |
- for (final m in squares) { |
- if (m) { |
- count++; |
- } |
- } |
- assert(count > 0); |
- assert(count < squares.length); |
- |
- return new Field._internal(count, cols, |
- new UnmodifiableListView<bool>(squares)); |
- } |
- |
- Field._internal(this.bombCount, int cols, UnmodifiableListView<bool> source) |
- : this._adjacents = new Array2d<int>(cols, source.length ~/ cols), |
- super.wrap(cols, source.toList()) { |
- assert(width > 0); |
- assert(height > 0); |
- assert(bombCount > 0); |
- assert(bombCount < length); |
- |
- int count = 0; |
- for (var m in this) { |
- if (m) { |
- count++; |
- } |
- } |
- assert(count == bombCount); |
- } |
- |
- int getAdjacentCount(int x, int y) { |
- if (get(x, y)) { |
- return null; |
- } |
- |
- int val = _adjacents.get(x, y); |
- |
- if (val == null) { |
- val = 0; |
- for (var i in getAdjacentIndices(x, y)) { |
- if (this[i]) { |
- val++; |
- } |
- } |
- _adjacents.set(x, y, val); |
- } |
- return val; |
- } |
- |
- String toString() => 'w${width}h${height}m${bombCount}'; |
-} |