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 在 游戏 中
每月 74 次下载
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