Skip to content

Commit

Permalink
cleanup
Browse files Browse the repository at this point in the history
  • Loading branch information
imtoori committed May 3, 2020
1 parent 959d70e commit 2b110c6
Show file tree
Hide file tree
Showing 7 changed files with 45 additions and 39 deletions.
17 changes: 8 additions & 9 deletions lib/board.dart
Expand Up @@ -3,7 +3,7 @@ import 'package:flutterfiar/coordinate.dart';
import 'match_page.dart';

class Board {
List<List<Player>> _boxes = List.generate(
List<List<Color>> _boxes = List.generate(
7,
(i) => List.generate(
7,
Expand All @@ -13,29 +13,28 @@ class Board {

Board();

Board.from(List<List<Player>> boxes) {
Board.from(List<List<Color>> boxes) {
_boxes = boxes;
}

Player getBox(Coordinate coordinate) =>
_boxes[coordinate.col][coordinate.row];
Color getBox(Coordinate coordinate) => _boxes[coordinate.col][coordinate.row];

int getColumnTarget(int col) => _boxes[col].lastIndexOf(null);

void setBox(Coordinate coordinate, Player player) =>
void setBox(Coordinate coordinate, Color player) =>
_boxes[coordinate.col][coordinate.row] = player;

void reset() {
_boxes.forEach((r) => r.forEach((p) => p = null));
}

bool checkWinner(Coordinate coordinate, Player player) {
bool checkWinner(Coordinate coordinate, Color player) {
return checkHorizontally(coordinate, player) ||
checkVertically(coordinate, player) ||
checkDiagonally(coordinate, player);
}

bool checkHorizontally(Coordinate coordinate, Player player) {
bool checkHorizontally(Coordinate coordinate, Color player) {
var r = 0;
for (;
coordinate.col + r < 7 &&
Expand All @@ -59,7 +58,7 @@ class Board {
return false;
}

bool checkDiagonally(Coordinate coordinate, Player player) {
bool checkDiagonally(Coordinate coordinate, Color player) {
var ur = 0;
for (;
coordinate.col + ur < 7 &&
Expand Down Expand Up @@ -121,7 +120,7 @@ class Board {
return false;
}

bool checkVertically(Coordinate coordinate, Player player) {
bool checkVertically(Coordinate coordinate, Color player) {
var u = 0;
for (;
coordinate.row + u < 7 &&
Expand Down
18 changes: 9 additions & 9 deletions lib/cpu.dart
Expand Up @@ -5,20 +5,20 @@ import 'coordinate.dart';
import 'match_page.dart';

abstract class Cpu {
final Player player;
final Color color;
final Random _random = Random(DateTime.now().millisecond);

Cpu(this.player);
Cpu(this.color);

Player get otherPlayer => player == Player.RED ? Player.YELLOW : Player.RED;
Color get otherPlayer => color == Color.RED ? Color.YELLOW : Color.RED;

Future<int> chooseCol(Board board);
}

class DumbCpu extends Cpu {
DumbCpu(Player player) : super(player);
DumbCpu(Color player) : super(player);

Player get otherPlayer => player == Player.RED ? Player.YELLOW : Player.RED;
Color get otherPlayer => color == Color.RED ? Color.YELLOW : Color.RED;

@override
Future<int> chooseCol(Board board) async {
Expand All @@ -33,7 +33,7 @@ class DumbCpu extends Cpu {
}

class HarderCpu extends Cpu {
HarderCpu(Player player) : super(player);
HarderCpu(Color player) : super(player);

@override
Future<int> chooseCol(Board board) async {
Expand All @@ -55,8 +55,8 @@ class HarderCpu extends Cpu {

final coordinate = Coordinate(i, target);

boardCopy.setBox(coordinate, player);
if (boardCopy.checkWinner(coordinate, player)) {
boardCopy.setBox(coordinate, color);
if (boardCopy.checkWinner(coordinate, color)) {
scores[i] += deepness / (step + 1);
continue;
}
Expand Down Expand Up @@ -101,7 +101,7 @@ class HarderCpu extends Cpu {
}

class HardestCpu extends HarderCpu {
HardestCpu(Player player) : super(player);
HardestCpu(Color player) : super(player);

@override
Future<int> chooseCol(Board board) async {
Expand Down
8 changes: 4 additions & 4 deletions lib/cpu_level_page.dart
Expand Up @@ -31,8 +31,8 @@ class CpuLevelPage extends StatelessWidget {
'/match',
arguments: {
'mode': Mode.PVC,
'cpu': DumbCpu(
Random().nextBool() ? Player.RED : Player.YELLOW),
'cpu':
DumbCpu(Random().nextBool() ? Color.RED : Color.YELLOW),
},
);
},
Expand All @@ -53,7 +53,7 @@ class CpuLevelPage extends StatelessWidget {
arguments: {
'mode': Mode.PVC,
'cpu': HarderCpu(
Random().nextBool() ? Player.RED : Player.YELLOW),
Random().nextBool() ? Color.RED : Color.YELLOW),
},
);
},
Expand All @@ -74,7 +74,7 @@ class CpuLevelPage extends StatelessWidget {
arguments: {
'mode': Mode.PVC,
'cpu': HardestCpu(
Random().nextBool() ? Player.RED : Player.YELLOW),
Random().nextBool() ? Color.RED : Color.YELLOW),
},
);
},
Expand Down
4 changes: 2 additions & 2 deletions lib/game_chip.dart
Expand Up @@ -10,7 +10,7 @@ class GameChip extends StatelessWidget {
}) : super(key: key);

final Animation<double> translation;
final Player color;
final Color color;

@override
Widget build(BuildContext context) {
Expand All @@ -25,7 +25,7 @@ class GameChip extends StatelessWidget {
width: 40,
child: Material(
shape: CircleBorder(),
color: color == Player.RED ? Colors.red : Colors.yellow,
color: color == Color.RED ? Colors.red : Colors.yellow,
),
),
);
Expand Down
2 changes: 1 addition & 1 deletion lib/home_page.dart
Expand Up @@ -65,7 +65,7 @@ class HomePage extends StatelessWidget {
),
onPressed: () {
final harderCpu =
HarderCpu(Random().nextBool() ? Player.RED : Player.YELLOW);
HarderCpu(Random().nextBool() ? Color.RED : Color.YELLOW);
Navigator.pushNamed(
context,
'/match',
Expand Down
28 changes: 14 additions & 14 deletions lib/match_page.dart
Expand Up @@ -8,7 +8,7 @@ import 'cpu.dart';
import 'game_chip.dart';
import 'hole_painter.dart';

enum Player {
enum Color {
YELLOW,
RED,
}
Expand Down Expand Up @@ -37,8 +37,8 @@ class MatchPage extends StatefulWidget {

class _MatchPageState extends State<MatchPage> with TickerProviderStateMixin {
final board = Board();
Player turn;
Player winner;
Color turn;
Color winner;

List<List<Animation<double>>> translations = List.generate(
7,
Expand Down Expand Up @@ -81,7 +81,7 @@ class _MatchPageState extends State<MatchPage> with TickerProviderStateMixin {
padding: const EdgeInsets.all(32.0),
child: winner != null
? Text(
'${winner == Player.RED ? 'RED' : 'YELLOW'} WINS',
'${winner == Color.RED ? 'RED' : 'YELLOW'} WINS',
textAlign: TextAlign.center,
style: Theme.of(context)
.textTheme
Expand All @@ -91,7 +91,7 @@ class _MatchPageState extends State<MatchPage> with TickerProviderStateMixin {
: Column(
children: <Widget>[
Text(
'${turn == Player.RED ? 'RED' : 'YELLOW'} SPEAKS',
'${turn == Color.RED ? 'RED' : 'YELLOW'} SPEAKS',
textAlign: TextAlign.center,
style: Theme.of(context)
.textTheme
Expand All @@ -117,19 +117,19 @@ class _MatchPageState extends State<MatchPage> with TickerProviderStateMixin {
String name;

if (widget.mode == Mode.PVC) {
if (turn == widget.cpu.player) {
if (turn == widget.cpu.color) {
name = 'CPU - ${widget.cpu.toString()}';
} else {
name = 'USER';
}
} else if (widget.mode == Mode.PVP) {
if (turn == Player.RED) {
if (turn == Color.RED) {
name = 'PLAYER1';
} else {
name = 'PLAYER2';
}
} else {
if (turn == widget.cpu.player) {
if (turn == widget.cpu.color) {
name = 'CPU1 - ${widget.cpu.toString()}';
} else {
name = 'CPU2 - ${widget.cpu2.toString()}';
Expand All @@ -146,11 +146,11 @@ class _MatchPageState extends State<MatchPage> with TickerProviderStateMixin {
void initState() {
super.initState();
turn = widget.cpu?.otherPlayer ??
(Random().nextBool() ? Player.RED : Player.YELLOW);
if (widget.mode == Mode.PVC && turn == widget.cpu.player) {
(Random().nextBool() ? Color.RED : Color.YELLOW);
if (widget.mode == Mode.PVC && turn == widget.cpu.color) {
cpuMove(widget.cpu);
} else if (widget.mode == Mode.DEMO) {
if (turn == widget.cpu.player) {
if (turn == widget.cpu.color) {
cpuMove(widget.cpu);
} else {
cpuMove(widget.cpu2);
Expand Down Expand Up @@ -225,7 +225,7 @@ class _MatchPageState extends State<MatchPage> with TickerProviderStateMixin {
putChip(col);

if (winner == null && widget.mode == Mode.DEMO) {
if (turn == widget.cpu.player) {
if (turn == widget.cpu.color) {
cpuMove(widget.cpu);
} else {
cpuMove(widget.cpu2);
Expand Down Expand Up @@ -253,7 +253,7 @@ class _MatchPageState extends State<MatchPage> with TickerProviderStateMixin {
if (mounted) {
setState(() {
board.setBox(Coordinate(col, target), turn);
turn = turn == Player.RED ? Player.YELLOW : Player.RED;
turn = turn == Color.RED ? Color.YELLOW : Color.RED;
});
}

Expand All @@ -277,7 +277,7 @@ class _MatchPageState extends State<MatchPage> with TickerProviderStateMixin {
}
}

void showWinnerDialog(BuildContext context, Player player) {
void showWinnerDialog(BuildContext context, Color player) {
setState(() {
winner = player;
});
Expand Down
7 changes: 7 additions & 0 deletions lib/player.dart
@@ -0,0 +1,7 @@
import 'package:flutterfiar/match_page.dart';

abstract class Player {
final Color player;

Player(this.player);
}

0 comments on commit 2b110c6

Please sign in to comment.