use crate::core::{Card, deck::Deck};
pub const TRICKS: usize = 10;
pub trait TrickTakingGame {
type CardType: Card;
fn determine_taker(cards: &[Self::CardType; PLAYERS], first_to_play: PlayerId) -> PlayerId;
fn score_hand(hand: &Hand<Self>) -> (u8, u8)
where
Self: Sized;
fn is_game_over(scores: (u8, u8)) -> bool;
fn hand_size(&self) -> usize {
10
}
fn deck() -> Deck<Self::CardType>;
}
pub mod player;
pub use player::{PLAYERS, Player, PlayerId};
pub mod trick;
pub use trick::{OngoingTrick, Trick};
pub mod hand;
pub use hand::{Hand, OngoingHand};