Vai al contenuto

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

  • Ownership in Pratica

    Come Rustmon gestisce la proprietร  dei Pokemon durante le battaglie

    Concetti: Ownership, Borrowing, References

  • Enums e Pattern Matching

    Il sistema dei tipi Pokemon implementato con enums

    Concetti: Enums, Match, Type Safety

๐ŸŸก Livello Intermedio

  • Traits Personalizzati

    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:

git clone https://github.com/AndreaBozzo/rustmon.git
cd rustmon
cargo run

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!


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 โ†’