#game #terminal-game #tui #crossterm #controller #events #tui-rs

termgame

使用 tui-rs 和 crossterm 开发基于终端的游戏

10 个版本 (6 个稳定版)

1.3.0 2023年3月12日
1.2.0 2023年3月7日
1.1.0 2022年10月7日
0.3.0 2022年9月27日
0.1.1 2022年9月25日

#414 in 命令行界面

Download history 17/week @ 2024-03-31 117/week @ 2024-04-07 1/week @ 2024-04-14

每月166次下载

MIT/Apache

35KB
613

termgame

TermGame 是一个小型包,它扩展了 tui-rs,使编写 TUI 游戏变得容易。

主要用于新南威尔士大学的 COMP6991 课程,该包提供了 Controller 特性,该特性由 run_game 函数接受,以使用由 tui-rs 提供的 Crossterm TUI 启动游戏。

它还包装了许多 tui 功能,如 StyledCharacterGameEventStyle


use termgame::{SimpleEvent, Controller, Game, GameEvent, StyledCharacter, run_game, KeyCode};
use std::error::Error;
use std::time::Duration;

struct MyGame {}

impl Controller for MyGame {
    fn on_start(&mut self, game: &mut Game) {
    }

    fn on_event(&mut self, game: &mut Game, event: GameEvent) {
        match event.into() {
            SimpleEvent::Just(KeyCode::Char(ch)) => {
                game.set_screen_char(1, 1, Some(StyledCharacter::new(ch)))
            },
            _ => {}
        }

    }

    fn on_tick(&mut self, _game: &mut Game) {}
}

fn main() -> Result<(), Box<dyn Error>> {
    let mut controller = MyGame {};

    // run_game(&mut controller, Duration::from_millis(500))?;

    println!("Game Ended!");

    Ok(())
}

许可证:MIT OR Apache-2.0

依赖关系

~3–11MB
~109K SLoC