| 123456789101112131415161718192021222324252627282930313233343536373839404142434445 |
- import 'package:gobang/bridge/chess_shape.dart';
- import 'package:gobang/bridge/circle_shape.dart';
- import 'package:gobang/bridge/rect_shape.dart';
- import 'package:gobang/flyweight/chess.dart';
- import 'package:gobang/flyweight/chess_flyweight_factory.dart';
- import 'package:gobang/state/game_state.dart';
- import 'package:gobang/state/user_context.dart';
- class GameViewModel {
- GameViewModel._();
- static final GameViewModel instance = GameViewModel._();
- static GameViewModel getInstance() => instance;
- final UserContext _userContext = UserContext();
- Chess play() {
- _userContext.play();
- return ChessFlyweightFactory.getInstance().getChess('white');
- }
- ChessShape shapeFor(bool useCircle) =>
- useCircle ? CircleShape() : RectShape();
- bool undo() => _userContext.regretChess();
- String get state {
- final s = _userContext.state;
- if (s is StartState) {
- return '热身阶段,不能悔棋,不能投降';
- }
- if (s is MidState) {
- return '入神阶段,可以悔棋且剩余${3 - s.reg}次,可以投降';
- }
- if (s is EndState) {
- return '白热化阶段,悔棋次数已用完,但可以投降';
- }
- return '';
- }
- void reset() => _userContext.reset();
- bool surrender() => _userContext.surrender();
- }
|