use std::{io};
use spades::{Game, GameTransition, State, Card, Suit};
use rand::{thread_rng};
#[test]
#[allow(unused)]
fn main() {
let mut g = Game::new(uuid::Uuid::new_v4(),
[uuid::Uuid::new_v4(),
uuid::Uuid::new_v4(),
uuid::Uuid::new_v4(),
uuid::Uuid::new_v4()],
500, None);
g.play(GameTransition::Start);
println!("{:#?}", g);
while *g.get_state() != State::Completed {
let mut stdin = io::stdin();
let input = &mut String::new();
let mut rng = thread_rng();
if let State::Trick(_playerindex) = *g.get_state() {
assert!(g.get_current_hand().is_ok());
let mut hand = g.get_current_hand().ok().unwrap().clone();
let x = get_valid_card_index(*g.get_leading_suit().unwrap(), &hand);
g.play(GameTransition::Card(hand[x].clone()));
} else {
g.play(GameTransition::Bet(3));
}
}
assert_eq!(*g.get_state(), State::Completed);
}
pub fn get_valid_card_index(leading_suit: Suit, hand: &Vec<Card>) -> usize {
if hand.iter().any(|ref x| x.suit == leading_suit) && leading_suit != Suit::Blank {
return hand.iter().position(|ref x| x.suit == leading_suit).unwrap();
} else {
return 0;
}
}