checkerboard.dart 733 B

1234567891011121314151617181920212223242526272829303132333435363738
  1. import 'package:gobang/models/position.dart';
  2. import 'package:gobang/models/care_taker.dart';
  3. import 'package:gobang/models/memo.dart';
  4. class Checkerboard {
  5. Checkerboard._();
  6. static final Checkerboard instance = Checkerboard._();
  7. static Checkerboard getInstance() => instance;
  8. List<Position> _state = [];
  9. List<Position> get state => _state;
  10. final CareTaker _careTaker = CareTaker();
  11. void add(Position position) {
  12. _state.add(position);
  13. _careTaker.add(_save());
  14. }
  15. void _from(Memo memo) {
  16. _state = List.of(memo.state);
  17. }
  18. Memo _save() => Memo(_state);
  19. void clean() {
  20. _state = [];
  21. _careTaker.clear();
  22. }
  23. void undo() {
  24. final memo = _careTaker.getLast();
  25. _from(memo);
  26. }
  27. }