mirror of
https://github.com/barelyprofessional/KfChatDotNet.git
synced 2026-05-02 04:22:04 -04:00
char[,] to char[][] (#73)
* Refactor KasinoMines into MinesCommand class char[,] to char[][] * Refactor KasinoMines class and update game logic char[,] to char[][]
This commit is contained in:
@@ -5,6 +5,7 @@ using KfChatDotNetBot.Models.DbModels;
|
|||||||
using KfChatDotNetBot.Settings;
|
using KfChatDotNetBot.Settings;
|
||||||
using NLog;
|
using NLog;
|
||||||
using StackExchange.Redis;
|
using StackExchange.Redis;
|
||||||
|
using System.Text.Json.Serialization;
|
||||||
|
|
||||||
namespace KfChatDotNetBot.Services;
|
namespace KfChatDotNetBot.Services;
|
||||||
|
|
||||||
@@ -19,7 +20,8 @@ public class KasinoMines
|
|||||||
{
|
{
|
||||||
public GamblerDbModel Creator { get; set; }
|
public GamblerDbModel Creator { get; set; }
|
||||||
public DateTimeOffset LastInteracted = DateTimeOffset.UtcNow;
|
public DateTimeOffset LastInteracted = DateTimeOffset.UtcNow;
|
||||||
public char[,] MinesBoard;
|
|
||||||
|
public char[][] MinesBoard;
|
||||||
public decimal Wager { get; set; }
|
public decimal Wager { get; set; }
|
||||||
public int Size { get; set; }
|
public int Size { get; set; }
|
||||||
public int Mines { get; set; }
|
public int Mines { get; set; }
|
||||||
@@ -60,7 +62,7 @@ public class KasinoMines
|
|||||||
{
|
{
|
||||||
for (int c = 0; c < Size; c++)
|
for (int c = 0; c < Size; c++)
|
||||||
{
|
{
|
||||||
if (MinesBoard[r, c] == 'M')
|
if (MinesBoard[r][ c] == 'M')
|
||||||
{
|
{
|
||||||
originalMine = (r, c);
|
originalMine = (r, c);
|
||||||
brek = true;
|
brek = true;
|
||||||
@@ -70,13 +72,13 @@ public class KasinoMines
|
|||||||
if (brek) break;
|
if (brek) break;
|
||||||
}
|
}
|
||||||
|
|
||||||
MinesBoard[coord.r, coord.c] = 'M';
|
MinesBoard[coord.r][ coord.c] = 'M';
|
||||||
if (originalMine.r == 11)
|
if (originalMine.r == 11)
|
||||||
{
|
{
|
||||||
_logger.Error("Rigboard failed to find a mine somehow?");
|
_logger.Error("Rigboard failed to find a mine somehow?");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
MinesBoard[originalMine.r, originalMine.c] = 'G';
|
MinesBoard[originalMine.r][ originalMine.c] = 'G';
|
||||||
|
|
||||||
}
|
}
|
||||||
public async Task Explode((int r, int c) mineLocation, SentMessageTrackerModel msg)
|
public async Task Explode((int r, int c) mineLocation, SentMessageTrackerModel msg)
|
||||||
@@ -173,7 +175,7 @@ public class KasinoMines
|
|||||||
{
|
{
|
||||||
value += "⬜";
|
value += "⬜";
|
||||||
}
|
}
|
||||||
else if (MinesBoard[r, c] == 'M') value += "💣";
|
else if (MinesBoard[r][ c] == 'M') value += "💣";
|
||||||
else value += "💎";
|
else value += "💎";
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -184,9 +186,11 @@ public class KasinoMines
|
|||||||
return value;
|
return value;
|
||||||
}
|
}
|
||||||
|
|
||||||
public char[,] CreateBoard()
|
public char[][] CreateBoard()
|
||||||
{
|
{
|
||||||
char[,] board = new char[Size, Size];
|
char[][] board = new char[Size][];
|
||||||
|
for (int i = 0; i < Size; i++) board[i] = new char[Size];
|
||||||
|
|
||||||
List<(int r, int c)> minesCoords = new List<(int r, int c)>();
|
List<(int r, int c)> minesCoords = new List<(int r, int c)>();
|
||||||
(int r, int c) coord;
|
(int r, int c) coord;
|
||||||
int counter = 0;
|
int counter = 0;
|
||||||
@@ -204,8 +208,8 @@ public class KasinoMines
|
|||||||
|
|
||||||
foreach (var coords in minesCoords)
|
foreach (var coords in minesCoords)
|
||||||
{
|
{
|
||||||
if (gems) board[coords.r, coords.c] = 'G';
|
if (gems) board[coords.r][ coords.c] = 'G';
|
||||||
else board[coords.r, coords.c] = 'M';
|
else board[coords.r][ coords.c] = 'M';
|
||||||
}
|
}
|
||||||
for (int r = 0; r < Size; r++)
|
for (int r = 0; r < Size; r++)
|
||||||
{
|
{
|
||||||
@@ -213,11 +217,11 @@ public class KasinoMines
|
|||||||
{
|
{
|
||||||
if (gems)
|
if (gems)
|
||||||
{
|
{
|
||||||
if (!(board[r,c] == 'G')) board[r, c] = 'M';
|
if (!(board[r][c] == 'G')) board[r][ c] = 'M';
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (!(board[r,c] == 'M')) board[r, c] = 'G';
|
if (!(board[r][c] == 'M')) board[r][ c] = 'G';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -327,7 +331,7 @@ public class KasinoMines
|
|||||||
{
|
{
|
||||||
for (int c = 0; c < game.Size; c++)
|
for (int c = 0; c < game.Size; c++)
|
||||||
{
|
{
|
||||||
if (game.MinesBoard[r,c] == 'G' && !game.BetsPlaced.Contains((r, c))) numGems++;
|
if (game.MinesBoard[r][c] == 'G' && !game.BetsPlaced.Contains((r, c))) numGems++;
|
||||||
else if (!game.BetsPlaced.Contains((r, c))) validBets.Add((r, c));
|
else if (!game.BetsPlaced.Contains((r, c))) validBets.Add((r, c));
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -387,7 +391,7 @@ public class KasinoMines
|
|||||||
{
|
{
|
||||||
for (int c = 0; c < game.Size; c++)
|
for (int c = 0; c < game.Size; c++)
|
||||||
{
|
{
|
||||||
if (game.MinesBoard[r,c] == 'G' && !game.BetsPlaced.Contains((r, c))) numGems++;
|
if (game.MinesBoard[r][c] == 'G' && !game.BetsPlaced.Contains((r, c))) numGems++;
|
||||||
else if (!game.BetsPlaced.Contains((r, c))) validBets.Add((r, c));
|
else if (!game.BetsPlaced.Contains((r, c))) validBets.Add((r, c));
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -430,7 +434,7 @@ public class KasinoMines
|
|||||||
foreach (var coord in bets) //the main portion of the game
|
foreach (var coord in bets) //the main portion of the game
|
||||||
{
|
{
|
||||||
await Task.Delay(100);
|
await Task.Delay(100);
|
||||||
if (game.MinesBoard[coord.r, coord.c] == 'M')
|
if (game.MinesBoard[coord.r][ coord.c] == 'M')
|
||||||
{
|
{
|
||||||
game.BetsPlaced.Add(coord);
|
game.BetsPlaced.Add(coord);
|
||||||
await _kfChatBot.KfClient.EditMessageAsync(msg.ChatMessageId!.Value, game.ToString());
|
await _kfChatBot.KfClient.EditMessageAsync(msg.ChatMessageId!.Value, game.ToString());
|
||||||
|
|||||||
Reference in New Issue
Block a user