chironaut 0.3.5

A poker game library for Texas Hold'em and other poker variants
Documentation
use chironaut::{
    game::Game,
    rules::GameRules,
};

fn main() {
    // Create a No-Limit Hold'em game with 10/20 blinds
    let rules = GameRules::nlhe(10, 20);
    let mut game = Game::new(rules);
    
    println!("=== SEAT SELECTION EXAMPLE ===\n");
    
    // Show available seats
    println!("Available seats: {:?}", game.get_available_seats());
    
    // Add players to specific seats
    println!("\nAdding players to specific seats...");
    
    // Add Alice to seat 3
    match game.add_player_to_seat("Alice".to_string(), 1000, 3) {
        Ok(id) => println!("  Added Alice to seat 3 with ID {}", id),
        Err(e) => println!("  Error: {}", e),
    }
    
    // Add Bob to seat 7
    match game.add_player_to_seat("Bob".to_string(), 1000, 7) {
        Ok(id) => println!("  Added Bob to seat 7 with ID {}", id),
        Err(e) => println!("  Error: {}", e),
    }
    
    // Try to add Charlie to an occupied seat (should fail)
    match game.add_player_to_seat("Charlie".to_string(), 1000, 3) {
        Ok(id) => println!("  Added Charlie to seat 3 with ID {}", id),
        Err(e) => println!("  Error adding Charlie to seat 3: {}", e),
    }
    
    // Show updated available seats
    println!("\nAvailable seats after adding players:");
    println!("  {:?}", game.get_available_seats());
    
    // Add Diana to the first available seat
    match game.add_player("Diana".to_string(), 1000) {
        Ok(id) => {
            let seat = game.players.iter().find(|p| p.id == id).unwrap().seat_position;
            println!("\nAdded Diana to first available seat: {} (ID: {})", seat, id);
        },
        Err(e) => println!("\nError adding Diana: {}", e),
    }
    
    // List all players and their seats
    println!("\nCurrent players:");
    for player in &game.players {
        println!("  {} (ID: {}) at seat {}", player.name, player.id, player.seat_position);
    }
    
    // Remove a player
    println!("\nRemoving Bob (ID: 1)...");
    match game.remove_player(1) {
        Ok(_) => println!("  Bob removed successfully"),
        Err(e) => println!("  Error: {}", e),
    }
    
    // Show final available seats
    println!("\nFinal available seats:");
    println!("  {:?}", game.get_available_seats());
    
    // List remaining players
    println!("\nRemaining players:");
    for player in &game.players {
        println!("  {} (ID: {}) at seat {}", player.name, player.id, player.seat_position);
    }
}