hanabi.rs/src/main.rs

65 lines
1.6 KiB
Rust
Raw Normal View History

2016-03-06 01:54:46 +01:00
extern crate rand;
2016-03-06 10:35:19 +01:00
#[macro_use]
extern crate log;
2016-03-06 01:54:46 +01:00
mod game;
mod simulator;
mod strategies {
pub mod examples;
2016-03-13 10:05:05 +01:00
pub mod cheating;
}
2016-03-06 11:13:08 +01:00
mod info;
2016-03-06 01:54:46 +01:00
2016-03-07 06:44:17 +01:00
#[allow(unused_imports)]
use log::LogLevel::{Trace, Debug, Info, Warn, Error};
2016-03-06 10:35:19 +01:00
struct SimpleLogger;
impl log::Log for SimpleLogger {
fn enabled(&self, metadata: &log::LogMetadata) -> bool {
2016-03-07 06:44:17 +01:00
metadata.level() <= Debug
2016-03-06 10:35:19 +01:00
}
fn log(&self, record: &log::LogRecord) {
if self.enabled(record.metadata()) {
println!("{} - {}", record.level(), record.args());
}
}
}
2016-03-06 01:54:46 +01:00
fn main() {
2016-03-13 21:50:38 +01:00
// TODO: make a binary with command line options
2016-03-06 10:35:19 +01:00
log::set_logger(|max_log_level| {
2016-03-13 21:50:38 +01:00
// max_log_level.set(log::LogLevelFilter::Trace);
max_log_level.set(log::LogLevelFilter::Info);
2016-03-06 10:35:19 +01:00
Box::new(SimpleLogger)
2016-03-07 06:44:17 +01:00
}).unwrap();
2016-03-06 10:35:19 +01:00
2016-03-06 07:49:40 +01:00
let opts = game::GameOptions {
2016-03-06 01:54:46 +01:00
num_players: 4,
hand_size: 4,
2016-03-06 07:49:40 +01:00
num_hints: 8,
num_lives: 3,
};
2016-03-13 10:05:05 +01:00
let n = 1000;
// simulator::simulate(&opts, &strategies::examples::AlwaysDiscard, n);
// simulator::simulate_symmetric(&opts, strategies::examples::AlwaysPlayConfig, n);
2016-03-13 10:05:05 +01:00
// simulator::simulate_symmetric(
// &opts,
// strategies::examples::RandomStrategyConfig {
// hint_probability: 0.4,
// play_probability: 0.2,
// },
// n
// );
2016-03-13 21:50:38 +01:00
simulator::simulate_symmetric(
&opts,
2016-03-13 10:05:05 +01:00
strategies::cheating::CheatingStrategyConfig::new(),
2016-03-13 21:50:38 +01:00
n
);
2016-03-13 21:50:38 +01:00
// simulator::simulate_symmetric_once(
// &opts, Some(999),
// strategies::cheating::CheatingStrategyConfig::new(),
// );
2016-03-06 01:54:46 +01:00
}