trucs
This commit is contained in:
parent
7a0b166b3f
commit
8d8deecfe7
1 changed files with 41 additions and 13 deletions
48
src/main.rs
48
src/main.rs
|
@ -1,33 +1,61 @@
|
|||
use std::{
|
||||
collections::HashMap,
|
||||
env,
|
||||
time::{self, Duration},
|
||||
};
|
||||
|
||||
use rs48_lib::{game::Game, grid_displayer::GridDisplayer, prelude::*};
|
||||
use termion::{clear, cursor};
|
||||
use tokio::{
|
||||
io::AsyncWriteExt,
|
||||
net::{tcp::OwnedWriteHalf, TcpListener},
|
||||
time::sleep,
|
||||
};
|
||||
|
||||
#[derive(Debug, Clone)]
|
||||
struct Config {
|
||||
delay: Duration,
|
||||
}
|
||||
|
||||
async fn game(mut write: OwnedWriteHalf) -> Option<()> {
|
||||
loop {
|
||||
'session: loop {
|
||||
let rules = GameRules::default();
|
||||
let mut game = Game::new(rules);
|
||||
let mut controller = SimulatedController::new(50, 20);
|
||||
let displayer = GridDisplayer::new(1234);
|
||||
loop {
|
||||
'_game: loop {
|
||||
if let None = turn(&mut game, &displayer, &mut write, &mut controller).await {
|
||||
continue 'session;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
async fn turn(
|
||||
game: &mut Game,
|
||||
displayer: &GridDisplayer,
|
||||
write: &mut OwnedWriteHalf,
|
||||
controller: &mut SimulatedController,
|
||||
) -> Option<()> {
|
||||
let grid = game.get_board();
|
||||
let display = displayer.display(&grid);
|
||||
let clear = termion::clear::All;
|
||||
let goto = termion::cursor::Goto(1, 1);
|
||||
let clear = clear::All;
|
||||
let goto = cursor::Goto(1, 1);
|
||||
let frame = format!("{clear}{goto}{display}");
|
||||
write.write_all(frame.as_bytes()).await.ok()?;
|
||||
|
||||
let movement = controller.next_move(&game).ok()?;
|
||||
let movement = controller.next_move(&*game).ok()?;
|
||||
game.turn(movement).ok()?;
|
||||
std::thread::sleep(std::time::Duration::from_millis(500));
|
||||
}
|
||||
}
|
||||
sleep(Duration::from_millis(500)).await;
|
||||
Some(())
|
||||
}
|
||||
|
||||
#[tokio::main]
|
||||
async fn main() {
|
||||
let url = std::env::var("URL").unwrap_or_else(|_| "localhost:8076".to_string());
|
||||
let url = env::var("URL").unwrap_or_else(|_| "localhost:2048".to_string());
|
||||
let delay = env::var("DELAY")
|
||||
.map(|s| s.parse::<i32>().unwrap())
|
||||
.unwrap_or(500);
|
||||
let convif = { delay };
|
||||
let server = TcpListener::bind(url).await.unwrap();
|
||||
loop {
|
||||
let (stream, address) = server.accept().await.unwrap();
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue