Le Jeu de la Vie est une simulation cellulaire automatisée conçue par le mathématicien John Conway. Ce projet est une implémentation en Rust du célèbre algorithme, avec une interface graphique utilisant Bevy et une version WebAssembly (WASM) pour une exécution dans le navigateur.
Bonne question ! En réalité je l'ai fait en Java déjà et j'aime pas le fait qur la JVM consomme 3 GB de RAM donc je la tente en Rust.
- Simulation du Jeu de la Vie : Implémentation de l'algorithme classique de Conway.
- Interface graphique : Utilisation de Bevy pour une interface 2D interactive.
- Version WebAssembly : Exécution dans un navigateur web avec une interface simple.
Pour utiliser ce projet, vous aurez besoin des outils suivants :
- Un cerveau 🧠
- Une connexion internet
- Et une vrai liste de prérequis que voici :
- Rust Toolchain :
rustc
(compilateur Rust)cargo
(gestionnaire de paquets Rust)rustup
(gestionnaire de versions Rust)
- Outils supplémentaires pour WASM :
wasm32-unknown-unknown
(cible pour la compilation WebAssembly)wasm-bindgen-cli
(pour générer les bindings JavaScript)wasm-server-runner
(pour exécuter le projet en local)
- Clonez ce dépôt :
git clone https://github.com/Tonguechaude/GOL.rs.git
cd GOL.rs
- Installez les dépendances Rust :
rustup target add wasm32-unknown-unknown
cargo install wasm-bindgen-cli wasm-server-runner
Pour compiler et exécuter le projet en mode release :
cargo run --release
Pour exécuter le projet dans un navigateur web en local :
cargo run --target wasm32-unknown-unknown
cargo serveur
Pour compiler le projet en WebAssembly et générer les fichiers JavaScript :
cargo build --release --target wasm32-unknown-unknown
wasm-bindgen --no-typescript --out-dir ./webapp/ --target web ./target/wasm32-unknown-unknown/release/jeu_de_la_vie.wasm
Ce projet utilise les dépendances suivantes :
Bevy : Moteur de jeu pour l'interface graphique.
egui : Interface utilisateur pour la version Rust.
rand : Génération de nombres aléatoires pour l'initialisation de la grille.
wasm-bindgen : Pour la compatibilité WebAssembly.
Les contributions sont les bienvenues ! Si vous souhaitez améliorer ce projet, voici comment procéder :
- Forkez ce dépôt.
- Créez une branche pour votre fonctionnalité (git checkout -b feature/nouvelle-fonctionnalite).
- Committez vos changements (git commit -am 'Ajouter une nouvelle fonctionnalité').
- Poussez vers la branche (git push origin feature/nouvelle-fonctionnalite).
- Ouvrez une Pull Request.
On fait que du Logiciel Libre ici !! Blague à part le code est sous licence GNU GPL v3
⛔ NE LIS PAS SI TU N'ES PAS MOI !!
déploiement en attendant que je me motive à créer les secrets pour github CI/CD :
rsync -av --rsh=ssh webapp/* tongue@tonguechaude.fr:/var/www/tonguechaude.github.io/gol
Amusez-vous bien avec le Jeu de la Vie en Rust ! 🚀