This commit is contained in:
JOLIMAITRE Matthieu 2022-11-05 23:58:23 +01:00
parent 096e44d588
commit 0f92ed9b7e

View file

@ -13,23 +13,34 @@ struct Config {
delay: Duration,
}
#[tokio::main]
async fn main() {
let url = env::var("URL").unwrap_or_else(|_| "localhost:2048".to_string());
let delay = env::var("DELAY")
.map(|s| s.parse::<u64>().unwrap())
.unwrap_or(500);
let delay = Duration::from_millis(delay);
let config = Config { delay };
let server = TcpListener::bind(url).await.unwrap();
loop {
let (stream, address) = server.accept().await.unwrap();
println!("[server] connection from '{address}'");
let (_, write) = stream.into_split();
tokio::spawn(game(write, config.clone()));
}
}
async fn game(mut write: OwnedWriteHalf, config: Config) -> Option<()> {
'session: loop {
let rules = GameRules::default();
let mut game = Game::new(rules);
let mut controller = SimulatedController::new(50, 20);
let displayer = GridDisplayer::new(1234);
'_game: loop {
if turn(
&mut game,
config.delay,
&displayer,
&mut write,
&mut controller,
)
.await
.is_none()
{
let result = turn(&mut game, &mut controller, &mut write, config.delay).await;
if result.is_none() {
continue 'session;
}
}
@ -38,11 +49,11 @@ async fn game(mut write: OwnedWriteHalf, config: Config) -> Option<()> {
async fn turn(
game: &mut Game,
delay: Duration,
displayer: &GridDisplayer,
write: &mut OwnedWriteHalf,
controller: &mut SimulatedController,
write: &mut OwnedWriteHalf,
delay: Duration,
) -> Option<()> {
let displayer = GridDisplayer::new(1234);
let display = displayer.display(game.get_board());
let clear = clear::All;
let goto = cursor::Goto(1, 1);
@ -54,20 +65,3 @@ async fn turn(
sleep(delay).await;
Some(())
}
#[tokio::main]
async fn main() {
let url = env::var("URL").unwrap_or_else(|_| "localhost:2048".to_string());
let delay = env::var("DELAY")
.map(|s| s.parse::<u64>().unwrap())
.unwrap_or(500);
let delay = Duration::from_millis(delay);
let config = Config { delay };
let server = TcpListener::bind(url).await.unwrap();
loop {
let (stream, address) = server.accept().await.unwrap();
println!("[server] connection from '{address}'");
let (_, write) = stream.into_split();
tokio::spawn(game(write, config.clone()));
}
}