← Tutte le idee Giochi e hobby

Cat Games

Il telefono diventa un gioco per il tuo gatto

Incasso mensile: 948 USD (fonte indicata nella scheda)

Cosa fa

Giochi da far toccare al gatto sullo schermo del telefono o del tablet: topi, pesci e lucine che si muovono.

Come guadagna

Ha entrate ricorrenti ogni mese, verificate su TrustMRR. Prezzi e piani esatti sono indicati sul sito del progetto.

Rendilo tuo

  • Registra i video del gatto mentre gioca, da condividere sui social.
  • Giochi per cani con suoni, sullo stesso principio.

Le frasi da scrivere all'AI

1. Base del sito e grafica

Crea un'app web in italiano chiamata "Gioca Micio": giochi da far toccare al gatto sullo schermo del tablet o del telefono: topolini, pesci, coccinelle e lucine che si muovono in modo imprevedibile. Usa React, Vite, TypeScript e Tailwind CSS.

Pagine da creare:
1. Pagina iniziale con un video di gatti che giocano e il prezzo
2. Scelta del gioco con anteprime grandi
3. Schermata di gioco a tutto schermo
4. Impostazioni: velocità, numero di prede, suoni
5. Statistiche: quante prede ha preso il gatto

Stile: giocoso ma semplice: menu con sfondo bianco, arancione gatto #F97316, carattere "Fredoka"; giochi su sfondi scuri con colori che i gatti distinguono bene (blu e giallo). Nessuna immagine generica di stock.

Tutto deve funzionare perfettamente da telefono. Tutti i testi in italiano, chiari e senza parole tecniche.

2. Database, account e sicurezza

Collega il progetto a Supabase e attiva la registrazione con email e password.

Crea queste tabelle:
- "profili": piano (gratis o completo), collegato all'utente
- "partite": gioco, durata, prede prese, data

Regole di sicurezza obbligatorie:
- ogni utente vede solo le sue partite
- il piano non si modifica dal browser

Usa esattamente il codice SQL che trovi nei "Dettagli tecnici" di questa scheda: eseguilo nel SQL Editor di Supabase prima di continuare, poi collega le pagine alle tabelle.

3. I giochi

Crea 6 giochi a tutto schermo disegnati su canvas: topolino che corre e si nasconde, pesci in un acquario, coccinella, puntino laser, piuma, lucciole. Le prede si muovono con cambi di direzione improvvisi e pause, come una preda vera (codice nei Dettagli tecnici).

Quando il gatto tocca una preda: piccola animazione, suono leggero facoltativo, la preda scappa e ne compare un'altra. Si contano le prede prese.

Per non far uscire il gatto dal gioco: pagina a schermo intero, nessun pulsante visibile, e per uscire serve tenere premuto 3 secondi l'angolo in alto a sinistra. Lo schermo non si spegne durante il gioco (Wake Lock).

4. Impostazioni e statistiche

Impostazioni: velocità (calmo, normale, veloce), numero di prede contemporanee, suoni sì o no, durata della partita con fine automatica.

Statistiche: prede prese per partita e per settimana, gioco preferito. Consiglio nella pagina: "Proteggi lo schermo con una pellicola e tieni le unghie del gatto spuntate".

5. Pagamenti con Stripe

Aggiungi un pagamento singolo di 3,99 € una volta sola. Il pagamento sblocca tutti e 6 i giochi e le impostazioni; gratis si gioca con il topolino.

A pagamento riuscito il webhook imposta "piano" a "pro" nella tabella "profili", sulla riga dell'utente indicata in client_reference_id.

Per la sessione di pagamento e il webhook segui la guida "Pagamenti con Stripe" di Fattibile.

6. Controlli specifici di questo progetto

Oltre ai controlli della guida "Controllo finale", verifica in particolare:
1. Tocco: prova i giochi su un tablet con tocchi rapidi e ripetuti: niente zoom, niente selezione del testo, niente menu che si aprono.
Correggi quello che non va e scrivimi cosa hai cambiato.

Dettagli tecnici

Una preda che si muove come quella vera

Il topolino cambia direzione all'improvviso, si ferma e riparte, e scappa quando viene toccato. Tutto disegnato su canvas a 60 fotogrammi al secondo.

type Preda = { x: number; y: number; vx: number; vy: number; pausa: number };

export function avviaGioco(tela: HTMLCanvasElement, velocita = 4, onPresa: () => void) {
  const ctx = tela.getContext("2d")!;
  const nuova = (): Preda => ({
    x: Math.random() * tela.width, y: Math.random() * tela.height, vx: velocita, vy: 0, pausa: 0,
  });
  let preda = nuova();

  function muovi() {
    if (preda.pausa > 0) { preda.pausa--; return; }              // ferma, come un topo in agguato
    if (Math.random() < 0.02) {                                   // cambio di direzione improvviso
      const angolo = Math.random() * Math.PI * 2;
      preda.vx = Math.cos(angolo) * velocita;
      preda.vy = Math.sin(angolo) * velocita;
    }
    if (Math.random() < 0.005) preda.pausa = 30 + Math.random() * 60;
    preda.x += preda.vx; preda.y += preda.vy;
    if (preda.x < 20 || preda.x > tela.width - 20) preda.vx *= -1;   // rimbalza sui bordi
    if (preda.y < 20 || preda.y > tela.height - 20) preda.vy *= -1;
  }

  function disegna() {
    ctx.fillStyle = "#0B1220";
    ctx.fillRect(0, 0, tela.width, tela.height);
    ctx.fillStyle = "#FACC15";                                    // giallo: ben visibile ai gatti
    ctx.beginPath();
    ctx.ellipse(preda.x, preda.y, 26, 16, Math.atan2(preda.vy, preda.vx), 0, Math.PI * 2);
    ctx.fill();
  }

  tela.addEventListener("pointerdown", (e) => {
    const r = tela.getBoundingClientRect();
    const x = (e.clientX - r.left) * (tela.width / r.width);
    const y = (e.clientY - r.top) * (tela.height / r.height);
    if (Math.hypot(x - preda.x, y - preda.y) < 60) { onPresa(); preda = nuova(); }
  });

  let attivo = true;
  (function ciclo() {
    if (!attivo) return;
    muovi(); disegna();
    requestAnimationFrame(ciclo);
  })();
  return () => { attivo = false; };
}

Pezzi comuni a tutti i progetti

Glossario

Canvas
Una tela del browser su cui il codice disegna e anima figure, adatta ai giochi semplici.
Wake Lock
La funzione che impedisce allo schermo di spegnersi mentre si usa l'app.