Aplicación de Troleo en PHP y MySQL

Aplicación de Troleo en PHP y MySQL

🔥 Crea tu propio Juego de Trolleo Interactivo con Aplicación de Troleo en PHP y MySQL

🎯 Introducción

¿Alguna vez quisiste crear una broma digital divertida para compartir con tus amigos o compañeros? En este tutorial aprenderás paso a paso cómo desarrollar tu propio “juego de trolleo interactivo” usando Aplicación de Troleo en PHP y MySQL, donde uno de los botones huye del cursor del usuario mientras otro se selecciona automáticamente con una cuenta regresiva. ¡Vamos a divertirnos programando!

Video Explicativo

📌 Descarga del Proyecto

📌 ¿Qué vamos a crear?

  • Un botón que escapa del cursor.
  • Un botón fijo que inicia una cuenta regresiva automáticamente.
  • Un mensaje emergente personalizado.

📌 Requisitos previos

  • PHP y servidor local (recomendamos XAMPP).
  • MySQL.
  • Conocimientos básicos de HTML, CSS y JavaScript.

📌 Estructura básica del proyecto

proyecto/
├── db.php
├── generator.php
└── game.php
  • db.php: conexión a la base de datos.
  • generator.php: genera enlaces personalizados.
  • game.php: ejecuta el juego interactivo.

📌 Creación de la base de datos

Utiliza este código SQL para crear la tabla:

CREATE TABLE troll_config (
    id INT AUTO_INCREMENT PRIMARY KEY,
    question VARCHAR(255),
    btn1_text VARCHAR(50),
    btn2_text VARCHAR(50),
    tricky_button VARCHAR(10),
    distance INT,
    unique_code VARCHAR(20),
    created_at DATETIME DEFAULT CURRENT_TIMESTAMP
);

📌 Creación del generador del juego (generator.php)

Este archivo recoge los datos de un formulario y los guarda en la base de datos, generando un enlace único.

📌 Implementación del juego interactivo (game.php)

Este archivo recupera la configuración almacenada en la base de datos, generando dinámicamente los botones y comportamientos interactivos:

  • HTML y CSS: estructura visual atractiva.
  • JavaScript: lógica para movimientos del botón “tricky” y temporizador del botón fijo.

📌 Probando el resultado final

  1. Genera el enlace desde generator.php.
  2. Accede al enlace y comprueba el funcionamiento del juego.

📌 Personalizando el juego (opcional)

  • Modifica estilos CSS para cambiar su apariencia.
  • Añade nuevas funcionalidades o efectos en JavaScript.

📌 Resolución de problemas frecuentes (FAQs)

  • Error de conexión: revisa credenciales en db.php.
  • Botón tricky sale del viewport: ajusta los valores de padding en JavaScript.
  • Temporizador no inicia: verifica que el evento mouseenter esté correctamente asociado.

📌 Conclusión y recursos adicionales

¡Felicidades! Has creado un divertido juego interactivo que puedes compartir. Ahora experimenta personalizándolo a tu gusto.

Recursos recomendados:

🧠 “How-To”: ¿Cómo se hizo y qué lógica se utilizó para desarrollar Aplicación de Troleo en PHP y MySQL?

En esta sección vamos a explicar paso a paso, la lógica detrás de cada fragmento del código usado para desarrollar este juego interactivo.


📌 1. Conexión a la Base de Datos (db.php)

Lógica:
Para almacenar configuraciones del juego de forma persistente, optamos por una base de datos MySQL. Usamos PDO porque ofrece seguridad contra ataques de inyección SQL y facilita la gestión de excepciones.

Explicación del código:

phpCopiarEditar$pdo = new PDO("mysql:host=$host;dbname=$db;charset=utf8", $user, $pass);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  • PDO::ATTR_ERRMODE se activa para ver fácilmente los errores.
  • La conexión usa UTF-8 para evitar problemas con caracteres especiales.

📌 2. Generación del enlace único (generator.php)

Lógica:
Queríamos ofrecer una forma sencilla y segura para compartir configuraciones únicas. Por eso generamos un código único utilizando funciones seguras de PHP.

Explicación del código:

