import 'package:flutter/material.dart'; import '../tema/tema_app.dart'; class PantallaReglas extends StatelessWidget { const PantallaReglas({super.key}); @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar(title: const Text('📖 Cómo jugar')), body: SingleChildScrollView( padding: const EdgeInsets.all(16), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ _seccion( context, '🎭 ¿Qué es El Impostor?', 'Un juego de deducción social para 3-20 jugadores. ' 'Todos reciben una palabra secreta... ¡excepto el impostor! ' 'Tu misión: descubrir quién finge.', ), _seccion( context, '🔍 ¿Cómo se juega?', '1. Se reparten los roles: todos reciben la misma palabra, ' 'excepto el/los impostores.\n\n' '2. Debate: por turnos, cada jugador describe la palabra ' 'SIN decirla directamente. El impostor debe fingir que la conoce.\n\n' '3. Votación: al terminar el debate, todos votan a quién ' 'creen que es el impostor.\n\n' '4. Eliminación: el más votado queda eliminado y se revela ' 'si era impostor o no.\n\n' '5. Si era impostor, puede intentar adivinar la palabra. ' 'Si acierta, ¡los impostores ganan!', ), _seccion( context, '🏆 ¿Quién gana?', '• Jugadores: ganan si eliminan a TODOS los impostores.\n' '• Impostores: ganan si no son descubiertos hasta que ' 'queden igual o menos jugadores normales que impostores, ' 'o si adivinan la palabra al ser eliminados.', ), _seccion( context, '💡 Consejos para jugadores', '• Da pistas sutiles que demuestren que conoces la palabra, ' 'pero no tan obvias que el impostor las use.\n' '• Observa quién da respuestas vagas o genéricas.\n' '• Usa las notas para apuntar lo que dice cada uno.\n' '• No digas la palabra directamente, ¡eso ayuda al impostor!', ), _seccion( context, '🎭 Consejos para el impostor', '• Escucha atentamente las pistas de los demás.\n' '• Intenta deducir la palabra para dar pistas creíbles.\n' '• No seas el primero en hablar si no estás seguro.\n' '• Si te dan la categoría como pista, úsala a tu favor.\n' '• Acusa a otros para desviar la atención.', ), _seccion( context, '📱 Modos de juego', '• Un solo móvil: todos comparten el dispositivo. ' 'Cada jugador ve su palabra pulsando y manteniendo un botón.\n\n' '• Multimóvil: cada jugador usa su propio dispositivo. ' 'Se conectan por Bluetooth/WiFi Direct sin necesidad de internet.', ), _ejemplo( context, '✏️ Ejemplo de partida', 'Palabra secreta: "Pizza"\n\n' '• Ana: "Se come caliente" ✓\n' '• Carlos: "Viene en una caja" ✓\n' '• Eva (impostor): "Es muy popular" 🤔\n' '• David: "Tiene queso" ✓\n\n' 'Eva dio una respuesta muy genérica... ¡Sospechosa!', ), const SizedBox(height: 32), ], ), ), ); } Widget _seccion(BuildContext context, String titulo, String contenido) { return Padding( padding: const EdgeInsets.only(bottom: 16), child: Card( child: Padding( padding: const EdgeInsets.all(16), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Text(titulo, style: Theme.of(context).textTheme.titleLarge), const SizedBox(height: 8), Text(contenido, style: Theme.of(context).textTheme.bodyLarge?.copyWith( height: 1.5, )), ], ), ), ), ); } Widget _ejemplo(BuildContext context, String titulo, String contenido) { return Padding( padding: const EdgeInsets.only(bottom: 16), child: Card( color: TemaApp.colorNaranja.withValues(alpha: 0.15), child: Padding( padding: const EdgeInsets.all(16), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Text(titulo, style: Theme.of(context).textTheme.titleLarge?.copyWith( color: TemaApp.colorNaranja, )), const SizedBox(height: 8), Text(contenido, style: Theme.of(context).textTheme.bodyLarge?.copyWith( height: 1.5, )), ], ), ), ), ); } }