From 58b8ab9253dcd19a600c0e16470a7b9e7504168f Mon Sep 17 00:00:00 2001 From: Hyperling Date: Wed, 6 May 2026 14:59:15 -0700 Subject: [PATCH] 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). --- lib/main.dart | 40 +++++++++++++++++++++++++++++++++++++++- 1 file changed, 39 insertions(+), 1 deletion(-) diff --git a/lib/main.dart b/lib/main.dart index 71be37f..d6aad29 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -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 { 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 BOARD = []; @@ -250,32 +280,40 @@ List 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 {