#console #game-console #game

bin+lib console-games

Rust 编写的控制台游戏集合

23 个版本 (10 个稳定版本)

1.1.7 2023 年 2 月 2 日
1.1.2 2023 年 2 月 1 日
1.0.2 2023 年 1 月 30 日
0.1.12 2023 年 1 月 28 日

#78游戏

Download history 8/week @ 2024-03-09 2/week @ 2024-03-16 50/week @ 2024-03-30 23/week @ 2024-04-06

每月 74 次下载

MIT/ApacheAGPL-3.0

39KB
1K SLoC

控制台游戏

控制台游戏的业余项目。新游戏即将到来,希望如此 🙂🙂🙂。

或者你想写一些 Rust 代码?通过添加你选择的游戏来帮助我!!!
请参阅 贡献 部分,获取更多详细信息。

游戏

可用游戏列表

  • 猜词游戏
  • 猜数字
  • 单词类型
  • 四子棋
  • 汉诺塔
  • 扫雷

用法

cargo install console-games

然后运行

console-games

或者作为库

use console_games::GameCenter;

fn main() {
    GameCenter::enter();
}

运行单个游戏

use console_games::{games::MineSweeper, Play};

fn main() {
    println!("{}", MineSweeper.name());
    if let Some(instruction) = MineSweeper.instructions() {
        println!("{}", instruction);
    };
    MineSweeper.start();
}

贡献

我需要你的帮助!!!让我们一起把这个项目做大。如果你有任何想法,无论是新游戏、性能改进、代码重构/重新设计等,请打开一个 issue 或 pull request。

创建游戏

游戏必须实现 Play 特性。

// games/my_game.rs

pub struct MyGame;

impl Play for MyGame {
    fn name(&self) -> &'static str {
        "My Game"
    }

    fn start(&self) {
        // create the internal game instance local to this method
        let game = MyGameImpl::new();
        game.start();
    }
}

struct MyGameImpl {
    // --- snip ---
}

// --- snip ---

最后,使游戏在模块树中可见。

// games.rs

// --- snip ---
mod my_game;
pub use my_game::*;

将新游戏添加到游戏中心

将游戏添加到 GameCenter::games 方法的返回值中。

// game_center.rs

// --- snip ---

impl GameCenter {
    // --- snip ---

    pub fn games() -> [Box<dyn Play>; 5 /* <-- update this number */] {
        [
            Box::new(GuessTheWord),
            Box::new(GuessTheNumber),
            Box::new(WordType),
            // -- snip --
            Box::new(MyGame), // <-- add this line
        ]
    }

    // --- snip ---
}

依赖项

~1.2–10MB
~80K SLoC