No description
  • Rust 86.3%
  • CSS 13.7%
Find a file
2026-02-21 11:41:28 +01:00
public/assets improving visual + settings 2026-02-21 11:41:28 +01:00
src improving visual + settings 2026-02-21 11:41:28 +01:00
.gitignore checkpoint better 2026-02-21 10:12:19 +01:00
Cargo.lock imùproving algo 2026-02-21 11:04:58 +01:00
Cargo.toml imùproving algo 2026-02-21 11:04:58 +01:00
Dioxus.toml checkpoint better 2026-02-21 10:12:19 +01:00
README.md checkpoint better 2026-02-21 10:12:19 +01:00

🎮 Game of Life - Rust + Dioxus

Un jeu de la vie élégant et performant écrit en Rust avec l'interface Dioxus pour desktop.

Version Rust Dioxus

✨ Fonctionnalités

🎛️ Panneau de contrôle (barre latérale droite)

  • ▶️ Contrôles : Play/Pause, Step, Clear, Reset, Random
  • 📐 Taille de la grille : 50×50, 100×100, 200×200, 500×500, 1000×1000 (triées alphabétiquement)
  • ⚡ Vitesse : Slider pour contrôler les générations par seconde (1-60 gen/s)
  • 📜 Règles : Conway's Life, HighLife, Day & Night, Seeds, Diamoeba, Anneal, Morley, Life without Death
  • 🔄 Type de grille : Standard (bords fixes) ou Toroïdale (wrap-around)
  • 🎨 Thèmes de couleurs : 6 presets (Néon, Classique, Feu, Océan, Rose, Matrix) avec option de dégradé
  • 🔷 Patterns prédéfinis : 18 patterns classiques (Glider, LWSS, Pulsar, Gosper Gun, etc.)
  • 📊 Statistiques : FPS, Génération, Population, Densité

🎨 Caractéristiques visuelles

  • Interface moderne avec thème sombre
  • Grille avec couleurs personnalisables et dégradés
  • Affichage des statistiques en temps réel
  • Zoom et pan supportés
  • Rendu SVG performant

⚡ Performance

  • Stockage bit-packed des cellules (8 cellules par octet)
  • Algorithme sparse pour n'évaluer que les cellules actives et leurs voisins
  • Support des grilles jusqu'à 1000×1000 cellules
  • Optimisé pour le rendu 60 FPS

🚀 Lancement

Prérequis

  • Rust 1.85 ou plus récent
  • Dioxus CLI (optionnel)

Compilation et exécution

# Compilation en mode release (optimisé)
cargo build --release

# Exécution
./target/release/life-game

Développement

# Compilation rapide pour le développement
cargo build

# Exécution en mode debug
cargo run

🏗️ Architecture

src/
├── components/     # Composants Dioxus
│   ├── app.rs     # Composant principal
│   ├── sidebar.rs # Barre latérale de réglages
│   ├── game_canvas.rs # Rendu du jeu
│   └── stats.rs   # Overlay des statistiques
├── game/          # Logique du jeu
│   ├── grid.rs    # Grille et algorithmes
│   ├── patterns.rs # Patterns prédéfinis
│   ├── rules.rs   # Règles du jeu
│   └── state.rs   # État global
├── utils/         # Utilitaires
│   ├── canvas.rs  # Rendu canvas
│   └── timing.rs  # Timer et FPS
└── main.rs        # Point d'entrée

🎯 Algorithmes utilisés

Stockage des cellules

  • Bit-packing : 8 cellules par octet pour économiser la mémoire
  • Set sparse : HashSet pour itérer uniquement sur les cellules vivantes

Mise à jour de la grille

  • Algorithme sparse : Ne calcule que les voisins des cellules vivantes
  • Early exit : Arrêt du comptage si plus de 3 voisins trouvés

Complexité

  • Espace : O(n) où n est le nombre de cellules vivantes
  • Temps : O(m) où m est le nombre de cellules à évaluer (généralement << n)

🎨 Règles disponibles

Règle Notation B/S Description
Conway's Life B3/S23 Le classique
HighLife B36/S23 Permet la réplication
Day & Night B3678/S34678 Symétrique on/off
Seeds B2/S Croissance explosive
Diamoeba B35678/S5678 Formes amiboïdes
Anneal B4678/S35678 Also called Majority
Morley B368/S245 Support des vaisseaux
Life without Death B3/S012345678 Croissance infinie

🔷 Patterns inclus

Vaisseaux (Spaceships)

  • Glider (c/4 diagonal)
  • LWSS (Lightweight Spaceship)
  • MWSS (Middleweight Spaceship)
  • HWSS (Heavyweight Spaceship)

Oscillateurs

  • Blinker (période 2)
  • Toad (période 2)
  • Beacon (période 2)
  • Pulsar (période 3)
  • Pentadecathlon (période 15)

Vie stable (Still Lifes)

  • Block
  • Beehive
  • Loaf
  • Boat
  • Tub

Canons (Guns)

  • Gosper Glider Gun (période 30)

Méthuselahs

  • R-pentomino (1103 générations)
  • Diehard (disparaît après 130 générations)
  • Acorn (5206 générations)
  • Gliders by the Dozen (12 planeurs)

🛠️ Technologies

  • Rust 2024 - Langage de programmation
  • Dioxus 0.7.3 - Framework UI déclaratif
  • Tokio - Runtime async
  • Serde - Sérialisation

📄 Licence

Ce projet est sous licence MIT.


Créé avec ❤️ en Rust