Case Study: Rustmon ๐ฎ¶
Progetto Community
Autore: @AndreaBozzo Repository: github.com/AndreaBozzo/rustmon Licenza: MIT Livello: ๐ข Principiante / ๐ก Intermedio
Panoramica¶
Rustmon รจ un simulatore di battaglie Pokemon scritto in Rust, sviluppato come risorsa educativa per la community italiana. Il progetto implementa meccaniche di combattimento complete con tutti i 18 tipi Pokemon e calcoli di efficacia delle mosse.
Cosa Rende Rustmon Interessante?¶
Rustmon รจ un esempio perfetto per imparare Rust perchรฉ:
- ๐ฏ Dominio familiare: Pokemon รจ un sistema di regole che molti conoscono
- ๐๏ธ Architettura reale: Utilizza Bevy ECS (Entity Component System)
- ๐ฆ Struttura modulare: Separazione chiara tra logica e presentazione
- ๐ง Pattern pratici: Mostra Rust in un contesto applicativo concreto
Caratteristiche Tecniche¶
Sistema dei Tipi¶
Il progetto implementa tutti i 18 tipi Pokemon con:
enum PokemonType {
Normal, Fire, Water, Grass, Electric,
Ice, Fighting, Poison, Ground, Flying,
Psychic, Bug, Rock, Ghost, Dragon,
Dark, Steel, Fairy
}
Concetti Rust: Enums, Pattern Matching, Type Safety
Meccaniche di Battaglia¶
- โ๏ธ Calcolo danni basato su tipo e statistiche
- ๐ฒ Sistema di efficacia (super efficace, non molto efficace, immune)
- ๐ Simulazione turni di battaglia
Concetti Rust: Ownership, Borrowing, Methods
Architettura ECS (Bevy)¶
Il progetto utilizza il pattern Entity-Component-System:
- Entity: I Pokemon come entitร nel mondo di gioco
- Component: Stats, Types, Moves come componenti
- System: Logica di battaglia come sistemi
Concetti Rust: Traits, Generics, Composition over Inheritance
Struttura del Progetto¶
rustmon/
โโโ src/
โ โโโ lib.rs # Libreria con logica core
โ โโโ main.rs # Binary con esempio di battaglia
โ โโโ types.rs # Sistema dei tipi Pokemon
โ โโโ battle.rs # Meccaniche di combattimento
โ โโโ pokemon.rs # Strutture dati Pokemon
โโโ Cargo.toml
Esempi Disponibili¶
Questa sezione contiene analisi approfondite di specifici aspetti di Rustmon:
๐ข Livello Principiante¶
-
Come Rustmon gestisce la proprietร dei Pokemon durante le battaglie
Concetti: Ownership, Borrowing, References
-
Il sistema dei tipi Pokemon implementato con enums
Concetti: Enums, Match, Type Safety
๐ก Livello Intermedio¶
-
Come definire comportamenti comuni per Pokemon e mosse
Concetti: Traits, Polymorphism, Default Implementations
Come Usare Questo Case Study¶
1๏ธโฃ Esplora il Codice¶
Clona il repository e prova il progetto:
2๏ธโฃ Leggi gli Esempi¶
Ogni esempio in questa sezione:
- ๐ Spiega un concetto Rust specifico
- ๐ป Mostra il codice reale di Rustmon
- ๐ Linka ai file sorgente su GitHub
- ๐ก Fornisce takeaway pratici
3๏ธโฃ Sperimenta¶
Dopo aver letto gli esempi, prova a:
- โ๏ธ Modificare il codice
- โ Aggiungere nuovi Pokemon o mosse
- ๐ Risolvere eventuali issue
- ๐ง Implementare nuove feature
Prerequisiti¶
Per seguire gli esempi dovresti avere familiaritร con:
- โ Sintassi base di Rust (variabili, funzioni, struct)
- โ Concetti di ownership (livello base)
- โ Enum e pattern matching (utile ma non essenziale)
Non ti preoccupare se alcuni concetti non sono chiari: ogni esempio li spiega nel contesto!
Link Utili¶
- ๐ฆ Repository GitHub
- ๐ Documentazione Bevy
- ๐ฆ Standard Library - Enums
Cosa Imparerai¶
Esplorando Rustmon attraverso questi case study, capirai:
| Concetto | Applicazione in Rustmon |
|---|---|
| Ownership | Chi possiede un Pokemon durante la battaglia? |
| Borrowing | Come passare Pokemon tra funzioni senza copiarli? |
| Enums | Rappresentare i 18 tipi Pokemon in modo type-safe |
| Pattern Matching | Calcolare efficacia delle mosse in base ai tipi |
| Traits | Definire comportamenti comuni (attaccare, difendere) |
| Error Handling | Gestire mosse non valide o Pokemon KO |
| Collections | Gestire team di Pokemon e liste di mosse |
Pronto a iniziare? Parti con Ownership in Pratica โ