generated from me/template-mit
Get some decent logging going so we can see what's actually going on. Array ios working great; UI is not being redrawn based on the variables (like in Android).
This commit is contained in:
+39
-1
@@ -1,5 +1,22 @@
|
|||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
|
|
||||||
|
//import 'package:logger/logger.dart';
|
||||||
|
//final logger = Logger();
|
||||||
|
|
||||||
|
import 'dart:io';
|
||||||
|
|
||||||
|
class MyLogger {
|
||||||
|
void d(String output, {String method = ""}) {
|
||||||
|
stdout.write(DateTime.now());
|
||||||
|
if (method.isNotEmpty) {
|
||||||
|
stdout.write(" - $method");
|
||||||
|
}
|
||||||
|
print(": $output");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
final logger = MyLogger();
|
||||||
|
|
||||||
void main() {
|
void main() {
|
||||||
runApp(const MainApp());
|
runApp(const MainApp());
|
||||||
}
|
}
|
||||||
@@ -123,6 +140,9 @@ class _BoardSpotState extends State<BoardSpot> {
|
|||||||
setState(() {
|
setState(() {
|
||||||
if (widget.text == "Reset") {
|
if (widget.text == "Reset") {
|
||||||
gameReset();
|
gameReset();
|
||||||
|
}
|
||||||
|
if (widget.spot >= 12) {
|
||||||
|
null;
|
||||||
} else {
|
} else {
|
||||||
gameTurn(widget.spot, BOARD[widget.spot]);
|
gameTurn(widget.spot, BOARD[widget.spot]);
|
||||||
}
|
}
|
||||||
@@ -213,9 +233,14 @@ marbleRemove (int spot, int marbles) {
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
void gameTurn(int spot, int marbles) {
|
void gameTurn(int spot, int marbles) {
|
||||||
|
logger.d(method: "gameTurn", "spot = $spot, marbles = $marbles");
|
||||||
|
if ((boolTopPlayerTurn && spot <= 5) || (!boolTopPlayerTurn && spot >= 6)) {
|
||||||
|
logger.d("Not this player's turn, try again.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
marbleRemove(spot, marbles);
|
marbleRemove(spot, marbles);
|
||||||
while (marbles > 0) {
|
while (marbles > 0) {
|
||||||
if (spot == 6 && !boolTopPlayerTurn) {
|
if (spot == 5 && !boolTopPlayerTurn) {
|
||||||
marbleReward(boolTopPlayerTurn, 1);
|
marbleReward(boolTopPlayerTurn, 1);
|
||||||
marbles--;
|
marbles--;
|
||||||
} else if (spot == 11 && boolTopPlayerTurn) {
|
} else if (spot == 11 && boolTopPlayerTurn) {
|
||||||
@@ -223,6 +248,10 @@ void gameTurn(int spot, int marbles) {
|
|||||||
marbles--;
|
marbles--;
|
||||||
}
|
}
|
||||||
if (marbles == 0) {
|
if (marbles == 0) {
|
||||||
|
logger.d(
|
||||||
|
method: "gameTurn",
|
||||||
|
"Landed in player hole, go again! board = $BOARD, score = $SCORE",
|
||||||
|
);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -243,6 +272,7 @@ void gameTurn(int spot, int marbles) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
boolTopPlayerTurn = !boolTopPlayerTurn;
|
boolTopPlayerTurn = !boolTopPlayerTurn;
|
||||||
|
logger.d(method: "gameTurn", "Finished, board = $BOARD, score = $SCORE");
|
||||||
}
|
}
|
||||||
|
|
||||||
List<int> BOARD = [];
|
List<int> BOARD = [];
|
||||||
@@ -250,32 +280,40 @@ List<int> SCORE = [];
|
|||||||
bool boolTopPlayerTurn = false;
|
bool boolTopPlayerTurn = false;
|
||||||
|
|
||||||
void gameReset() {
|
void gameReset() {
|
||||||
|
logger.d(method: "gameReset", "Started");
|
||||||
BOARD = [];
|
BOARD = [];
|
||||||
for (int i = 0; i < 12; i++) {
|
for (int i = 0; i < 12; i++) {
|
||||||
BOARD.add(4);
|
BOARD.add(4);
|
||||||
}
|
}
|
||||||
SCORE = [0, 0];
|
SCORE = [0, 0];
|
||||||
|
logger.d(method: "gameReset", "Finished");
|
||||||
}
|
}
|
||||||
|
|
||||||
void marbleAdd(int spot) {
|
void marbleAdd(int spot) {
|
||||||
|
logger.d(method: "marbleAdd[spot=$spot]", "Started");
|
||||||
BOARD[spot]++;
|
BOARD[spot]++;
|
||||||
|
logger.d(method: "marbleAdd[spot=$spot]", "Finished");
|
||||||
}
|
}
|
||||||
|
|
||||||
void marbleReward(bool boolTopPlayer, int marbles) {
|
void marbleReward(bool boolTopPlayer, int marbles) {
|
||||||
|
logger.d(method: "marbleReward[$boolTopPlayer, $marbles]", "Started");
|
||||||
if (boolTopPlayer) {
|
if (boolTopPlayer) {
|
||||||
SCORE[0] += marbles;
|
SCORE[0] += marbles;
|
||||||
} else {
|
} else {
|
||||||
SCORE[1] += marbles;
|
SCORE[1] += marbles;
|
||||||
}
|
}
|
||||||
|
logger.d(method: "marbleReward[$boolTopPlayer, $marbles]", "Finished");
|
||||||
}
|
}
|
||||||
|
|
||||||
void marbleRemove(int spot, int marbles) {
|
void marbleRemove(int spot, int marbles) {
|
||||||
|
logger.d(method: "marbleRemove", "Started");
|
||||||
// This should always be taking it down to 0, but doing the math anyways
|
// This should always be taking it down to 0, but doing the math anyways
|
||||||
// just t make sure nothing wonky is going on, like 4 being removed then
|
// just t make sure nothing wonky is going on, like 4 being removed then
|
||||||
// 5 being moved across the board or something. Which would likely be unrelated
|
// 5 being moved across the board or something. Which would likely be unrelated
|
||||||
// code elsewhere, but oh well.
|
// code elsewhere, but oh well.
|
||||||
|
|
||||||
BOARD[spot] -= marbles;
|
BOARD[spot] -= marbles;
|
||||||
|
logger.d(method: "marbleRemove", "Finished");
|
||||||
}
|
}
|
||||||
|
|
||||||
class ButtonReset extends StatelessWidget {
|
class ButtonReset extends StatelessWidget {
|
||||||
|
|||||||
Reference in New Issue
Block a user