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: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() {
|
||||
runApp(const MainApp());
|
||||
}
|
||||
@@ -123,6 +140,9 @@ class _BoardSpotState extends State<BoardSpot> {
|
||||
setState(() {
|
||||
if (widget.text == "Reset") {
|
||||
gameReset();
|
||||
}
|
||||
if (widget.spot >= 12) {
|
||||
null;
|
||||
} else {
|
||||
gameTurn(widget.spot, BOARD[widget.spot]);
|
||||
}
|
||||
@@ -213,9 +233,14 @@ marbleRemove (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);
|
||||
while (marbles > 0) {
|
||||
if (spot == 6 && !boolTopPlayerTurn) {
|
||||
if (spot == 5 && !boolTopPlayerTurn) {
|
||||
marbleReward(boolTopPlayerTurn, 1);
|
||||
marbles--;
|
||||
} else if (spot == 11 && boolTopPlayerTurn) {
|
||||
@@ -223,6 +248,10 @@ void gameTurn(int spot, int marbles) {
|
||||
marbles--;
|
||||
}
|
||||
if (marbles == 0) {
|
||||
logger.d(
|
||||
method: "gameTurn",
|
||||
"Landed in player hole, go again! board = $BOARD, score = $SCORE",
|
||||
);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -243,6 +272,7 @@ void gameTurn(int spot, int marbles) {
|
||||
}
|
||||
|
||||
boolTopPlayerTurn = !boolTopPlayerTurn;
|
||||
logger.d(method: "gameTurn", "Finished, board = $BOARD, score = $SCORE");
|
||||
}
|
||||
|
||||
List<int> BOARD = [];
|
||||
@@ -250,32 +280,40 @@ List<int> SCORE = [];
|
||||
bool boolTopPlayerTurn = false;
|
||||
|
||||
void gameReset() {
|
||||
logger.d(method: "gameReset", "Started");
|
||||
BOARD = [];
|
||||
for (int i = 0; i < 12; i++) {
|
||||
BOARD.add(4);
|
||||
}
|
||||
SCORE = [0, 0];
|
||||
logger.d(method: "gameReset", "Finished");
|
||||
}
|
||||
|
||||
void marbleAdd(int spot) {
|
||||
logger.d(method: "marbleAdd[spot=$spot]", "Started");
|
||||
BOARD[spot]++;
|
||||
logger.d(method: "marbleAdd[spot=$spot]", "Finished");
|
||||
}
|
||||
|
||||
void marbleReward(bool boolTopPlayer, int marbles) {
|
||||
logger.d(method: "marbleReward[$boolTopPlayer, $marbles]", "Started");
|
||||
if (boolTopPlayer) {
|
||||
SCORE[0] += marbles;
|
||||
} else {
|
||||
SCORE[1] += marbles;
|
||||
}
|
||||
logger.d(method: "marbleReward[$boolTopPlayer, $marbles]", "Finished");
|
||||
}
|
||||
|
||||
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
|
||||
// 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
|
||||
// code elsewhere, but oh well.
|
||||
|
||||
BOARD[spot] -= marbles;
|
||||
logger.d(method: "marbleRemove", "Finished");
|
||||
}
|
||||
|
||||
class ButtonReset extends StatelessWidget {
|
||||
|
||||
Reference in New Issue
Block a user