This repository has been archived by the owner on Feb 1, 2025. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathKnuckleBonesConsoleUI.cs
97 lines (85 loc) · 3.48 KB
/
KnuckleBonesConsoleUI.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
using System;
using System.Collections.Generic;
using System.Linq;
namespace Wipeseals
{
public class KnuckleBonesConsoleUI
{
public KnuckleBonesCore KnuckleBonesCore { get; internal set; }
public KnuckleBonesConsoleUI()
{
KnuckleBonesCore = new KnuckleBonesCore();
Console.WriteLine("Welcome to KnuckleBones!");
}
public void DisplayGameBoard()
{
Console.WriteLine($"Turn: {KnuckleBonesCore.Turn} Player: {KnuckleBonesCore.CurrentPlayer}");
Console.WriteLine("=========================================");
Console.WriteLine("Player1 Score: " + KnuckleBonesCore.GetPlayerScore(0));
Console.WriteLine("Player2 Score: " + KnuckleBonesCore.GetPlayerScore(1));
Console.WriteLine("=========================================");
Console.WriteLine(" Player 1 | Player 2");
Console.WriteLine("===========|===========");
Console.WriteLine(" 0 | 1 | 2 | 0 | 1 | 2 ");
Console.WriteLine("===========|===========");
for (int depth = 0; depth < KnuckleBonesCore.BOARD_DEPTH; depth++)
{
Console.Write(" ");
for (int player = 0; player < KnuckleBonesCore.PLAYER_NUM; player++)
{
for (int x = 0; x < KnuckleBonesCore.BOARD_WIDTH; x++)
{
Console.Write(KnuckleBonesCore.GameBoard[player, x, depth] == null ? " " : KnuckleBonesCore.GameBoard[player, x, depth]);
Console.Write(" | ");
}
}
Console.WriteLine();
}
}
public KnuckleBonesCore.Result? PlayGame()
{
KnuckleBonesCore.Reset();
while (true)
{
DisplayGameBoard();
var diceNumber = KnuckleBonesCore.RollDice();
Console.WriteLine($"Player {KnuckleBonesCore.CurrentPlayer + 1} rolled a {diceNumber}.");
Console.WriteLine("Enter the column number to place your piece: ");
var input = Console.ReadLine();
if (input == null)
{
Console.WriteLine("Input cannot be null. Try again.");
continue;
}
var column = int.Parse(input);
if (!KnuckleBonesCore.PutDice(KnuckleBonesCore.CurrentPlayer, diceNumber, column))
{
Console.WriteLine("Invalid move. Try again.");
continue;
}
if (KnuckleBonesCore.IsGameOver())
{
// Game Over
DisplayGameBoard();
var result = KnuckleBonesCore.GetWinner();
if (result == KnuckleBonesCore.Result.Player0Win)
{
Console.WriteLine("");
Console.WriteLine("Player 1 wins!");
}
else if (result == KnuckleBonesCore.Result.Player1Win)
{
Console.WriteLine("");
Console.WriteLine("Player 2 wins!");
}
else
{
Console.WriteLine("");
Console.WriteLine("Draw!");
}
return result;
}
}
}
}
}