Files
Blackjack/BlackJ/Game.cs
2025-09-16 10:22:07 +02:00

251 lines
7.4 KiB
C#

using BlackJack;
using System;
using System.Collections.Generic;
using System.Diagnostics.Eventing.Reader;
using System.Linq;
using System.Runtime.Remoting.Messaging;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
namespace BlackJack
{
public class Game
{
readonly Player player = new Player();
readonly Dealer dealer = new Dealer();
readonly Shop shop = new Shop();
readonly Art art = new Art();
void DisplayBalance()
{
Console.WriteLine("Balance: " + player.cash + "$");
Console.WriteLine("_____________________________");
Console.WriteLine();
}
public void Initialize()
{
Console.Clear();
Console.WriteLine("Welcome to BlackJack)");
Console.WriteLine("You start with " + player.cash + "$");
Console.WriteLine();
Console.WriteLine("'Enter' to continue");
Console.ReadLine();
Menu();
}
public void Menu()
{
Console.Clear();
DisplayBalance();
Console.WriteLine("> Enter round (1)");
Console.WriteLine("> Shop (2)");
Console.WriteLine("> Inventory (3)");
string input = Console.ReadLine();
if (input == "1")
{
NewRound();
}
else if (input == "2")
{
}
else if (input == "3")
{
}
else
{
Console.WriteLine("Invalid input. Press 'Enter' to try again");
Console.ReadLine();
Console.Clear();
Initialize();
}
}
public void NewRound()
{
Console.Clear();
if (player.cash <= 0)
{
Console.WriteLine("You went bankrupt!");
Environment.Exit(0);
}
Deck deck = new Deck();
player.RemoveHand();
dealer.RemoveHand();
double bet;
deck.Shuffle();
player.DrawCard(deck);
player.DrawCard(deck);
dealer.DrawCard(deck);
void Bet()
{
Console.WriteLine("You have " + player.cash + "$");
Console.WriteLine("How much do you want to bet?");
string input = Console.ReadLine();
if (double.TryParse(input, out bet))
{
if (bet <= player.cash && bet > 0)
{
player.cash -= bet;
}
else if (bet == 676767)
{
double cheat;
Console.WriteLine("Enter Cheat");
input = Console.ReadLine();
if (double.TryParse(input, out cheat))
{
player.cash += cheat;
}
Console.Clear();
Bet();
}
else
{
Console.WriteLine("Invalid amount. Press 'Enter' to try again");
Console.ReadLine();
Console.Clear();
Bet();
}
}
else
{
Console.WriteLine("Invalid amount. Press 'Enter' to try again");
Console.ReadLine();
Console.Clear();
Bet();
}
}
Bet();
Console.Clear();
void DisplayStats()
{
Console.WriteLine("Balance: " + player.cash + "$");
Console.WriteLine("Bet: " + bet + "$");
Console.WriteLine("_____________________________");
Console.WriteLine();
}
void PlayersTurn()
{
DisplayStats();
Console.WriteLine("Hand: " + player.GetHandValue());
Console.WriteLine();
Console.WriteLine("Dealer's first card: " + dealer.GetHandValue());
Console.WriteLine();
Console.WriteLine("Hit (h) or Stand (s)?");
string input = Console.ReadLine();
Console.Clear();
DisplayStats();
if (input == "h")
{
Card card = player.DrawCard(deck);
Console.WriteLine("You received " + card.Number + " " + card.Suit);
if (player.GetHandValue() > 21)
{
Bust();
}
Console.WriteLine("Press 'Enter' to continue.");
Console.ReadLine();
Console.Clear();
PlayersTurn();
}
else if (input == "s")
{
Console.WriteLine("You chose to stand.");
DealersTurn();
}
else
{
Console.WriteLine("Invalid input. Press 'Enter' to try again");
Console.ReadLine();
Console.Clear();
PlayersTurn();
}
}
PlayersTurn();
void InputNewRound()
{
Console.WriteLine();
Console.WriteLine("Press 'Enter' to enter menu.");
Console.ReadLine();
Menu();
}
void DealersTurn()
{
while (dealer.GetHandValue() < 17)
{
dealer.DrawCard(deck);
}
int playerHand = player.GetHandValue();
int dealerHand = dealer.GetHandValue();
if (playerHand > dealerHand || dealerHand > 21)
{
Console.WriteLine("You won.");
Console.WriteLine("Your hand: " + playerHand);
Console.WriteLine("Dealer's hand: " + dealerHand);
Console.WriteLine("+" + bet * 2 + "$");
player.cash += bet * 2;
InputNewRound();
}
else if (playerHand < dealerHand)
{
Console.WriteLine("You lost.");
Console.WriteLine("Your hand: " + playerHand);
Console.WriteLine("Dealer's hand: " + dealerHand);
InputNewRound();
}
else
{
Console.WriteLine("It's a tie!");
Console.WriteLine("Your hand: " + playerHand);
Console.WriteLine("Dealer's hand: " + dealerHand);
Console.WriteLine("+" + bet + "$");
player.cash += bet;
InputNewRound();
}
}
void Bust()
{
Console.WriteLine("You bust! Hand: " + player.GetHandValue());
InputNewRound();
}
}
}
}