flag to show card count
This commit is contained in:
parent
48327efe20
commit
1106f1484f
2 changed files with 27 additions and 9 deletions
|
|
@ -127,6 +127,14 @@ impl Table {
|
||||||
self.player_chips
|
self.player_chips
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn count(&self) -> i16 {
|
||||||
|
self.count
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn shoe_count(&self) -> usize {
|
||||||
|
self.shoe.len()
|
||||||
|
}
|
||||||
|
|
||||||
/// Reset the shoe - combine shoe and discard and shuffle
|
/// Reset the shoe - combine shoe and discard and shuffle
|
||||||
fn shuffle(&mut self) {
|
fn shuffle(&mut self) {
|
||||||
self.shoe.append(&mut self.discard);
|
self.shoe.append(&mut self.discard);
|
||||||
|
|
|
||||||
28
src/main.rs
28
src/main.rs
|
|
@ -13,7 +13,7 @@ fn main() -> anyhow::Result<()> {
|
||||||
// TODO: Use anyhow for error handling, get rid of unwraps
|
// TODO: Use anyhow for error handling, get rid of unwraps
|
||||||
let args = Args::parse();
|
let args = Args::parse();
|
||||||
match args.mode {
|
match args.mode {
|
||||||
Mode::Interactive => interactive_play(),
|
Mode::Interactive => interactive_play(args.show_count),
|
||||||
Mode::OldMan => old_man(),
|
Mode::OldMan => old_man(),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -29,9 +29,12 @@ enum Mode {
|
||||||
struct Args {
|
struct Args {
|
||||||
#[arg(long, default_value = "interactive")]
|
#[arg(long, default_value = "interactive")]
|
||||||
mode: Mode,
|
mode: Mode,
|
||||||
|
|
||||||
|
#[arg(long, default_value_t = false)]
|
||||||
|
show_count: bool,
|
||||||
}
|
}
|
||||||
|
|
||||||
fn interactive_play() -> anyhow::Result<()> {
|
fn interactive_play(show_count: bool) -> anyhow::Result<()> {
|
||||||
// TODO: Make a way to reset bank
|
// TODO: Make a way to reset bank
|
||||||
let term = Term::stdout();
|
let term = Term::stdout();
|
||||||
let mut bank: u32 = load_bank()?.unwrap_or(1_000);
|
let mut bank: u32 = load_bank()?.unwrap_or(1_000);
|
||||||
|
|
@ -40,7 +43,11 @@ fn interactive_play() -> anyhow::Result<()> {
|
||||||
let mut last_bet: Option<u32> = None;
|
let mut last_bet: Option<u32> = None;
|
||||||
|
|
||||||
loop {
|
loop {
|
||||||
println!("\nMoney in the bank: {bank}");
|
println!("\nMoney in the bank: ${bank}");
|
||||||
|
if show_count {
|
||||||
|
println!("Card count: {}", table.count());
|
||||||
|
println!("Cards in shoe: {}", table.shoe_count());
|
||||||
|
}
|
||||||
|
|
||||||
// Bet checking loop
|
// Bet checking loop
|
||||||
let mut bet: u32;
|
let mut bet: u32;
|
||||||
|
|
@ -77,11 +84,7 @@ fn interactive_play() -> anyhow::Result<()> {
|
||||||
println!();
|
println!();
|
||||||
|
|
||||||
let mut turn = table.deal_hand(bet);
|
let mut turn = table.deal_hand(bet);
|
||||||
if turn.shuffled {
|
let split_turn = interactive_play_turn(&mut turn, &mut table, show_count)?;
|
||||||
println!("Deck was shuffled");
|
|
||||||
}
|
|
||||||
|
|
||||||
let split_turn = interactive_play_turn(&mut turn, &mut table)?;
|
|
||||||
if split_turn.is_none() {
|
if split_turn.is_none() {
|
||||||
table.dealers_turn()?;
|
table.dealers_turn()?;
|
||||||
let result = table.results(turn)?;
|
let result = table.results(turn)?;
|
||||||
|
|
@ -89,7 +92,7 @@ fn interactive_play() -> anyhow::Result<()> {
|
||||||
print_result(&result);
|
print_result(&result);
|
||||||
} else {
|
} else {
|
||||||
let mut split_turn = split_turn.unwrap();
|
let mut split_turn = split_turn.unwrap();
|
||||||
interactive_play_turn(&mut split_turn, &mut table)?;
|
interactive_play_turn(&mut split_turn, &mut table, show_count)?;
|
||||||
table.dealers_turn()?;
|
table.dealers_turn()?;
|
||||||
let result = table.results(turn)?;
|
let result = table.results(turn)?;
|
||||||
let split_result = table.results(split_turn)?;
|
let split_result = table.results(split_turn)?;
|
||||||
|
|
@ -117,6 +120,7 @@ fn interactive_play() -> anyhow::Result<()> {
|
||||||
fn interactive_play_turn(
|
fn interactive_play_turn(
|
||||||
turn: &mut PlayerTurn,
|
turn: &mut PlayerTurn,
|
||||||
table: &mut Table,
|
table: &mut Table,
|
||||||
|
show_count: bool,
|
||||||
) -> anyhow::Result<Option<PlayerTurn>> {
|
) -> anyhow::Result<Option<PlayerTurn>> {
|
||||||
let mut initial_play = !turn.was_split;
|
let mut initial_play = !turn.was_split;
|
||||||
let mut other_turn = None;
|
let mut other_turn = None;
|
||||||
|
|
@ -126,6 +130,12 @@ fn interactive_play_turn(
|
||||||
term.clear_screen()?;
|
term.clear_screen()?;
|
||||||
let hand = turn.player_hand();
|
let hand = turn.player_hand();
|
||||||
|
|
||||||
|
if turn.shuffled {
|
||||||
|
println!("Deck was shuffled");
|
||||||
|
}
|
||||||
|
if show_count {
|
||||||
|
println!("Card count: {}", table.count());
|
||||||
|
}
|
||||||
println!("Your bet: ${}", turn.bet);
|
println!("Your bet: ${}", turn.bet);
|
||||||
println!("Dealer showing: {}", table.dealer_showing());
|
println!("Dealer showing: {}", table.dealer_showing());
|
||||||
println!("Your hand: {hand}");
|
println!("Your hand: {hand}");
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue