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:
2026-05-06 14:59:15 -07:00
parent 32bf2353d5
commit 58b8ab9253
+39 -1
View File
@@ -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 {