Initial commit: CatDoku puzzle game with leaderboard
This commit is contained in:
commit
642f568ac6
11 files changed
+2988
No files matched your search
@@ -0,0 +1,184 @@
|
||||
# CatDoku - Puzzle dei Gatti
|
||||
|
||||

|
||||

|
||||

|
||||
|
||||
## 📖 Descrizione
|
||||
|
||||
**CatDoku** è un puzzle game ispirato al classico Sudoku, ma con una meccanica unica basata sul posizionamento di gatti su una griglia colorata. Il gioco combina logica, strategia e divertimento in un'esperienza web moderna e responsive.
|
||||
|
||||
### 🎯 Obiettivo del Gioco
|
||||
|
||||
Posizionare un gatto in ogni riga, colonna e regione colorata della griglia, rispettando il vincolo che nessun gatto può essere adiacente (in qualsiasi direzione, incluse le diagonali) ad un altro gatto.
|
||||
|
||||
## ✨ Caratteristiche Principali
|
||||
|
||||
### 🎮 Gameplay
|
||||
- **Griglie dinamiche**: Supporto per griglie da 6×6 fino a 12×12
|
||||
- **Generazione procedurale**: Ogni partita genera un puzzle unico e sempre risolvibile
|
||||
- **Regioni colorate contigue**: I colori formano aree connesse per una migliore esperienza visiva
|
||||
- **Sistema di errori**: 3 tentativi massimi per livello con feedback visivo immediato
|
||||
- **Suggerimenti**: 3 hint gratuiti per livello con sistema premium per suggerimenti aggiuntivi
|
||||
|
||||
### Interfaccia
|
||||
- **Design moderno**: UI pulita e intuitiva con animazioni fluide
|
||||
- **Responsive**: Giocabile su desktop, tablet e mobile
|
||||
- **Interazione touch**: Supporto completo per dispositivi touch
|
||||
- Click singolo: posiziona/rimuove X
|
||||
- Pressione prolungata (0.5s): posiziona/rimuove gatto
|
||||
- **Feedback visivo**: Animazioni per errori, posizionamenti e vittorie
|
||||
|
||||
### Sistema Player
|
||||
- **Alias personalizzati**: Ogni giocatore può inserire il proprio nome/alias
|
||||
- **Tracking tempo**: Timer per ogni livello con formato mm:ss
|
||||
- **Salvataggio locale**: Progressi salvati in localStorage
|
||||
- **Classifica**: Leaderboard completa con filtri e statistiche
|
||||
|
||||
### 🏆 Leaderboard
|
||||
- **Statistiche globali**: Partite giocate, giocatori unici, miglior tempo, miglior punteggio
|
||||
- **Filtri avanzati**: Per giocatore, livello e dimensione griglia
|
||||
- **Medaglie**: Prime 3 posizioni con medaglie d'oro, argento e bronzo
|
||||
- **Cronologia**: Data e ora di ogni partita completata
|
||||
|
||||
### 💎 Sistema Premium
|
||||
- **Popup premium**: Attivato quando si esauriscono i suggerimenti
|
||||
- **Countdown**: 5 secondi di attesa prima di poter ottenere un hint aggiuntivo
|
||||
- **Design accattivante**: UI dorata con animazioni
|
||||
|
||||
## 🚀 Installazione e Avvio
|
||||
|
||||
### Requisiti
|
||||
- Browser moderno con supporto JavaScript ES6+
|
||||
- Nessun server richiesto (funziona con file:// protocol)
|
||||
|
||||
### Avvio Rapido
|
||||
|
||||
1. **Clona il repository**:
|
||||
```bash
|
||||
git clone http://192.168.0.183:8085/truetype/catdoku.git
|
||||
cd catdoku
|
||||
```
|
||||
|
||||
2. **Apri il gioco**:
|
||||
```bash
|
||||
# Metodo 1: Apri direttamente nel browser
|
||||
open index.html
|
||||
|
||||
# Metodo 2: Usa un server HTTP locale (opzionale)
|
||||
python3 -m http.server 8000
|
||||
# Poi visita http://localhost:8000
|
||||
```
|
||||
|
||||
3. **Inizia a giocare**:
|
||||
- Inserisci il tuo nome/alias
|
||||
- Seleziona la dimensione della griglia (6×6 fino a 12×12)
|
||||
- Clicca "Nuova Partita"
|
||||
|
||||
## 🎮 Come Giocare
|
||||
|
||||
### Controlli
|
||||
|
||||
| Azione | Mouse | Touch |
|
||||
|--------|-------|-------|
|
||||
| Posiziona/Rimuovi X | Click singolo | Tap singolo |
|
||||
| Posiziona/Rimuovi Gatto | Pressione 0.5s | Pressione 0.5s |
|
||||
| Cancella tutte le X | Pulsante gomma | Pulsante gomma |
|
||||
| Suggerimento | Pulsante lampadina | Pulsante lampadina |
|
||||
|
||||
### Regole del Gioco
|
||||
|
||||
1. **Un gatto per riga**: Ogni riga deve contenere esattamente un gatto
|
||||
2. **Un gatto per colonna**: Ogni colonna deve contenere esattamente un gatto
|
||||
3. **Un gatto per colore**: Ogni regione colorata deve contenere esattamente un gatto
|
||||
4. **Nessuna adiacenza**: I gatti non possono essere adiacenti (incluse diagonali)
|
||||
|
||||
### Sistema di Punteggio
|
||||
|
||||
Il punteggio viene calcolato in base a:
|
||||
- **Errori rimanenti**: 10 punti per ogni errore non commesso
|
||||
- **Suggerimenti rimanenti**: 5 punti per ogni hint non utilizzato
|
||||
- **Tempo**: Non influisce sul punteggio ma viene tracciato per la leaderboard
|
||||
|
||||
## 🛠️ Sviluppo
|
||||
|
||||
### Struttura del Progetto
|
||||
|
||||
```
|
||||
catdoku/
|
||||
├── index.html # Pagina principale del gioco
|
||||
├── style.css # Stili e layout responsive
|
||||
── game.js # Logica di gioco e generatore di puzzle
|
||||
├── leaderboard.html # Pagina classifica
|
||||
├── README.md # Documentazione principale
|
||||
└── docs/ # Documentazione tecnica
|
||||
├── architecture.md # Architettura del sistema
|
||||
├── game-rules.md # Regole del gioco dettagliate
|
||||
├── generator.md # Algoritmo di generazione puzzle
|
||||
└── api.md # API e struttura dati
|
||||
```
|
||||
|
||||
### Tecnologie Utilizzate
|
||||
|
||||
- **HTML5**: Struttura semantica
|
||||
- **CSS3**: Stili moderni con Grid, Flexbox, animazioni
|
||||
- **JavaScript ES6+**: Logica di gioco, generatore procedurale
|
||||
- **localStorage API**: Persistenza dati locale
|
||||
|
||||
### Architettura
|
||||
|
||||
Il progetto segue un'architettura **MVC semplificata**:
|
||||
|
||||
- **Model**: Stato del gioco (griglia, soluzione, punteggio, timer)
|
||||
- **View**: Rendering DOM e gestione eventi UI
|
||||
- **Controller**: Logica di gioco, validazione, generazione puzzle
|
||||
|
||||
### Generatore di Puzzle
|
||||
|
||||
Il generatore utilizza un algoritmo in 3 fasi:
|
||||
|
||||
1. **Backtracking randomizzato**: Posiziona N gatti validi sulla griglia
|
||||
2. **Flood fill simultaneo**: Espande regioni colorate contigue da ogni gatto
|
||||
3. **Validazione**: Garantisce puzzle sempre risolvibile con soluzione unica
|
||||
|
||||
## 📊 Roadmap Futura
|
||||
|
||||
- [ ] Livelli predefiniti con difficoltà crescente
|
||||
- [ ] Sistema di achievement/badge
|
||||
- [ ] Modalità sfida a tempo
|
||||
- [ ] Condivisione punteggi sui social
|
||||
- [ ] Tema scuro
|
||||
- [ ] Suoni ed effetti audio
|
||||
- [ ] Multiplayer locale (2 giocatori)
|
||||
- [ ] Esportazione/importazione record
|
||||
|
||||
## 🤝 Contribuire
|
||||
|
||||
Le contribuzioni sono benvenute! Per contribuire:
|
||||
|
||||
1. Fork il progetto
|
||||
2. Crea un branch per la tua feature (`git checkout -b feature/AmazingFeature`)
|
||||
3. Commit le tue modifiche (`git commit -m 'Add some AmazingFeature'`)
|
||||
4. Push sul branch (`git push origin feature/AmazingFeature`)
|
||||
5. Apri una Pull Request
|
||||
|
||||
## License
|
||||
|
||||
Questo progetto è distribuito sotto licenza MIT. Vedi il file `LICENSE` per maggiori informazioni.
|
||||
|
||||
## 👤 Autore
|
||||
|
||||
**truetype**
|
||||
|
||||
- Server Gitea: http://192.168.0.183:8085
|
||||
- Repository: http://192.168.0.183:8085/truetype/catdoku
|
||||
|
||||
## 🙏 Ringraziamenti
|
||||
|
||||
- Ispirato al gioco "Clash of Critters"
|
||||
- Icone e emoji standard Unicode
|
||||
- Font di sistema per massima compatibilità
|
||||
|
||||
---
|
||||
|
||||
**Buon divertimento con CatDoku! 🐱**
|
||||
Reference in new issue
Block a user