From 342b1f4ec7ebcd6445058d8be4d18cdf9bb5985d Mon Sep 17 00:00:00 2001
From: Christian Julian Jimenez <zs22016079@estudiantes.uv.mx>
Date: Wed, 12 Feb 2025 07:55:45 -0600
Subject: [PATCH] Actualizado el archivo README.md

---
 .README.md.swp | Bin 0 -> 12288 bytes
 index.html     | 110 +++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 110 insertions(+)
 create mode 100644 .README.md.swp
 create mode 100644 index.html

diff --git a/.README.md.swp b/.README.md.swp
new file mode 100644
index 0000000000000000000000000000000000000000..cd747edc3f6e4a9ad1b7169f2054a20477d6e462
GIT binary patch
literal 12288
zcmeI&y-ve05C?D<kYGU|cmV@5O$%aRtXd>8R79ldT3wT)a+SoDlkhdbz`HQfr{D$P
zMc@^1N?>3pD^!0=(Zy%W%Kf&;H*ECXt~{<cg&mthtUf-C_(6!3H6g}Dtf<WYGETig
z-);8-zj-uw=iTf;=Pc!pQI{<DWsurvG8IuI`)nvQ#Vw`e^f*j)tVhpN%4Az7lOm^3
z>6Bv59G|aqEqzWn%MCjn&d3-Y$67`#eSMK%kxhF>C2XWeCR7wVEx+x$1JCFi4s-3C
zpR_vNlX?=({a`FYV4(!o#o<A-QI@o~yCb)^f`zIM#XtZ85P$##AOHafKmY>s1@cKv
z+}kZn)wbm-)_%lliU0u!KmY;|fB*y_009U<00Izzz&{iqdjme*5aQK7<^BKH|Npz4
zzg78{at#9l5P$##AOHafKmY;|fB*y_0D-?F5TtTab-9=Q@R1r8W1Y!a|GRDb{e1au
Ggcl!6#9B81

literal 0
HcmV?d00001

diff --git a/index.html b/index.html
new file mode 100644
index 0000000..d33f75e
--- /dev/null
+++ b/index.html
@@ -0,0 +1,110 @@
+<!DOCTYPE html>
+<html lang="es">
+<head>
+    <meta charset="UTF-8">
+    <meta name="viewport" content="width=device-width, initial-scale=1.0">
+    <title>Canvas Cuadriculado con Pincel ASCII</title>
+    <style>
+        body {
+            display: flex;
+            justify-content: center;
+            align-items: center;
+            height: 100vh;
+            background-color: #f4f4f4;
+            flex-direction: column;
+        }
+        canvas {
+            border: 1px solid black;
+            background-color: white;
+            cursor: crosshair;
+        }
+        select {
+            margin-bottom: 10px;
+        }
+    </style>
+</head>
+<body>
+    <select id="seleccionAscii">
+        <option value="*">*</option>
+        <option value="#">#</option>
+        <option value="@">@</option>
+        <option value="&">&</option>
+        <option value="%">%</option>
+    </select>
+    <input type="color" value="#000000" id="colorPicker">
+    <canvas id="lienzoCuadriculado" width="500" height="500"></canvas>
+    <script>
+        const lienzo = document.getElementById("lienzoCuadriculado");
+        const contexto = lienzo.getContext("2d");
+        const tamanoCuadricula = 20; // Tamaño de cada celda en píxeles
+        let dibujando = false;
+        const seleccionAscii = document.getElementById("seleccionAscii");
+        
+        // Mapa para almacenar los caracteres dibujados
+        const caracteresEnPosiciones = new Map();
+
+        function dibujarCuadricula() {
+            contexto.strokeStyle = "#ddd";
+            for (let x = 0; x <= lienzo.width; x += tamanoCuadricula) {
+                contexto.beginPath();
+                contexto.moveTo(x, 0);
+                contexto.lineTo(x, lienzo.height);
+                contexto.stroke();
+            }
+            for (let y = 0; y <= lienzo.height; y += tamanoCuadricula) {
+                contexto.beginPath();
+                contexto.moveTo(0, y);
+                contexto.lineTo(lienzo.width, y);
+                contexto.stroke();
+            }
+        }
+
+        function obtenerPosicionAjustada(posicion) {
+            return Math.floor(posicion / tamanoCuadricula) * tamanoCuadricula;
+        }
+
+        function dibujarAscii(x, y) {
+            const ascii = seleccionAscii.value;
+            const posicionClave = `${x},${y}`;
+            const caracterActual = caracteresEnPosiciones.get(posicionClave);
+
+            // Solo dibuja si la celda está vacía o si el carácter es diferente
+            if (!caracterActual || caracterActual !== ascii) {
+                // Limpia la celda antes de dibujar
+                contexto.clearRect(x, y, tamanoCuadricula, tamanoCuadricula);
+                // Redibuja la línea de la cuadrícula para esa celda
+                contexto.strokeStyle = "#ddd";
+                contexto.strokeRect(x, y, tamanoCuadricula, tamanoCuadricula);
+                
+                // Dibuja el nuevo carácter
+                contexto.font = `${tamanoCuadricula}px monospace`;
+                contexto.fillText(ascii, x, y + tamanoCuadricula - 5);
+                
+                // Almacena el nuevo carácter en el mapa
+                caracteresEnPosiciones.set(posicionClave, ascii);
+            }
+        }
+
+        lienzo.addEventListener("mousedown", (evento) => {
+            dibujando = true;
+            const x = obtenerPosicionAjustada(evento.offsetX);
+            const y = obtenerPosicionAjustada(evento.offsetY);
+            dibujarAscii(x, y);
+        });
+
+        lienzo.addEventListener("mousemove", (evento) => {
+            if (dibujando) {
+                const x = obtenerPosicionAjustada(evento.offsetX);
+                const y = obtenerPosicionAjustada(evento.offsetY);
+                dibujarAscii(x, y);
+            }
+        });
+
+        lienzo.addEventListener("mouseup", () => {
+            dibujando = false;
+        });
+
+        dibujarCuadricula();
+    </script>
+</body>
+</html>
\ No newline at end of file