mirror of
https://github.com/coding-horror/basic-computer-games.git
synced 2026-01-07 02:24:33 -08:00
Reorganise classes
This commit is contained in:
64
71_Poker/csharp/Players/Human.cs
Normal file
64
71_Poker/csharp/Players/Human.cs
Normal file
@@ -0,0 +1,64 @@
|
||||
using Poker.Cards;
|
||||
|
||||
namespace Poker.Players;
|
||||
|
||||
internal class Human : Player
|
||||
{
|
||||
private readonly IReadWrite _io;
|
||||
|
||||
public Human(int bank, IReadWrite io)
|
||||
: base(bank)
|
||||
{
|
||||
HasWatch = true;
|
||||
_io = io;
|
||||
}
|
||||
|
||||
public bool HasWatch { get; set; }
|
||||
|
||||
public void DrawCards(Deck deck)
|
||||
{
|
||||
var count = _io.ReadNumber("How many cards do you want", 3, "You can't draw more than three cards.");
|
||||
if (count == 0) { return; }
|
||||
|
||||
_io.WriteLine("What are their numbers:");
|
||||
for (var i = 1; i <= count; i++)
|
||||
{
|
||||
Hand = Hand.Replace((int)_io.ReadNumber(), deck.DealCard());
|
||||
}
|
||||
|
||||
_io.WriteLine("Your new hand:");
|
||||
_io.Write(Hand);
|
||||
}
|
||||
|
||||
public bool IsBroke()
|
||||
{
|
||||
_io.WriteLine();
|
||||
_io.WriteLine("You can't bet with what you haven't got.");
|
||||
|
||||
if (Table.Computer.TryBuyWatch(this)) { return false; }
|
||||
|
||||
// The original program had some code about selling a tie tack, but due to a fault
|
||||
// in the logic the code was unreachable. I've omitted it in this port.
|
||||
|
||||
_io.WriteLine("Your wad is shot. So long, sucker!");
|
||||
return true;
|
||||
}
|
||||
|
||||
public void ReceiveWatch()
|
||||
{
|
||||
// In the original code the player does not pay any money to receive the watch back.
|
||||
HasWatch = true;
|
||||
}
|
||||
|
||||
public void SellWatch(int amount)
|
||||
{
|
||||
HasWatch = false;
|
||||
Balance += amount;
|
||||
}
|
||||
|
||||
public override void TakeWinnings()
|
||||
{
|
||||
_io.WriteLine("You win.");
|
||||
base.TakeWinnings();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user