@@ -33,7 +33,10 @@ def make_piece(piece_str):
|
|||||||
def get_state():
|
def get_state():
|
||||||
engine.stdin.write(b"get_state\n")
|
engine.stdin.write(b"get_state\n")
|
||||||
engine.stdin.flush()
|
engine.stdin.flush()
|
||||||
position_str = engine.stdout.readline().decode("ascii").strip()
|
reply = engine.stdout.readline().decode("ascii").strip()
|
||||||
|
status, position_str = reply.split(",")
|
||||||
|
if status != "ok":
|
||||||
|
flask.abort(400)
|
||||||
position = {
|
position = {
|
||||||
position_str[i + 2 : i + 4]: make_piece(position_str[i : i + 2])
|
position_str[i + 2 : i + 4]: make_piece(position_str[i : i + 2])
|
||||||
for i in range(0, len(position_str), 4)
|
for i in range(0, len(position_str), 4)
|
||||||
|
|||||||
28
rs/src/ui.rs
28
rs/src/ui.rs
@@ -66,15 +66,37 @@ impl Ui {
|
|||||||
board,
|
board,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
fn get_state(&self, args: &[&str]) -> Result<String, String> {
|
||||||
|
if !args.is_empty() {
|
||||||
|
Err("get_state takes no args".to_owned())
|
||||||
|
} else {
|
||||||
|
let result = format!("{}", self.board);
|
||||||
|
Ok(result)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
fn handle_command(&mut self, s: &str) -> Result<String, String> {
|
||||||
|
let mut cmd = s.split(',');
|
||||||
|
// There will be at least an empty string => otherwise panic
|
||||||
|
let cmd_type = cmd.next().unwrap();
|
||||||
|
let args: Vec<&str> = cmd.collect();
|
||||||
|
match cmd_type {
|
||||||
|
"get_state" => self.get_state(&args),
|
||||||
|
"" => Err("No command given".to_owned()),
|
||||||
|
_ => Err("Invalid command".to_owned()),
|
||||||
|
}
|
||||||
|
}
|
||||||
pub fn run(&mut self) -> Result<(), ()> {
|
pub fn run(&mut self) -> Result<(), ()> {
|
||||||
let stdin = std::io::stdin();
|
let stdin = std::io::stdin();
|
||||||
let mut input_lines = stdin.lock().lines();
|
let mut input_lines = stdin.lock().lines();
|
||||||
loop {
|
loop {
|
||||||
match input_lines.next() {
|
match input_lines.next() {
|
||||||
None => break Ok(()),
|
None => break Ok(()),
|
||||||
Some(line) => match &line.unwrap()[..] {
|
Some(line) => match line {
|
||||||
"get_state" => println!("{}", self.board),
|
Err(_) => break Err(()),
|
||||||
_ => break Err(()),
|
Ok(line) => match self.handle_command(&line) {
|
||||||
|
Ok(result) => println!("ok,{}", result),
|
||||||
|
Err(reason) => println!("err,{}", reason),
|
||||||
|
},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user