phpCopiarEditar$unique_code = substr(md5(uniqid(rand(), true)), 0, 8);
  • uniqid(rand(), true) genera una cadena aleatoria basada en la hora actual y un número aleatorio.
  • md5 transforma esa cadena en un hash seguro.
  • substr limita el tamaño para facilitar compartir enlaces.

📌 3. Almacenamiento de configuración en MySQL

Lógica:
Cada configuración se guarda para ser recuperada después, por eso almacenamos todos los parámetros del juego en la tabla troll_config.

Explicación del código:

phpCopiarEditar$sql = "INSERT INTO troll_config 
        (question, btn1_text, btn2_text, tricky_button, distance, unique_code, created_at) 
        VALUES (:q, :b1, :b2, :tb, :dist, :uc, NOW())";
  • Utilizamos parámetros preparados (:q, :b1...) para seguridad.
  • NOW() permite registrar cuándo fue creada la configuración, útil para auditoría o estadísticas.

📌 4. Recuperación de configuración en tiempo real (game.php)

Lógica:
Al visitar el enlace único, necesitamos obtener los parámetros previamente guardados para renderizar la interfaz dinámica del juego.

Explicación del código:

phpCopiarEditar$stmt = $pdo->prepare("SELECT * FROM troll_config WHERE unique_code = :uc LIMIT 1");
$stmt->execute([':uc' => $code]);
  • Recuperamos la configuración exacta con el código único.
  • LIMIT 1 para mejorar rendimiento ya que esperamos un solo resultado.

📌 5. Posicionamiento dinámico del botón tricky (JavaScript)

Lógica:
El botón tricky debe moverse continuamente, evitando el puntero del mouse del usuario para hacer imposible su clic.

Explicación del código:

jsCopiarEditarfunction moverBotonRandom(button) {
    const randomX = Math.floor(Math.random() * (maxX - padding)) + padding;
    const randomY = Math.floor(Math.random() * (maxY - padding)) + padding;
    button.style.left = randomX + 'px';
    button.style.top = randomY + 'px';
}
  • Usamos Math.random() para generar posiciones aleatorias dentro de la ventana, asegurando que el botón sea siempre visible y accesible visualmente, pero difícil de alcanzar.

📌 6. Lógica del temporizador automático

Lógica:
Queríamos agregar dramatismo y tensión al juego, por eso el botón fijo inicia una cuenta regresiva cuando el usuario se acerca al botón tricky.

Explicación del código:

jsCopiarEditarlet timerStarted = false;
function startCountdown(button) {
    if (timerStarted) return;
    timerStarted = true;
    button.disabled = true;
    let currentTime = 10;
    button.innerText = `${originalText} (${currentTime} seg)`;

    const countdownInterval = setInterval(() => {
        currentTime--;
        button.innerText = `${originalText} (${currentTime} seg)`;
        if (currentTime <= 0) {
            clearInterval(countdownInterval);
            completarTest();
        }
    }, 1000);
}
  • setInterval() maneja la lógica del temporizador.
  • Usamos button.disabled para evitar que el usuario interrumpa la cuenta regresiva.
  • Al finalizar el tiempo, invocamos la función para mostrar el emergente final.

📌 7. Mensaje emergente personalizado

Lógica:
Quisimos dar feedback claro y personalizado al usuario al finalizar la experiencia.

Explicación del código:

jsCopiarEditarfunction completarTest() {
    alert('Muchas gracias por tu elección de ' + fixedButtonOriginalText + ', ya fue enviada la notificación a quien te envió la consulta.');
    screenContainer.style.display = 'none';
    overlayMessage.style.display = 'flex';
}
  • El mensaje incluye el texto original del botón elegido, proporcionando claridad y confirmación al usuario.
  • Ocultamos la interfaz de juego para centrar la atención del usuario en el mensaje emergente.

🚩 Consejos finales para tu “How-To”:

  • Usa fragmentos cortos de código acompañados de explicaciones sencillas y directas.
  • Puedes incluir ilustraciones gráficas (diagramas o flujos de trabajo) para explicar la lógica visualmente.
  • Incluye anotaciones en el código resaltando decisiones de diseño importantes (seguridad, rendimiento, UX).

Tags:

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

configuroweb.com
×
Hola de Nuevo
Abrir chat
¿Qué te interesa?
Selecciona los temas de interés sobre
los que deseas recibir noticias: