Skip to content

Commit 0134c03

Browse files
Revise content in InfoPanel component
1 parent a751ab2 commit 0134c03

1 file changed

Lines changed: 20 additions & 36 deletions

File tree

Lines changed: 20 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -1,109 +1,93 @@
11
import React, { useState } from 'react';
22

3-
// --- Sub-componente: "Sobre este Proyecto" ---
43
const AboutContent = () => (
54
<>
65
<h2 className="text-2xl font-bold mb-4 text-green-400">
7-
Sobre este Proyecto
6+
Inteligencia Aritficial aplicada en Juegos de Suma Cero
87
</h2>
98
<div className="space-y-4 text-slate-300">
109
<div>
11-
<h3 className="text-lg font-semibold text-blue-400">Función de la App</h3>
10+
<h3 className="text-lg font-semibold text-blue-400">Algoritmo Minimax</h3>
1211
<p className="text-sm mt-1">
13-
Esta es una demostración educativa de una IA imbatible para Tic Tac
14-
Toe. El objetivo es mostrar cómo un algoritmo clásico puede
15-
"resolver" un juego por completo.
12+
Esta aplicación implementa Minimax, un método de decisión recursivo utilizado en teoría de juegos. El algoritmo busca el movimiento que maximiza la ganancia mínima esperada, asumiendo que el adversario ejecuta una estrategia óptima.
1613
</p>
1714
</div>
1815
<div>
19-
<h3 className="text-lg font-semibold text-blue-400">¿Cómo Funciona?</h3>
16+
<h3 className="text-lg font-semibold text-blue-400">Exploración del Espacio de Estados</h3>
2017
<p className="text-sm mt-1">
21-
El frontend (React/Astro) envía el tablero al backend (Python). El
22-
backend decide la jugada óptima y la devuelve para actualizar la UI.
18+
El sistema genera un árbol de juego que representa todas las secuencias de movimientos posibles hasta alcanzar un estado terminal (victoria, derrota o empate). Este análisis permite determinar el valor de cada nodo basándose en resultados finales.
2319
</p>
2420
</div>
2521
<div>
2622
<h3 className="text-lg font-semibold text-blue-400">
27-
Motor Lógico: Prolog
23+
Función de Evaluación
2824
</h3>
2925
<p className="text-sm mt-1">
30-
Las reglas (<code>ganador(X)</code>, <code>empate</code>, <code>movimiento_valido</code>)
31-
están definidas en Prolog. Python consulta este motor para
32-
evaluar los estados del juego.
26+
Se asigna un valor numérico a los estados finales: +1 para la victoria de la IA, -1 para la derrota y 0 para el empate. El algoritmo propaga estos valores hacia arriba en el árbol para seleccionar la ruta con el valor máximo disponible.
3327
</p>
3428
</div>
3529
<div>
3630
<h3 className="text-lg font-semibold text-blue-400">
37-
IA: Python + Minimax
31+
Optimización: Poda Alfa-Beta
3832
</h3>
3933
<p className="text-sm mt-1">
40-
El "cerebro" es un algoritmo Minimax en Python. Explora
41-
recursivamente el árbol de jugadas (con Poda Alfa-Beta) para
42-
encontrar el movimiento que garantiza la victoria o el empate.
34+
Para reducir la complejidad computacional, se aplica Poda Alfa-Beta. Esta técnica descarta ramas del árbol de búsqueda que no influyen en la decisión final, permitiendo procesar el espacio de estados de manera más eficiente sin alterar el resultado del algoritmo.
4335
</p>
4436
</div>
4537
</div>
4638
<hr className="my-6 border-slate-700" />
4739
<div className="text-sm text-slate-400 space-y-1">
4840
<p>
49-
<span className="font-semibold text-slate-300">Autor:</span> @Angel Cordoba
41+
<span className="font-semibold text-slate-300">Autor:</span> stillfreecode - AngelCV
5042
</p>
5143
<p>
52-
<span className="font-semibold text-slate-300">Curso:</span> @Inteligencia Artificial
44+
<span className="font-semibold text-slate-300">Curso:</span> Inteligencia Artificial
5345
</p>
54-
<p><span className="font-semibold text-slate-300">Grupo:</span> @8s1</p>
5546
</div>
5647
</>
5748
);
5849

59-
// --- Sub-componente: "Reglas del Juego" ---
6050
const RulesContent = () => (
6151
<>
6252
<h2 className="text-2xl font-bold mb-4 text-green-400">
63-
Reglas de Produccion
53+
Reglas de Producción
6454
</h2>
6555
<div className="space-y-3 text-slate-300 text-sm">
66-
<p><strong>1. Tablero:</strong> El juego usa una cuadrícula de 3x3.</p>
67-
<p><strong>2. Jugadores:</strong> Compiten dos jugadores, uno con "X" y el otro con "O".</p>
68-
<p><strong>3. Objetivo:</strong> Alinear tres de tus símbolos en fila (horizontal, vertical o diagonal).</p>
69-
<p><strong>4. Turnos:</strong> Los jugadores colocan un símbolo por turno."X" comienza primero.</p>
70-
<p><strong>5. Ganar:</strong> El primer jugador en conseguir tres en raya, gana.</p>
71-
<p><strong>6. Empate:</strong> Si todas las casillas se ocupan y nadie gana, es un empate.</p>
56+
<p><strong>1. Tablero:</strong> Cuadrícula estática de 3x3.</p>
57+
<p><strong>2. Agentes:</strong> Dos agentes identificados por los símbolos "X" y "O".</p>
58+
<p><strong>3. Objetivo:</strong> Alinear tres símbolos idénticos en cualquier vector (horizontal, vertical o diagonal).</p>
59+
<p><strong>4. Secuencia:</strong> Turnos alternados de un solo movimiento por turno.</p>
60+
<p><strong>5. Estado Final:</strong> El sistema se detiene al detectar una alineación de tres símbolos o al completar todas las celdas (empate).</p>
7261
</div>
7362
</>
7463
);
7564

76-
// --- Componente Principal del Panel ---
7765
export default function InfoPanel() {
78-
// Estado para controlar la pestaña activa ('about' o 'rules')
7966
const [view, setView] = useState('about');
8067

81-
// Clases de Tailwind para las pestañas
8268
const activeTabClass = "border-b-2 border-green-400 text-white font-semibold";
8369
const inactiveTabClass = "text-slate-400 hover:text-slate-200 border-b-2 border-transparent";
8470

8571
return (
8672
<div className="w-full h-full p-6 md:p-8">
87-
{/* Pestañas de Navegación */}
8873
<div className="flex mb-6 border-b border-slate-700">
8974
<button
9075
onClick={() => setView('about')}
9176
className={`pb-2 px-4 text-sm transition-colors ${view === 'about' ? activeTabClass : inactiveTabClass}`}
9277
>
93-
Sobre este Proyecto
78+
Análisis del Algoritmo
9479
</button>
9580
<button
9681
onClick={() => setView('rules')}
9782
className={`pb-2 px-4 text-sm transition-colors ${view === 'rules' ? activeTabClass : inactiveTabClass}`}
9883
>
99-
Reglas del Juego
84+
Lógica del Juego
10085
</button>
10186
</div>
10287

103-
{/* Contenido Dinámico */}
10488
<div>
10589
{view === 'about' ? <AboutContent /> : <RulesContent />}
10690
</div>
10791
</div>
10892
);
109-
}
93+
}

0 commit comments

Comments
 (0)