Crates.io | console-games |
lib.rs | console-games |
version | 1.1.7 |
source | src |
created_at | 2023-01-19 09:36:48.223711 |
updated_at | 2023-02-02 07:00:05.582831 |
description | A collection of console games written in Rust |
homepage | |
repository | https://github.com/arskiir/console-games |
max_upload_size | |
id | 762449 |
size | 49,947 |
A hobby project for console games. New games are coming, hopefully 🙂🙂🙂.
Or you want to write some Rust? Help me out by adding a game of your choice!!!
See Contribution section for more details.
List of available games:
cargo install console-games
then run
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();
}
I need your help!!! Let's grow this project together. If you have any ideas, wether it's a new game, performance improvements, code refactor/redesign, etc, please open an issue or a pull request.
A game must implement the Play
trait.
// 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 ---
Lastly, make the game visible in the module tree.
// games.rs
// --- snip ---
mod my_game;
pub use my_game::*;
Add the game to the return value of GameCenter::games
method.
// 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 ---
}