rogue/
rogue.rs

1extern crate curses_game_wrapper as cgw;
2use cgw::{ActionResult, AsciiChar, GameSetting, Reactor};
3use std::time::Duration;
4fn main() {
5    struct EmptyAI {
6        loopnum: usize,
7    };
8    impl Reactor for EmptyAI {
9        fn action(&mut self, _screen: ActionResult, turn: usize) -> Option<Vec<u8>> {
10            let mut res = Vec::new();
11            match turn {
12                val if val == self.loopnum - 1 => res.push(AsciiChar::CarriageReturn.as_byte()),
13                val if val == self.loopnum - 2 => res.push(b'y'),
14                val if val == self.loopnum - 3 => res.push(b'Q'),
15                _ => {
16                    let c = match (turn % 4) as u8 {
17                        0u8 => b'h',
18                        1u8 => b'j',
19                        2u8 => b'k',
20                        _ => b'l',
21                    };
22                    res.push(c);
23                }
24            };
25            Some(res)
26        }
27    }
28    let loopnum = 50;
29    let gs = GameSetting::new("rogue")
30        .env("ROGUEUSER", "EmptyAI")
31        .lines(24)
32        .columns(80)
33        .debug_file("debug.txt")
34        .max_loop(loopnum + 1)
35        .draw_on(Duration::from_millis(100));
36    let game = gs.build();
37    let mut ai = EmptyAI { loopnum: loopnum };
38    game.play(&mut ai);
39}