diff --git a/content/espanol/android-tictactoe/_index.md b/content/espanol/android-tictactoe/_index.md
new file mode 100644
index 0000000000..38c9de7cb5
--- /dev/null
+++ b/content/espanol/android-tictactoe/_index.md
@@ -0,0 +1,45 @@
+---
+title: "Java: Gato"
+description: "Obtén información sobre variables, funciones y condicionales mientras creas una aplicación Gato para Android."
+date: 2021-03-13T14:04:59.61-07:00
+prereq: "Android Studio"
+difficulty: "Intermedio"
+download: "resources/_gen/files/TicTacToe.zip"
+icon: "fab fa-android"
+draft: false
+---
+
+## Comienza tu aventura de juego para Android
+
+¿Alguna vez te has preguntado cómo podrías construir tu propio juego de Gato?
+
+¡Estas de suerte, hoy es el día, podrás construir el tuyo!
+
+
+
+## ¡Vamos a comenzar!
+
+## ¿Qué es Android?
+
+¡Android es actualmente el sistema operativo móvil más utilizado en el mundo! Android Studio te permite crear aplicaciones que pueden usar estos dispositivos Android. De hecho, si tienes un teléfono Android, ¡incluso puedes descargar la aplicación que estás haciendo hoy en tu teléfono!
+
+## Acerca de este Proyecto
+
+En este proyecto te hemos dado una aplicación Android que funciona principalmente que es un juego de Tic-Tac-Toe. ¡Necesita tu ayuda para solucionar algunos problemas y agregar algunas partes para que sea un gran juego!
+
+## Descarga los archivos del proyecto
+
+Para comenzar, descargue los archivos del proyecto siguiendo estos pasos:
+1. [Descarga los archivos de proyecto](../resources/_gen/files/TicTacToe.zip) para tu juego.
+2. Busque el archivo TicTacToe.zip en su carpeta de descargas.
+3. Descomprima el archivo.
+ - En Windows: Haga clic derecho en TicTacToe.zip y seleccione `Extraer todo...`. Se creará una carpeta llamada `TicTacToe` que contiene el código del proyecto.
+
+¡En esta aventura, tendrás que resolver los rompecabezas marcados con etiquetas `PUZZLE` para completar el juego!
+
+## Tabla de contenidos
+
+
+Tabla de contenidos
+{{% children /%}}
+
\ No newline at end of file
diff --git a/content/espanol/android-tictactoe/android-setup.md b/content/espanol/android-tictactoe/android-setup.md
new file mode 100644
index 0000000000..30c4868807
--- /dev/null
+++ b/content/espanol/android-tictactoe/android-setup.md
@@ -0,0 +1,77 @@
+---
+title: "Configuración de Android"
+date: 2021-03-13T14:17:07.42-07:00
+draft: false
+weight: 2
+---
+Sigue los pasos que se indican a continuación para instalar Android Studio en tu ordenador. Si ya tienes Android Studio instalado, ábrelo y salta al siguiente paso.
+
+Estos pasos tienen ejemplos para instalar en equipos Windows. Sin embargo, los pasos también son similares para otros tipos de computadoras.
+
+## Descarga e Instala Android Studio
+1. [Descarga Android Studio](https://developer.android.com/studio/) para tu sistema operativo.
+2. [Sigue estos pasos](https://developer.android.com/studio/install) para instalar Android Studio.
+
+
+## Establecer la variable de entorno JAVA_HOME
+Android Studio viene con una versión de Java necesaria para que ciertas partes de la aplicación se ejecuten. Siga los pasos a continuación para establecer la variable de entorno `JAVA_HOME` en su computadora, que le indica a estas herramientas dónde encontrar Java:
+1. En el cuadro de búsqueda en la parte inferior izquierda de la pantalla, escriba `env`.
+2. Selecciona en "Mejor coincidencia" `Editar las variables de entorno del sistema`.
+
+
+
+3. Selecciona `Variables de entorno...`.
+
+4. `Nuevo...` en `Variables de usuario`.
+
+5. Escribe JAVA_HOME como el nombre de la variable.
+
+6. Copia lo siguiente en el valor de la variable:
+```
+C:\Program Files\Android\Android Studio\jre
+```
+7. Selecciona OK.
+
+
+{{% notice tip %}}
+Te recomendamos que reinicies tu computadora ahora para que Android Studio se abra correctamente.
+{{% /notice %}}
+
+## Inicia Android Studio
+Una vez instalada, abre Android Studio para trabajar en la aplicación.
+
+{{% notice tip %}}
+Hay varias formas de iniciar la aplicación Android Studio en tu computadora con Windows. Aquí hay dos métodos:
+#### Método 1
+1. Haz clic en el ícono de Windows en la esquina inferior izquierda de tu computadora.
+2. Desplázate por la lista hasta que veas la carpeta `Android Studio`.
+3. Haz clic en la carpeta `Android Studio` para expandirla.
+4. Haz clic en la aplicación `Android Studio` en la carpeta para iniciar Android Studio.
+
+#### Método 2
+1. Haz clic en el ícono de Windows en la esquina inferior izquierda de tu computadora.
+2. Desplázate por la lista hasta que veas la carpeta `Android Studio`.
+3. Haz clic en la carpeta `Android Studio` para expandirla.
+4. Haz clic en la aplicación `Android Studio` en la carpeta para iniciar Android Studio.
+{{% /notice %}}
+
+## Abre los Archivos del Proyecto
+1. Haz clic en `Abrir un proyecto existente` en la pantalla de inicio de Android Studio.
+2. Busca la ubicación donde descargó los archivos del proyecto.
+3. Selecciona la carpeta `TicTacToe` dentro de la carpeta `TicTacToe` que descomprimiste anteriormente.
+ - La carpeta `TicTacToe` para seleccionar debe tener un ícono verde de Android al lado, lo que indica que es una carpeta de proyecto de Android.
+
+
+Inicia Android Studio y abre el proyecto. Deberías ver algo similar a la siguiente captura de pantalla:
+
+
+## Aceptar Licencias
+Antes de poder ejecutar el código, deberá aceptar las licencias de Android siguiendo los pasos a continuación:
+1. Haz clic en el botón `Terminal` en la parte inferior de la ventana de Android Studio.
+2. Escribe el siguiente comando, reemplazando `` con el nombre de usuario de tu computadora.
+
+```
+C:\Users\\AppData\Local\Android\Sdk\tools\bin\sdkmanager --licenses
+```
+3. Escribe `y` y presiona `ENTER` en las indicaciones, para aceptar las licencias. Esto será necesario varias veces.
+
diff --git a/content/espanol/android-tictactoe/answer-key.md b/content/espanol/android-tictactoe/answer-key.md
new file mode 100644
index 0000000000..d1a3487de9
--- /dev/null
+++ b/content/espanol/android-tictactoe/answer-key.md
@@ -0,0 +1,51 @@
+---
+title: "Respuestas - Android Gato"
+date: 2021-03-13T14:17:07.42-07:00
+hidden: true
+weight: 14
+---
+
+### Acertijo 1
+```xml
+
+ Gato
+
+```
+
+### Acertijo 2
+```kotlin
+Toast.makeText(this, "Bienvenido al juego del Gato", Toast.LENGTH_LONG).show()
+```
+
+### Acertijo 3
+#### Acertijo 3a
+```kotlin
+var colorGreen = Color.GREEN
+```
+#### Acertijo 3b
+```kotlin
+var winner = -1
+```
+
+### Acertijo Final
+```kotlin
+//cross1
+if (Player1.contains(1) && Player1.contains(5) && Player1.contains(9))
+{
+ winner = 1
+}
+if (Player2.contains(1) && Player2.contains(5) && Player2.contains(9))
+{
+ winner = 2
+}
+
+//cross2
+if (Player1.contains(3) && Player1.contains(5) && Player1.contains(7))
+{
+ winner = 1
+}
+if (Player2.contains(3) && Player2.contains(5) && Player2.contains(7))
+{
+ winner = 2
+}
+```
\ No newline at end of file
diff --git a/content/espanol/android-tictactoe/app-structure.md b/content/espanol/android-tictactoe/app-structure.md
new file mode 100644
index 0000000000..3699b59c05
--- /dev/null
+++ b/content/espanol/android-tictactoe/app-structure.md
@@ -0,0 +1,29 @@
+---
+title: "Estructura de la Aplicación del Juego"
+date: 2021-03-13T14:17:07.42-07:00
+draft: false
+weight: 3
+---
+
+## Volviendo a lo Básico
+Ahora que el juego tiene el título correcto, profundicemos en todos estos archivos en la carpeta del juego. ¿Qué significan todos ellos? ¿Cómo contribuye al juego?
+
+
+### AndroidManifest.xml
+Cada proyecto en Android incluye un archivo de manifiesto. Para tu juego, este es el archivo `AndroidManifest.xml`. El archivo de manifiesto define los metadatos para su juego, por ejemplo, puede definir el icono y el tema general para su aplicación de juego.
+
+### activity_main.xml
+Este archivo se encuentra en la carpeta "layout". Como indica el nombre de la carpeta, los archivos de esta carpeta definen el aspecto de la aplicación. Si observa el código de `activity_main.xml`, verá palabras clave como `TableLayout` o `TableRow`. La combinación de palabras clave en el archivo `activity_main.xml` crea el diseño para los botones de selección de juegos (Jugador vs Jugador o Jugador vs Computadora), el tablero de tres en raya y el botón de reinicio. La palabra clave `TableLayout` dice que el diseño se alineará con un estilo de tabla, que incluye columnas y filas. La palabra clave `TableRow` crea una nueva fila en el diseño, con cada elemento adicional correspondiente a un lugar en esa fila:
+
+
+### MainActivity.kt
+
+Este archivo se encuentra en la carpeta "java". El archivo contiene el código y la lógica de la aplicación.
+
+### colors.xml, strings.xml, styles.xml
+
+Estos archivos se encuentran en la carpeta "valores". Los archivos contienen valores a los que pueden hacer referencia otros archivos XML y código de aplicación.
+
+## Juntando Todo
+
+Todos estos archivos trabajan juntos para crear tu juego. El archivo `activity_main.xml` decide lo que se le muestra. Al hacer clic en los botones, los eventos se envían desde el `activity_main.xml` al `MainActivity.kt` para determinar qué sucede en ese clic del botón. Para valores repetibles, `activity_main.xml` y `MainActivity.kt` pueden llegar a `colors.xml`, `strings.xml` o `styles.xml` para usar esos valores desde una ubicación conveniente.
\ No newline at end of file
diff --git a/content/espanol/android-tictactoe/booleans.md b/content/espanol/android-tictactoe/booleans.md
new file mode 100644
index 0000000000..091dff515d
--- /dev/null
+++ b/content/espanol/android-tictactoe/booleans.md
@@ -0,0 +1,46 @@
+---
+title: "Booleanos"
+date: 2021-03-13T14:17:07.42-07:00
+draft: false
+weight: 9
+---
+Los booleanos son declaraciones `true` (verdaderas) o `false` (falsas). A diferencia de las cadenas o los números, los booleanos almacenan declaraciones de verdad: ¿lo que estoy diciendo es verdadero o falso? Por ejemplo, si pregunto: "¿Eres un robot?", Esta pregunta produce un resultado verdadero o falso, que llamamos booleano. En este caso, como no eres un robot (¡con suerte!), produciríamos falso. También podemos usar operadores matemáticos para crear expresiones booleanas. Aquí hay algunos ejemplos; Sin embargo, observe los símbolos inusuales para "igual a" y "no igual a":
+
+| Operador | Descripción | Operador | Descripción |
+| -------- | --------------------- | -------- | ------------------------ |
+| `<` | Menos que | `>` | Mayor que |
+| `<=` | Menos que ó igual que | `>=` | Mayor que ó igual que |
+| `==` | Igual que | `!=` | Diferente que |
+
+Como de costumbre, use `System.out.println` para imprimir sus resultados:
+
+```kotlin
+System.out.println(10 < 8);
+System.out.println((3 * 6) == (32 - 14));
+```
+{{% notice tip %}}
+## Trabajando Juntos
+
+Elimine todo el texto `System.out.println` en su código. Intenta adivinar las respuestas a las siguientes expresiones. Utilice `System.out.println` para comprobar sus respuestas.
+
+- `54 < (10 + 32)`
+- `(37 / 5) == 7`
+- `"Hola" + "Mundo" == "Hola Mundo"`
+- `false == false`
+{{% /notice %}}
+
+## Operadores Booleanos
+
+También puede conectar expresiones booleanas entre sí mediante `&&` (AND) y `||` (OR) operador. Por ejemplo, supongamos que pregunto: "¿Eres un humano y Nuvi es un robot?" La palabra "y" conecta las dos preguntas verdadero-falso. En este caso, dado que es cierto que eres un humano, y también es cierto que Nuvi es un robot, entonces el resultado general es "verdadero". Aquí hay una tabla que describe lo que sucede cuando conectamos booleanos:
+
+| Expresión | Resultado | Expresión | Resultado |
+| --------------------------- | -------- | ------------------------------------- | ------- |
+| true && true | `true` | true || true | `true` |
+| true && false | `false` | true || false | `true` |
+| false && true | `false` | false || true | `true` |
+| false && false | `false` | false || false | `false` |
+
+En resumen, `&&` requiere que ambas expresiones booleanas sean verdaderas, mientras que `||` sólo requiere que una de las dos expresiones booleanas sea verdadera. Aquí hay algunos ejemplos más:
+
+- `(5 < 8) && (9 != 10)` produce `true` ya que tanto 5 es menor que 8 y 9 no es igual a 10.
+- `(6 != 2 * 3) || (8 < 2 * 4)` produce `false` ya que tanto 6 no es igual a 2 * 3, y 8 no siendo menos de 2 * 4 producen `false`.
diff --git a/content/espanol/android-tictactoe/comments.md b/content/espanol/android-tictactoe/comments.md
new file mode 100644
index 0000000000..fe949dface
--- /dev/null
+++ b/content/espanol/android-tictactoe/comments.md
@@ -0,0 +1,32 @@
+---
+title: "Comentarios"
+date: 2021-03-13T14:17:07.42-07:00
+draft: false
+weight: 6
+---
+Los desarrolladores a menudo necesitan colaborar con otros desarrolladores. Los comentarios son una forma fácil para que los desarrolladores escriban notas en el código y se comuniquen con otros. Los comentarios son ignorados por la computadora; Por lo tanto, también son una manera fácil de decirle a la computadora que no ejecute ciertas líneas de código. Hay dos formas de crear comentarios:
+
+1. Para comentar una línea, coloca `//` al inicio de una línea de código. Por ejemplo:
+
+```kotlin
+// Este es un comentario de una sola línea.
+```
+
+2. Para comentar varias líneas a la vez, indique el comienzo del comentario con `/*` y al final del comentario con `*/`. Por ejemplo:
+
+```kotlin
+/* Este es un comentario de varias líneas de código.
+Esta línea también es parte del comentario. */
+```
+
+Para eliminar un comentario (o descomentar una línea), simplemente elimine el botón `//` para un comentario de una sola línea, o el `/*` y los `*/` caracteres para el comentario de varias líneas.
+
+{{% notice tip %}}
+## Trabajando Juntos
+
+1. Escribe `//` al inicio de `Toast.makeText(this, "Welcome to Tic-Tac-Toe”, Toast.LENGTH_LONG).show()`. Después presiona el botón de inicio (►), asegurate de que el texto `Bienvenido al juego del Gato` no se muestre en la pantalla.
+2. Borra `//` y en su lugar, rodea `Toast.makeText(this, "Welcome to Tic-Tac-Toe”, Toast.LENGTH_LONG).show()` con `/*` y `*/`. Revisa que el texto de `Welcome to Tic-Tac-Toe` sigue sin mostrarse en la pantalla después de presionar el botón de inicio (►).
+3. Borra tanto `/*` como `*/`, y presiona el botón de inicio (►). El mensaje de `Welcome to Tic-Tac-Toe` debería de verse en la consola.
+ A lo largo de los rompecabezas de hoy, verá varios comentarios de varias líneas y `// PUZZLE` comentarios (como el del acertijo 2). Estos comentarios nos guiarán para completar el juego del Gato, así que asegúrate de entender cómo comentar y descomentar el código.
+
+{{% /notice %}}
\ No newline at end of file
diff --git a/content/espanol/android-tictactoe/conditionals.md b/content/espanol/android-tictactoe/conditionals.md
new file mode 100644
index 0000000000..73775099d8
--- /dev/null
+++ b/content/espanol/android-tictactoe/conditionals.md
@@ -0,0 +1,25 @@
+---
+title: "Condicionales"
+date: 2021-03-13T14:17:07.42-07:00
+draft: false
+weight: 10
+---
+Podemos usar sentencias `if` para ejecutar una instrucción de código solo si se cumplen ciertas condiciones.
+
+Por ejemplo:
+
+```kotlin
+if (isRainingOutside == true) {
+ takeUmbrella = true;
+} else {
+ takeUmbrella = false;
+}
+```
+
+Para nuestro juego, deberíamos usar declaraciones `if` para determinar si un jugador tiene 3 coincidencias verticales, horizontales o diagonales.
+
+Dentro de los `()` al lado de `if`, debes especificar una _expresión booleana_. Los **booleanos** son declaraciones `true` (verdaderas) o `false` (falsas). Podemos utilizar esto en nuestra declaración `if`. Si la expresión es `true`, se ejecuta el código dentro de `{ }`. Si la expresión es `false`, se ejecuta el código dentro de `{ }` después de la declaración `else`.
+
+También puedes conectar **expresiones booleanas** usando el operador `&&` (AND) lo cual significa `y` y el operador `||` (OR), el cual significa `ó`.
+
+Echa un vistazo a la función `CheckWinner()` en `MainActivity.kt` y piensa en lo que están haciendo todas las declaraciones `&&` conectadas.
\ No newline at end of file
diff --git a/content/espanol/android-tictactoe/numbers.md b/content/espanol/android-tictactoe/numbers.md
new file mode 100644
index 0000000000..d7d8aafb5e
--- /dev/null
+++ b/content/espanol/android-tictactoe/numbers.md
@@ -0,0 +1,51 @@
+---
+title: "Números"
+date: 2021-03-13T14:17:07.42-07:00
+draft: false
+weight: 8
+---
+La computadora también puede hacer matemáticas regulares que se ven en la escuela. Utilice ´System.out.println´ para imprimir el resultado de las expresiones matemáticas.
+
+```kotlin
+System.out.println(5 + 4);
+System.out.println(6 * (9 - 7) / 3);
+```
+
+Aquí está la lista completa de símbolos matemáticos que puede usar:
+
+
+
+
+
+
Suuma
+
\
+
División
+
+
+
-
+
Resta
+
%
+
Módulo (resto)
+
+
+
*
+
Multiplicación
+
(,)
+
Paréntesis
+
+
+
+**_Datato curioso: División de Computadora_**
+
+La computadora hace la división de manera diferente a su calculadora regular. La división de computadoras excluirá los restos o decimales. Por ejemplo, 15 / 4 produce 3, y no 3.75.
+
+{{% notice tip %}}
+## Trabajando Juntos
+
+Intente imprimir las respuestas a lo siguiente en la consola. Asegúrese de que sus soportes coinciden. Use una calculadora (o matemática mental) para verificar que la computadora produjo la respuesta correcta.
+
+- `2 - 19`
+- `(3 + 5) \* 6`
+- `(13 + 5 \* 8) / (6 - (3 + 7))`
+- `3 % 2`
+
+{{% /notice %}}
diff --git a/content/espanol/android-tictactoe/printconsole.md b/content/espanol/android-tictactoe/printconsole.md
new file mode 100644
index 0000000000..58de0419ce
--- /dev/null
+++ b/content/espanol/android-tictactoe/printconsole.md
@@ -0,0 +1,38 @@
+---
+title: "Imprimiéndolo en Consola"
+date: 2021-03-13T14:17:07.42-07:00
+draft: false
+weight: 4
+---
+A veces, es posible que el juego o la aplicación no funcionen de la manera esperada o que desee escribir algo en la consola con fines de registro. Además de depurar la aplicación, puede usar `System.out.println()` para escribir su mensaje. Busca tus mensajes en la ventana "logcat" en la parte inferior de Android Studio:
+
+
+{{% notice tip %}}
+
+## Trabajando Juntos
+
+1. Sin quitar las comillas, intente cambiar `"Reiniciando el juego Tac-Tic-Toe!"` a `"Reiniciando el juego Tic-Tac-Toe!" ` o cualquier otra frase que te guste. Presione ejecutar para ver si algo cambia.
+2. Agregue otro `System.out.println` debajo de la línea actual para imprimir una segunda oración debajo de la primera oración.
+3. Presione ejecutar para ver si se imprimen dos oraciones. Si ves algún texto rojo, pide ayuda.
+
+{{% /notice %}}
+
+{{% notice warning %}}
+## ¡AYUDA! ¡Tengo un montón de texto rojo!
+
+Si ve algún texto rojo, ¡ha encontrado algunos errores! Por favor, pida ayuda. Tenga cuidado con lo siguiente al codificar en Android:
+
+1. `out` y `println` comienzan con una letra minúscula.
+2. `Sistema` comienza con una letra mayúscula.
+2. Asegúrese de que la oración que desea imprimir esté rodeada de comillas y que la oración esté entre paréntesis.
+3. No elimine ninguna llave `{` o `}`.
+
+{{% /notice %}}
+
+
+`System.out.println` es útil cuando desea corregir errores en el código, pero su usuario (la persona que usa la aplicación) no puede ver el texto impreso con esta función. ¡Pero podemos hacer esto con toasts! Una notificación del sistema es un texto rápido y pequeño que hacemos visible para el usuario. A continuación, le indicamos cómo hacer un toast:
+
+```kotlin
+Toast.makeText(this, "Texto que se quiera mostrar", Toast.LENGTH_SHORT).show()
+```
+
diff --git a/content/espanol/android-tictactoe/puzzle1.md b/content/espanol/android-tictactoe/puzzle1.md
new file mode 100644
index 0000000000..24fb1e2851
--- /dev/null
+++ b/content/espanol/android-tictactoe/puzzle1.md
@@ -0,0 +1,19 @@
+---
+title: "Acertijo 1 - Ejecuta el juego y resuélvelo"
+date: 2021-03-13T14:17:07.42-07:00
+draft: false
+weight: 2
+---
+
+## Ejecuta el juego
+Presiona el botón de reproducción (►) en la parte superior de Android Studio para iniciar el juego.
+
+
+Verás que el título en la parte superior de la aplicación dice Gota (¡eso no parece correcto!); cambiémoslo a Gato.
+
+## Resuelve el Acertijo
+Haz doble clic en el archivo `strings.xml` debajo de app → res → values:
+
+
+¿Cómo puedes modificar este archivo para que diga Tic-Tac-Toe?
+
diff --git a/content/espanol/android-tictactoe/puzzle2.md b/content/espanol/android-tictactoe/puzzle2.md
new file mode 100644
index 0000000000..c32ac3bc84
--- /dev/null
+++ b/content/espanol/android-tictactoe/puzzle2.md
@@ -0,0 +1,22 @@
+---
+title: "Acertijo 2 - Bienvenida al usuario"
+date: 2021-03-13T14:17:07.42-07:00
+draft: false
+weight: 5
+---
+Vamos a agregar un mensaje de bienvenida que el usuario pueda ver cuando inicie tu aplicación!
+
+Ve a **MainActivity.kt** y encuentra `// PUZZLE 2` en el código y escribe un toast que de la bienvenida al usuario a tu juego con "Bienvenido al juego del Gato". Ahora presiona el botón de inicio (►) en el código y escribe una notificación (toast) del sistema que dé la bienvenida al usuario a tu juego con "Bienvenido al juego del Gato!”. Ahora presiona el botón de inicio (►) en la parte superior de Android Studio y tu app debería tener este aspecto:
+
+
+
+{{% notice warning %}}
+## ¡AYUDA! ¡Tengo un montón de texto rojo!
+
+Si ve algún texto rojo, ¡ha encontrado algunos errores! Por favor, pida ayuda. Ten cuidado con lo siguiente al codificar en Android:
+
+1. La `t` en `Toast` es mayúscula.
+2. Asegúrate de que la oración que quieras mostrar este rodeada de comillas, y que los paréntesis estén en el lugar correcto.
+3. No elimines ningún signo de llave `{` ó `}`.
+
+{{% /notice %}}
\ No newline at end of file
diff --git a/content/espanol/android-tictactoe/puzzle3.md b/content/espanol/android-tictactoe/puzzle3.md
new file mode 100644
index 0000000000..9c613eb4ea
--- /dev/null
+++ b/content/espanol/android-tictactoe/puzzle3.md
@@ -0,0 +1,24 @@
+---
+title: "Acertijo 3 - La Prueba Final"
+date: 2021-03-13T14:17:07.42-07:00
+draft: false
+weight: 11
+---
+
+## Acertijo 3a
+Este rompecabezas pondrá a prueba tu conocimiento sobre las variables. Hay algo extraño con uno de los colores del jugador en el tablero.
+
+Busque `// PUZZLE 3a` en el archivo `MainActivity.kt` y actualice la variable `colorGreen` para mostrar piezas de color verde en el tablero.
+
+## Acertijo 3b
+¿Por qué el jugador 2 siempre gana en el primer movimiento? Esto no tiene ningún sentido, resuelve el rompecabezas 3b para arreglar el juego.
+
+Encuentra `// PUZZLE 3b` en el archivo `MainActivity.kt` y actualiza la variable `winner` para asegurarte de que un jugador realmente gane.
+
+## Acertijo Final
+
+Ahora que el Jugador 2 ya no está ganando automáticamente el juego y todas las piezas del juego se ven bien, todavía hay una última cosa que es extraña. Las reglas de Tic-Tac-Toe establecen que un jugador puede ganar cuando el jugador tiene 3 piezas conectadas horizontal, vertical o diagonalmente. El juego funciona bien para detectar las victorias horizontales y verticales, pero algo está mal con la verificación diagonal.
+
+Busque `// FINAL PUZZLE` en el archivo `MainActivity.kt`. ¡Resuelve este rompecabezas para completar el juego!
+
+
diff --git a/content/espanol/android-tictactoe/resources/_gen/files/TicTacToe/.gitignore b/content/espanol/android-tictactoe/resources/_gen/files/TicTacToe/.gitignore
new file mode 100644
index 0000000000..603b140773
--- /dev/null
+++ b/content/espanol/android-tictactoe/resources/_gen/files/TicTacToe/.gitignore
@@ -0,0 +1,14 @@
+*.iml
+.gradle
+/local.properties
+/.idea/caches
+/.idea/libraries
+/.idea/modules.xml
+/.idea/workspace.xml
+/.idea/navEditor.xml
+/.idea/assetWizardSettings.xml
+.DS_Store
+/build
+/captures
+.externalNativeBuild
+.cxx
diff --git a/content/espanol/android-tictactoe/resources/_gen/files/TicTacToe/.idea/.gitignore b/content/espanol/android-tictactoe/resources/_gen/files/TicTacToe/.idea/.gitignore
new file mode 100644
index 0000000000..26d33521af
--- /dev/null
+++ b/content/espanol/android-tictactoe/resources/_gen/files/TicTacToe/.idea/.gitignore
@@ -0,0 +1,3 @@
+# Default ignored files
+/shelf/
+/workspace.xml
diff --git a/content/espanol/android-tictactoe/resources/_gen/files/TicTacToe/.idea/.name b/content/espanol/android-tictactoe/resources/_gen/files/TicTacToe/.idea/.name
new file mode 100644
index 0000000000..a9863df93a
--- /dev/null
+++ b/content/espanol/android-tictactoe/resources/_gen/files/TicTacToe/.idea/.name
@@ -0,0 +1 @@
+Tic-Tac-Toe
\ No newline at end of file
diff --git a/content/espanol/android-tictactoe/resources/_gen/files/TicTacToe/.idea/codeStyles/Project.xml b/content/espanol/android-tictactoe/resources/_gen/files/TicTacToe/.idea/codeStyles/Project.xml
new file mode 100644
index 0000000000..7643783a82
--- /dev/null
+++ b/content/espanol/android-tictactoe/resources/_gen/files/TicTacToe/.idea/codeStyles/Project.xml
@@ -0,0 +1,123 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ xmlns:android
+
+ ^$
+
+
+
+
+
+
+
+
+ xmlns:.*
+
+ ^$
+
+
+ BY_NAME
+
+
+
+
+
+
+ .*:id
+
+ http://schemas.android.com/apk/res/android
+
+
+
+
+
+
+
+
+ .*:name
+
+ http://schemas.android.com/apk/res/android
+
+
+
+
+
+
+
+
+ name
+
+ ^$
+
+
+
+
+
+
+
+
+ style
+
+ ^$
+
+
+
+
+
+
+
+
+ .*
+
+ ^$
+
+
+ BY_NAME
+
+
+
+
+
+
+ .*
+
+ http://schemas.android.com/apk/res/android
+
+
+ ANDROID_ATTRIBUTE_ORDER
+
+
+
+
+
+
+ .*
+
+ .*
+
+
+ BY_NAME
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/content/espanol/android-tictactoe/resources/_gen/files/TicTacToe/.idea/codeStyles/codeStyleConfig.xml b/content/espanol/android-tictactoe/resources/_gen/files/TicTacToe/.idea/codeStyles/codeStyleConfig.xml
new file mode 100644
index 0000000000..79ee123c2b
--- /dev/null
+++ b/content/espanol/android-tictactoe/resources/_gen/files/TicTacToe/.idea/codeStyles/codeStyleConfig.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/content/espanol/android-tictactoe/resources/_gen/files/TicTacToe/.idea/compiler.xml b/content/espanol/android-tictactoe/resources/_gen/files/TicTacToe/.idea/compiler.xml
new file mode 100644
index 0000000000..fb7f4a8a46
--- /dev/null
+++ b/content/espanol/android-tictactoe/resources/_gen/files/TicTacToe/.idea/compiler.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/content/espanol/android-tictactoe/resources/_gen/files/TicTacToe/.idea/gradle.xml b/content/espanol/android-tictactoe/resources/_gen/files/TicTacToe/.idea/gradle.xml
new file mode 100644
index 0000000000..7b46144d88
--- /dev/null
+++ b/content/espanol/android-tictactoe/resources/_gen/files/TicTacToe/.idea/gradle.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/content/espanol/android-tictactoe/resources/_gen/files/TicTacToe/.idea/jarRepositories.xml b/content/espanol/android-tictactoe/resources/_gen/files/TicTacToe/.idea/jarRepositories.xml
new file mode 100644
index 0000000000..e34606ccde
--- /dev/null
+++ b/content/espanol/android-tictactoe/resources/_gen/files/TicTacToe/.idea/jarRepositories.xml
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/content/espanol/android-tictactoe/resources/_gen/files/TicTacToe/.idea/misc.xml b/content/espanol/android-tictactoe/resources/_gen/files/TicTacToe/.idea/misc.xml
new file mode 100644
index 0000000000..360e6d41e3
--- /dev/null
+++ b/content/espanol/android-tictactoe/resources/_gen/files/TicTacToe/.idea/misc.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/content/espanol/android-tictactoe/resources/_gen/files/TicTacToe/.idea/vcs.xml b/content/espanol/android-tictactoe/resources/_gen/files/TicTacToe/.idea/vcs.xml
new file mode 100644
index 0000000000..b082f7b0ef
--- /dev/null
+++ b/content/espanol/android-tictactoe/resources/_gen/files/TicTacToe/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/content/espanol/android-tictactoe/resources/_gen/files/TicTacToe/app/.gitignore b/content/espanol/android-tictactoe/resources/_gen/files/TicTacToe/app/.gitignore
new file mode 100644
index 0000000000..42afabfd2a
--- /dev/null
+++ b/content/espanol/android-tictactoe/resources/_gen/files/TicTacToe/app/.gitignore
@@ -0,0 +1 @@
+/build
\ No newline at end of file
diff --git a/content/espanol/android-tictactoe/resources/_gen/files/TicTacToe/app/build.gradle b/content/espanol/android-tictactoe/resources/_gen/files/TicTacToe/app/build.gradle
new file mode 100644
index 0000000000..af434effa7
--- /dev/null
+++ b/content/espanol/android-tictactoe/resources/_gen/files/TicTacToe/app/build.gradle
@@ -0,0 +1,40 @@
+apply plugin: 'com.android.application'
+apply plugin: 'kotlin-android'
+
+android {
+ compileSdkVersion 33
+
+ defaultConfig {
+ applicationId "org.nuevofoundation.tic_tac_toe"
+ minSdkVersion 16
+ targetSdkVersion 33
+ versionCode 1
+ versionName "1.0"
+
+ testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
+ }
+
+ buildTypes {
+ release {
+ minifyEnabled false
+ proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
+ }
+ }
+
+ buildFeatures {
+ viewBinding = true
+ }
+ namespace 'org.nuevofoundation.tic_tac_toe'
+}
+
+dependencies {
+ implementation fileTree(dir: "libs", include: ["*.jar"])
+ implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
+ implementation 'androidx.core:core-ktx:1.9.0'
+ implementation 'androidx.appcompat:appcompat:1.5.1'
+ implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
+ testImplementation 'junit:junit:4.13.2'
+ androidTestImplementation 'androidx.test.ext:junit:1.1.3'
+ androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'
+
+}
\ No newline at end of file
diff --git a/content/espanol/android-tictactoe/resources/_gen/files/TicTacToe/app/proguard-rules.pro b/content/espanol/android-tictactoe/resources/_gen/files/TicTacToe/app/proguard-rules.pro
new file mode 100644
index 0000000000..481bb43481
--- /dev/null
+++ b/content/espanol/android-tictactoe/resources/_gen/files/TicTacToe/app/proguard-rules.pro
@@ -0,0 +1,21 @@
+# Add project specific ProGuard rules here.
+# You can control the set of applied configuration files using the
+# proguardFiles setting in build.gradle.
+#
+# For more details, see
+# http://developer.android.com/guide/developing/tools/proguard.html
+
+# If your project uses WebView with JS, uncomment the following
+# and specify the fully qualified class name to the JavaScript interface
+# class:
+#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
+# public *;
+#}
+
+# Uncomment this to preserve the line number information for
+# debugging stack traces.
+#-keepattributes SourceFile,LineNumberTable
+
+# If you keep the line number information, uncomment this to
+# hide the original source file name.
+#-renamesourcefileattribute SourceFile
\ No newline at end of file
diff --git a/content/espanol/android-tictactoe/resources/_gen/files/TicTacToe/app/src/androidTest/java/org/nuevofoundation/tic_tac_toe/ExampleInstrumentedTest.kt b/content/espanol/android-tictactoe/resources/_gen/files/TicTacToe/app/src/androidTest/java/org/nuevofoundation/tic_tac_toe/ExampleInstrumentedTest.kt
new file mode 100644
index 0000000000..81b11365aa
--- /dev/null
+++ b/content/espanol/android-tictactoe/resources/_gen/files/TicTacToe/app/src/androidTest/java/org/nuevofoundation/tic_tac_toe/ExampleInstrumentedTest.kt
@@ -0,0 +1,24 @@
+package org.nuevofoundation.tic_tac_toe
+
+import androidx.test.platform.app.InstrumentationRegistry
+import androidx.test.ext.junit.runners.AndroidJUnit4
+
+import org.junit.Test
+import org.junit.runner.RunWith
+
+import org.junit.Assert.*
+
+/**
+ * Instrumented test, which will execute on an Android device.
+ *
+ * See [testing documentation](http://d.android.com/tools/testing).
+ */
+@RunWith(AndroidJUnit4::class)
+class ExampleInstrumentedTest {
+ @Test
+ fun useAppContext() {
+ // Context of the app under test.
+ val appContext = InstrumentationRegistry.getInstrumentation().targetContext
+ assertEquals("org.nuevofoundation.tic_tac_toe", appContext.packageName)
+ }
+}
\ No newline at end of file
diff --git a/content/espanol/android-tictactoe/resources/_gen/files/TicTacToe/app/src/main/AndroidManifest.xml b/content/espanol/android-tictactoe/resources/_gen/files/TicTacToe/app/src/main/AndroidManifest.xml
new file mode 100644
index 0000000000..bdb1e58ce0
--- /dev/null
+++ b/content/espanol/android-tictactoe/resources/_gen/files/TicTacToe/app/src/main/AndroidManifest.xml
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/content/espanol/android-tictactoe/resources/_gen/files/TicTacToe/app/src/main/java/org/nuevofoundation/tic_tac_toe/MainActivity.kt b/content/espanol/android-tictactoe/resources/_gen/files/TicTacToe/app/src/main/java/org/nuevofoundation/tic_tac_toe/MainActivity.kt
new file mode 100644
index 0000000000..529557679c
--- /dev/null
+++ b/content/espanol/android-tictactoe/resources/_gen/files/TicTacToe/app/src/main/java/org/nuevofoundation/tic_tac_toe/MainActivity.kt
@@ -0,0 +1,292 @@
+package org.nuevofoundation.tic_tac_toe
+
+import android.graphics.Color
+import androidx.appcompat.app.AppCompatActivity
+import android.os.Bundle
+import android.view.View
+import android.widget.Button
+import android.widget.Toast
+import org.nuevofoundation.tic_tac_toe.databinding.ActivityMainBinding
+import java.util.*
+
+class MainActivity : AppCompatActivity() {
+ private lateinit var binding: ActivityMainBinding
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ setContentView(R.layout.activity_main)
+ binding = ActivityMainBinding.inflate(layoutInflater)
+ val view = binding.root
+ setContentView(view)
+
+ // PUZZLE 2
+
+ }
+
+ var player1 = ArrayList()
+ var player2 = ArrayList()
+ var activePlayer = 1
+ var setPlayer = 1
+ var colorBlue = Color.rgb(0, 161, 241)
+ // PUZZLE 3a
+ var colorGreen = Color.BLACK
+
+ fun restartGame(view:View)
+ {
+ println("Restarting the Tac-Tic-Toe Game!")
+ binding.topLeftBtn.setBackgroundResource(android.R.drawable.btn_default)
+ binding.topCenterBtn.setBackgroundResource(android.R.drawable.btn_default)
+ binding.topRightBtn.setBackgroundResource(android.R.drawable.btn_default)
+ binding.centerLeftBtn.setBackgroundResource(android.R.drawable.btn_default)
+ binding.centerBtn.setBackgroundResource(android.R.drawable.btn_default)
+ binding.centerRightBtn.setBackgroundResource(android.R.drawable.btn_default)
+ binding.bottomLeftBtn.setBackgroundResource(android.R.drawable.btn_default)
+ binding.bottomCenterBtn.setBackgroundResource(android.R.drawable.btn_default)
+ binding.bottomRightBtn.setBackgroundResource(android.R.drawable.btn_default)
+
+ binding.topLeftBtn.text = ""
+ binding.topCenterBtn.text = ""
+ binding.topRightBtn.text = ""
+ binding.centerLeftBtn.text = ""
+ binding.centerBtn.text = ""
+ binding.centerRightBtn.text = ""
+ binding.bottomLeftBtn.text = ""
+ binding.bottomCenterBtn.text = ""
+ binding.bottomRightBtn.text = ""
+
+ player1.clear()
+ player2.clear()
+ activePlayer = 1
+
+ binding.topLeftBtn.isEnabled = true
+ binding.topCenterBtn.isEnabled = true
+ binding.topRightBtn.isEnabled = true
+ binding.centerLeftBtn.isEnabled = true
+ binding.centerBtn.isEnabled = true
+ binding.centerRightBtn.isEnabled = true
+ binding.bottomLeftBtn.isEnabled = true
+ binding.bottomCenterBtn.isEnabled = true
+ binding.bottomRightBtn.isEnabled = true
+
+ setPlayer = 1
+ binding.PVP.setBackgroundColor(colorBlue)
+ binding.PVC.setBackgroundColor(android.R.drawable.btn_default)
+
+ }
+
+ fun buttonClick(view: View)
+ {
+ val buSelected:Button = view as Button
+ var cellId = 0
+ when(buSelected.id)
+ {
+ R.id.topLeftBtn -> cellId = 1
+ R.id.topCenterBtn -> cellId = 2
+ R.id.topRightBtn -> cellId = 3
+
+ R.id.centerLeftBtn -> cellId = 4
+ R.id.centerBtn -> cellId = 5
+ R.id.centerRightBtn -> cellId = 6
+
+ R.id.bottomLeftBtn -> cellId = 7
+ R.id.bottomCenterBtn -> cellId = 8
+ R.id.bottomRightBtn -> cellId = 9
+ }
+ playGame(cellId,buSelected)
+
+ }
+
+ fun playerChoose(view:View)
+ {
+ val ps:Button = view as Button
+ when(ps.id)
+ {
+ R.id.PVP -> {
+ setPlayer = 1
+ ps.setBackgroundColor(colorBlue)
+ binding.PVC.setBackgroundColor(android.R.drawable.btn_default)
+ }
+ R.id.PVC -> {
+ setPlayer = 2
+ ps.setBackgroundColor(colorBlue)
+ binding.PVP.setBackgroundColor(android.R.drawable.btn_default)
+ }
+ }
+ }
+
+
+ private fun playGame(cellId:Int, buSelected:Button)
+ {
+ if (activePlayer == 1)
+ {
+ buSelected.text = "X"
+ buSelected.setBackgroundColor(colorGreen)
+ player1.add(cellId)
+ activePlayer = 2
+ if (setPlayer == 1)
+ {}
+ else
+ {
+ try {
+ autoPlay()
+ }catch (ex:Exception)
+ {
+ Toast.makeText(this,"Game Over",Toast.LENGTH_SHORT).show()
+ }
+
+ }
+ }
+ else
+ {
+ buSelected.text = "O"
+ buSelected.setBackgroundColor(colorBlue)
+ player2.add(cellId)
+ activePlayer = 1
+ }
+ buSelected.isEnabled = false
+ checkWinner()
+ }
+
+ private fun checkWinner()
+ {
+ // PUZZLE 3b
+ var winner = 2
+
+ //row1
+ if (player1.contains(1) && player1.contains(2) && player1.contains(3))
+ {
+ winner = 1
+ }
+ if (player2.contains(1) && player2.contains(2) && player2.contains(3))
+ {
+ winner = 2
+ }
+
+ //row2
+ if (player1.contains(4) && player1.contains(5) && player1.contains(6))
+ {
+ winner = 1
+ }
+ if (player2.contains(4) && player2.contains(5) && player2.contains(6))
+ {
+ winner = 2
+ }
+
+ //row3
+ if (player1.contains(7) && player1.contains(8) && player1.contains(9))
+ {
+ winner = 1
+ }
+ if (player2.contains(7) && player2.contains(8) && player2.contains(9))
+ {
+ winner = 2
+ }
+
+ //col1
+ if (player1.contains(1) && player1.contains(4) && player1.contains(7))
+ {
+ winner = 1
+ }
+ if (player2.contains(1) && player2.contains(4) && player2.contains(7))
+ {
+ winner = 2
+ }
+
+ //col2
+ if (player1.contains(2) && player1.contains(5) && player1.contains(8))
+ {
+ winner = 1
+ }
+ if (player2.contains(2) && player2.contains(5) && player2.contains(8))
+ {
+ winner = 2
+ }
+
+ //col3
+ if (player1.contains(3) && player1.contains(6) && player1.contains(9))
+ {
+ winner = 1
+ }
+ if (player2.contains(3) && player2.contains(6) && player2.contains(9))
+ {
+ winner = 2
+ }
+
+ // FINAL PUZZLE
+
+
+ if (winner != -1)
+ {
+ if (winner == 1)
+ {
+ if(setPlayer == 1) {
+ Toast.makeText(this, "Player 1 Wins!!", Toast.LENGTH_SHORT).show()
+ stopTouch()
+ }
+ else
+ {
+ Toast.makeText(this, "You Won!!", Toast.LENGTH_SHORT).show()
+ stopTouch()
+ }
+ }
+ else
+ {
+ if (setPlayer == 1) {
+ Toast.makeText(this, "Player 2 Wins!!", Toast.LENGTH_SHORT).show()
+ stopTouch()
+ }
+ else
+ {
+ Toast.makeText(this, "CPU Wins!!", Toast.LENGTH_SHORT).show()
+ stopTouch()
+ }
+ }
+ }
+ }
+
+ private fun stopTouch()
+ {
+ binding.topLeftBtn.isEnabled = false
+ binding.topCenterBtn.isEnabled = false
+ binding.topRightBtn.isEnabled = false
+ binding.centerLeftBtn.isEnabled = false
+ binding.centerBtn.isEnabled = false
+ binding.centerRightBtn.isEnabled = false
+ binding.bottomLeftBtn.isEnabled = false
+ binding.bottomCenterBtn.isEnabled = false
+ binding.bottomRightBtn.isEnabled = false
+ }
+
+ private fun autoPlay()
+ {
+ val emptyCells = ArrayList()
+ for (cellId in 1..9) {
+ if (player1.contains(cellId) || player2.contains(cellId))
+ {}
+ else
+ {
+ emptyCells.add(cellId)
+ }
+ }
+
+ val r = Random()
+ val randomIndex = r.nextInt(emptyCells.size-0)+0
+ val cellId = emptyCells[randomIndex]
+
+ val buSelect:Button?
+ buSelect = when(cellId) {
+ 1 -> binding.topLeftBtn
+ 2 -> binding.topCenterBtn
+ 3 -> binding.topRightBtn
+ 4 -> binding.centerLeftBtn
+ 5 -> binding.centerBtn
+ 6 -> binding.centerRightBtn
+ 7 -> binding.bottomLeftBtn
+ 8 -> binding.bottomCenterBtn
+ 9 -> binding.bottomRightBtn
+ else -> binding.topLeftBtn
+ }
+
+ playGame(cellId,buSelect)
+ }
+}
diff --git a/content/espanol/android-tictactoe/resources/_gen/files/TicTacToe/app/src/main/res/drawable-v24/ic_launcher_foreground.xml b/content/espanol/android-tictactoe/resources/_gen/files/TicTacToe/app/src/main/res/drawable-v24/ic_launcher_foreground.xml
new file mode 100644
index 0000000000..2b068d1146
--- /dev/null
+++ b/content/espanol/android-tictactoe/resources/_gen/files/TicTacToe/app/src/main/res/drawable-v24/ic_launcher_foreground.xml
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/content/espanol/android-tictactoe/resources/_gen/files/TicTacToe/app/src/main/res/drawable/ic_launcher_background.xml b/content/espanol/android-tictactoe/resources/_gen/files/TicTacToe/app/src/main/res/drawable/ic_launcher_background.xml
new file mode 100644
index 0000000000..07d5da9cbf
--- /dev/null
+++ b/content/espanol/android-tictactoe/resources/_gen/files/TicTacToe/app/src/main/res/drawable/ic_launcher_background.xml
@@ -0,0 +1,170 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/content/espanol/android-tictactoe/resources/_gen/files/TicTacToe/app/src/main/res/layout/activity_main.xml b/content/espanol/android-tictactoe/resources/_gen/files/TicTacToe/app/src/main/res/layout/activity_main.xml
new file mode 100644
index 0000000000..d70c83505d
--- /dev/null
+++ b/content/espanol/android-tictactoe/resources/_gen/files/TicTacToe/app/src/main/res/layout/activity_main.xml
@@ -0,0 +1,167 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/content/espanol/android-tictactoe/resources/_gen/files/TicTacToe/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/content/espanol/android-tictactoe/resources/_gen/files/TicTacToe/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
new file mode 100644
index 0000000000..eca70cfe52
--- /dev/null
+++ b/content/espanol/android-tictactoe/resources/_gen/files/TicTacToe/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/content/espanol/android-tictactoe/resources/_gen/files/TicTacToe/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/content/espanol/android-tictactoe/resources/_gen/files/TicTacToe/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
new file mode 100644
index 0000000000..eca70cfe52
--- /dev/null
+++ b/content/espanol/android-tictactoe/resources/_gen/files/TicTacToe/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/content/espanol/android-tictactoe/resources/_gen/files/TicTacToe/app/src/main/res/mipmap-hdpi/ic_launcher.png b/content/espanol/android-tictactoe/resources/_gen/files/TicTacToe/app/src/main/res/mipmap-hdpi/ic_launcher.png
new file mode 100644
index 0000000000..a571e60098
Binary files /dev/null and b/content/espanol/android-tictactoe/resources/_gen/files/TicTacToe/app/src/main/res/mipmap-hdpi/ic_launcher.png differ
diff --git a/content/espanol/android-tictactoe/resources/_gen/files/TicTacToe/app/src/main/res/mipmap-hdpi/ic_launcher_round.png b/content/espanol/android-tictactoe/resources/_gen/files/TicTacToe/app/src/main/res/mipmap-hdpi/ic_launcher_round.png
new file mode 100644
index 0000000000..61da551c55
Binary files /dev/null and b/content/espanol/android-tictactoe/resources/_gen/files/TicTacToe/app/src/main/res/mipmap-hdpi/ic_launcher_round.png differ
diff --git a/content/espanol/android-tictactoe/resources/_gen/files/TicTacToe/app/src/main/res/mipmap-mdpi/ic_launcher.png b/content/espanol/android-tictactoe/resources/_gen/files/TicTacToe/app/src/main/res/mipmap-mdpi/ic_launcher.png
new file mode 100644
index 0000000000..c41dd28531
Binary files /dev/null and b/content/espanol/android-tictactoe/resources/_gen/files/TicTacToe/app/src/main/res/mipmap-mdpi/ic_launcher.png differ
diff --git a/content/espanol/android-tictactoe/resources/_gen/files/TicTacToe/app/src/main/res/mipmap-mdpi/ic_launcher_round.png b/content/espanol/android-tictactoe/resources/_gen/files/TicTacToe/app/src/main/res/mipmap-mdpi/ic_launcher_round.png
new file mode 100644
index 0000000000..db5080a752
Binary files /dev/null and b/content/espanol/android-tictactoe/resources/_gen/files/TicTacToe/app/src/main/res/mipmap-mdpi/ic_launcher_round.png differ
diff --git a/content/espanol/android-tictactoe/resources/_gen/files/TicTacToe/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/content/espanol/android-tictactoe/resources/_gen/files/TicTacToe/app/src/main/res/mipmap-xhdpi/ic_launcher.png
new file mode 100644
index 0000000000..6dba46dab1
Binary files /dev/null and b/content/espanol/android-tictactoe/resources/_gen/files/TicTacToe/app/src/main/res/mipmap-xhdpi/ic_launcher.png differ
diff --git a/content/espanol/android-tictactoe/resources/_gen/files/TicTacToe/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png b/content/espanol/android-tictactoe/resources/_gen/files/TicTacToe/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png
new file mode 100644
index 0000000000..da31a871c8
Binary files /dev/null and b/content/espanol/android-tictactoe/resources/_gen/files/TicTacToe/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png differ
diff --git a/content/espanol/android-tictactoe/resources/_gen/files/TicTacToe/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/content/espanol/android-tictactoe/resources/_gen/files/TicTacToe/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
new file mode 100644
index 0000000000..15ac681720
Binary files /dev/null and b/content/espanol/android-tictactoe/resources/_gen/files/TicTacToe/app/src/main/res/mipmap-xxhdpi/ic_launcher.png differ
diff --git a/content/espanol/android-tictactoe/resources/_gen/files/TicTacToe/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png b/content/espanol/android-tictactoe/resources/_gen/files/TicTacToe/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png
new file mode 100644
index 0000000000..b216f2d313
Binary files /dev/null and b/content/espanol/android-tictactoe/resources/_gen/files/TicTacToe/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png differ
diff --git a/content/espanol/android-tictactoe/resources/_gen/files/TicTacToe/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/content/espanol/android-tictactoe/resources/_gen/files/TicTacToe/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
new file mode 100644
index 0000000000..f25a419744
Binary files /dev/null and b/content/espanol/android-tictactoe/resources/_gen/files/TicTacToe/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png differ
diff --git a/content/espanol/android-tictactoe/resources/_gen/files/TicTacToe/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png b/content/espanol/android-tictactoe/resources/_gen/files/TicTacToe/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png
new file mode 100644
index 0000000000..e96783ccce
Binary files /dev/null and b/content/espanol/android-tictactoe/resources/_gen/files/TicTacToe/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png differ
diff --git a/content/espanol/android-tictactoe/resources/_gen/files/TicTacToe/app/src/main/res/values/colors.xml b/content/espanol/android-tictactoe/resources/_gen/files/TicTacToe/app/src/main/res/values/colors.xml
new file mode 100644
index 0000000000..836155a45f
--- /dev/null
+++ b/content/espanol/android-tictactoe/resources/_gen/files/TicTacToe/app/src/main/res/values/colors.xml
@@ -0,0 +1,5 @@
+
+
+ #6200EE
+ #a3a1fd
+
\ No newline at end of file
diff --git a/content/espanol/android-tictactoe/resources/_gen/files/TicTacToe/app/src/main/res/values/strings.xml b/content/espanol/android-tictactoe/resources/_gen/files/TicTacToe/app/src/main/res/values/strings.xml
new file mode 100644
index 0000000000..cbdad93433
--- /dev/null
+++ b/content/espanol/android-tictactoe/resources/_gen/files/TicTacToe/app/src/main/res/values/strings.xml
@@ -0,0 +1,4 @@
+
+
+ Toe-Tac-Tic
+
\ No newline at end of file
diff --git a/content/espanol/android-tictactoe/resources/_gen/files/TicTacToe/app/src/main/res/values/styles.xml b/content/espanol/android-tictactoe/resources/_gen/files/TicTacToe/app/src/main/res/values/styles.xml
new file mode 100644
index 0000000000..5259c1e1b9
--- /dev/null
+++ b/content/espanol/android-tictactoe/resources/_gen/files/TicTacToe/app/src/main/res/values/styles.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/content/espanol/android-tictactoe/resources/_gen/files/TicTacToe/app/src/test/java/org/nuevofoundation/tic_tac_toe/ExampleUnitTest.kt b/content/espanol/android-tictactoe/resources/_gen/files/TicTacToe/app/src/test/java/org/nuevofoundation/tic_tac_toe/ExampleUnitTest.kt
new file mode 100644
index 0000000000..4714c1a266
--- /dev/null
+++ b/content/espanol/android-tictactoe/resources/_gen/files/TicTacToe/app/src/test/java/org/nuevofoundation/tic_tac_toe/ExampleUnitTest.kt
@@ -0,0 +1,17 @@
+package org.nuevofoundation.tic_tac_toe
+
+import org.junit.Test
+
+import org.junit.Assert.*
+
+/**
+ * Example local unit test, which will execute on the development machine (host).
+ *
+ * See [testing documentation](http://d.android.com/tools/testing).
+ */
+class ExampleUnitTest {
+ @Test
+ fun addition_isCorrect() {
+ assertEquals(4, 2 + 2)
+ }
+}
\ No newline at end of file
diff --git a/content/espanol/android-tictactoe/resources/_gen/files/TicTacToe/build.gradle b/content/espanol/android-tictactoe/resources/_gen/files/TicTacToe/build.gradle
new file mode 100644
index 0000000000..e9e15d2f21
--- /dev/null
+++ b/content/espanol/android-tictactoe/resources/_gen/files/TicTacToe/build.gradle
@@ -0,0 +1,26 @@
+// Top-level build file where you can add configuration options common to all sub-projects/modules.
+buildscript {
+ ext.kotlin_version = '1.7.10'
+ repositories {
+ google()
+ mavenCentral()
+ }
+ dependencies {
+ classpath 'com.android.tools.build:gradle:7.3.0'
+ classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
+
+ // NOTE: Do not place your application dependencies here; they belong
+ // in the individual module build.gradle files
+ }
+}
+
+allprojects {
+ repositories {
+ google()
+ mavenCentral()
+ }
+}
+
+task clean(type: Delete) {
+ delete rootProject.buildDir
+}
\ No newline at end of file
diff --git a/content/espanol/android-tictactoe/resources/_gen/files/TicTacToe/gradle.properties b/content/espanol/android-tictactoe/resources/_gen/files/TicTacToe/gradle.properties
new file mode 100644
index 0000000000..4d15d015f8
--- /dev/null
+++ b/content/espanol/android-tictactoe/resources/_gen/files/TicTacToe/gradle.properties
@@ -0,0 +1,21 @@
+# Project-wide Gradle settings.
+# IDE (e.g. Android Studio) users:
+# Gradle settings configured through the IDE *will override*
+# any settings specified in this file.
+# For more details on how to configure your build environment visit
+# http://www.gradle.org/docs/current/userguide/build_environment.html
+# Specifies the JVM arguments used for the daemon process.
+# The setting is particularly useful for tweaking memory settings.
+org.gradle.jvmargs=-Xmx2048m
+# When configured, Gradle will run in incubating parallel mode.
+# This option should only be used with decoupled projects. More details, visit
+# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
+# org.gradle.parallel=true
+# AndroidX package structure to make it clearer which packages are bundled with the
+# Android operating system, and which are packaged with your app"s APK
+# https://developer.android.com/topic/libraries/support-library/androidx-rn
+android.useAndroidX=true
+# Automatically convert third-party libraries to use AndroidX
+android.enableJetifier=true
+# Kotlin code style for this project: "official" or "obsolete":
+kotlin.code.style=official
\ No newline at end of file
diff --git a/content/espanol/android-tictactoe/resources/_gen/files/TicTacToe/gradle/wrapper/gradle-wrapper.properties b/content/espanol/android-tictactoe/resources/_gen/files/TicTacToe/gradle/wrapper/gradle-wrapper.properties
new file mode 100644
index 0000000000..cbade937f7
--- /dev/null
+++ b/content/espanol/android-tictactoe/resources/_gen/files/TicTacToe/gradle/wrapper/gradle-wrapper.properties
@@ -0,0 +1,6 @@
+#Mon Jul 27 15:26:03 PDT 2020
+distributionBase=GRADLE_USER_HOME
+distributionPath=wrapper/dists
+zipStoreBase=GRADLE_USER_HOME
+zipStorePath=wrapper/dists
+distributionUrl=https\://services.gradle.org/distributions/gradle-7.4-all.zip
diff --git a/content/espanol/android-tictactoe/resources/_gen/files/TicTacToe/gradlew b/content/espanol/android-tictactoe/resources/_gen/files/TicTacToe/gradlew
new file mode 100644
index 0000000000..cccdd3d517
--- /dev/null
+++ b/content/espanol/android-tictactoe/resources/_gen/files/TicTacToe/gradlew
@@ -0,0 +1,172 @@
+#!/usr/bin/env sh
+
+##############################################################################
+##
+## Gradle start up script for UN*X
+##
+##############################################################################
+
+# Attempt to set APP_HOME
+# Resolve links: $0 may be a link
+PRG="$0"
+# Need this for relative symlinks.
+while [ -h "$PRG" ] ; do
+ ls=`ls -ld "$PRG"`
+ link=`expr "$ls" : '.*-> \(.*\)$'`
+ if expr "$link" : '/.*' > /dev/null; then
+ PRG="$link"
+ else
+ PRG=`dirname "$PRG"`"/$link"
+ fi
+done
+SAVED="`pwd`"
+cd "`dirname \"$PRG\"`/" >/dev/null
+APP_HOME="`pwd -P`"
+cd "$SAVED" >/dev/null
+
+APP_NAME="Gradle"
+APP_BASE_NAME=`basename "$0"`
+
+# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+DEFAULT_JVM_OPTS=""
+
+# Use the maximum available, or set MAX_FD != -1 to use that value.
+MAX_FD="maximum"
+
+warn () {
+ echo "$*"
+}
+
+die () {
+ echo
+ echo "$*"
+ echo
+ exit 1
+}
+
+# OS specific support (must be 'true' or 'false').
+cygwin=false
+msys=false
+darwin=false
+nonstop=false
+case "`uname`" in
+ CYGWIN* )
+ cygwin=true
+ ;;
+ Darwin* )
+ darwin=true
+ ;;
+ MINGW* )
+ msys=true
+ ;;
+ NONSTOP* )
+ nonstop=true
+ ;;
+esac
+
+CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
+
+# Determine the Java command to use to start the JVM.
+if [ -n "$JAVA_HOME" ] ; then
+ if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
+ # IBM's JDK on AIX uses strange locations for the executables
+ JAVACMD="$JAVA_HOME/jre/sh/java"
+ else
+ JAVACMD="$JAVA_HOME/bin/java"
+ fi
+ if [ ! -x "$JAVACMD" ] ; then
+ die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+ fi
+else
+ JAVACMD="java"
+ which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+fi
+
+# Increase the maximum file descriptors if we can.
+if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then
+ MAX_FD_LIMIT=`ulimit -H -n`
+ if [ $? -eq 0 ] ; then
+ if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
+ MAX_FD="$MAX_FD_LIMIT"
+ fi
+ ulimit -n $MAX_FD
+ if [ $? -ne 0 ] ; then
+ warn "Could not set maximum file descriptor limit: $MAX_FD"
+ fi
+ else
+ warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
+ fi
+fi
+
+# For Darwin, add options to specify how the application appears in the dock
+if $darwin; then
+ GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
+fi
+
+# For Cygwin, switch paths to Windows format before running java
+if $cygwin ; then
+ APP_HOME=`cygpath --path --mixed "$APP_HOME"`
+ CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
+ JAVACMD=`cygpath --unix "$JAVACMD"`
+
+ # We build the pattern for arguments to be converted via cygpath
+ ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
+ SEP=""
+ for dir in $ROOTDIRSRAW ; do
+ ROOTDIRS="$ROOTDIRS$SEP$dir"
+ SEP="|"
+ done
+ OURCYGPATTERN="(^($ROOTDIRS))"
+ # Add a user-defined pattern to the cygpath arguments
+ if [ "$GRADLE_CYGPATTERN" != "" ] ; then
+ OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
+ fi
+ # Now convert the arguments - kludge to limit ourselves to /bin/sh
+ i=0
+ for arg in "$@" ; do
+ CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
+ CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option
+
+ if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
+ eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
+ else
+ eval `echo args$i`="\"$arg\""
+ fi
+ i=$((i+1))
+ done
+ case $i in
+ (0) set -- ;;
+ (1) set -- "$args0" ;;
+ (2) set -- "$args0" "$args1" ;;
+ (3) set -- "$args0" "$args1" "$args2" ;;
+ (4) set -- "$args0" "$args1" "$args2" "$args3" ;;
+ (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
+ (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
+ (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
+ (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
+ (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
+ esac
+fi
+
+# Escape application args
+save () {
+ for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done
+ echo " "
+}
+APP_ARGS=$(save "$@")
+
+# Collect all arguments for the java command, following the shell quoting and substitution rules
+eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS"
+
+# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong
+if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then
+ cd "$(dirname "$0")"
+fi
+
+exec "$JAVACMD" "$@"
diff --git a/content/espanol/android-tictactoe/resources/_gen/files/TicTacToe/gradlew.bat b/content/espanol/android-tictactoe/resources/_gen/files/TicTacToe/gradlew.bat
new file mode 100644
index 0000000000..f9553162f1
--- /dev/null
+++ b/content/espanol/android-tictactoe/resources/_gen/files/TicTacToe/gradlew.bat
@@ -0,0 +1,84 @@
+@if "%DEBUG%" == "" @echo off
+@rem ##########################################################################
+@rem
+@rem Gradle startup script for Windows
+@rem
+@rem ##########################################################################
+
+@rem Set local scope for the variables with windows NT shell
+if "%OS%"=="Windows_NT" setlocal
+
+set DIRNAME=%~dp0
+if "%DIRNAME%" == "" set DIRNAME=.
+set APP_BASE_NAME=%~n0
+set APP_HOME=%DIRNAME%
+
+@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+set DEFAULT_JVM_OPTS=
+
+@rem Find java.exe
+if defined JAVA_HOME goto findJavaFromJavaHome
+
+set JAVA_EXE=java.exe
+%JAVA_EXE% -version >NUL 2>&1
+if "%ERRORLEVEL%" == "0" goto init
+
+echo.
+echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+
+goto fail
+
+:findJavaFromJavaHome
+set JAVA_HOME=%JAVA_HOME:"=%
+set JAVA_EXE=%JAVA_HOME%/bin/java.exe
+
+if exist "%JAVA_EXE%" goto init
+
+echo.
+echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+
+goto fail
+
+:init
+@rem Get command-line arguments, handling Windows variants
+
+if not "%OS%" == "Windows_NT" goto win9xME_args
+
+:win9xME_args
+@rem Slurp the command line arguments.
+set CMD_LINE_ARGS=
+set _SKIP=2
+
+:win9xME_args_slurp
+if "x%~1" == "x" goto execute
+
+set CMD_LINE_ARGS=%*
+
+:execute
+@rem Setup the command line
+
+set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
+
+@rem Execute Gradle
+"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
+
+:end
+@rem End local scope for the variables with windows NT shell
+if "%ERRORLEVEL%"=="0" goto mainEnd
+
+:fail
+rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
+rem the _cmd.exe /c_ return code!
+if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
+exit /b 1
+
+:mainEnd
+if "%OS%"=="Windows_NT" endlocal
+
+:omega
diff --git a/content/espanol/android-tictactoe/resources/_gen/files/TicTacToe/settings.gradle b/content/espanol/android-tictactoe/resources/_gen/files/TicTacToe/settings.gradle
new file mode 100644
index 0000000000..ca23b9a723
--- /dev/null
+++ b/content/espanol/android-tictactoe/resources/_gen/files/TicTacToe/settings.gradle
@@ -0,0 +1,2 @@
+include ':app'
+rootProject.name = "Tic-Tac-Toe"
\ No newline at end of file
diff --git a/content/espanol/android-tictactoe/resources/_gen/images/accept_licenses.gif b/content/espanol/android-tictactoe/resources/_gen/images/accept_licenses.gif
new file mode 100644
index 0000000000..ba303ea5c6
Binary files /dev/null and b/content/espanol/android-tictactoe/resources/_gen/images/accept_licenses.gif differ
diff --git a/content/espanol/android-tictactoe/resources/_gen/images/activity_main.png b/content/espanol/android-tictactoe/resources/_gen/images/activity_main.png
new file mode 100644
index 0000000000..0d2233e659
Binary files /dev/null and b/content/espanol/android-tictactoe/resources/_gen/images/activity_main.png differ
diff --git a/content/espanol/android-tictactoe/resources/_gen/images/activity_main_location.png b/content/espanol/android-tictactoe/resources/_gen/images/activity_main_location.png
new file mode 100644
index 0000000000..b0b41fac7c
Binary files /dev/null and b/content/espanol/android-tictactoe/resources/_gen/images/activity_main_location.png differ
diff --git a/content/espanol/android-tictactoe/resources/_gen/images/android_studio.png b/content/espanol/android-tictactoe/resources/_gen/images/android_studio.png
new file mode 100644
index 0000000000..6c4f4094d0
Binary files /dev/null and b/content/espanol/android-tictactoe/resources/_gen/images/android_studio.png differ
diff --git a/content/espanol/android-tictactoe/resources/_gen/images/app_structure_files.png b/content/espanol/android-tictactoe/resources/_gen/images/app_structure_files.png
new file mode 100644
index 0000000000..840b0b265b
Binary files /dev/null and b/content/espanol/android-tictactoe/resources/_gen/images/app_structure_files.png differ
diff --git a/content/espanol/android-tictactoe/resources/_gen/images/board_visual.png b/content/espanol/android-tictactoe/resources/_gen/images/board_visual.png
new file mode 100644
index 0000000000..9cf74386d2
Binary files /dev/null and b/content/espanol/android-tictactoe/resources/_gen/images/board_visual.png differ
diff --git a/content/espanol/android-tictactoe/resources/_gen/images/edit_env_variable.png b/content/espanol/android-tictactoe/resources/_gen/images/edit_env_variable.png
new file mode 100644
index 0000000000..78d3c4a498
Binary files /dev/null and b/content/espanol/android-tictactoe/resources/_gen/images/edit_env_variable.png differ
diff --git a/content/espanol/android-tictactoe/resources/_gen/images/game_play.gif b/content/espanol/android-tictactoe/resources/_gen/images/game_play.gif
new file mode 100644
index 0000000000..ccf67ca8e7
Binary files /dev/null and b/content/espanol/android-tictactoe/resources/_gen/images/game_play.gif differ
diff --git a/content/espanol/android-tictactoe/resources/_gen/images/main_layout.png b/content/espanol/android-tictactoe/resources/_gen/images/main_layout.png
new file mode 100644
index 0000000000..7a6ece4ffa
Binary files /dev/null and b/content/espanol/android-tictactoe/resources/_gen/images/main_layout.png differ
diff --git a/content/espanol/android-tictactoe/resources/_gen/images/open_android_project.gif b/content/espanol/android-tictactoe/resources/_gen/images/open_android_project.gif
new file mode 100644
index 0000000000..3097494e80
Binary files /dev/null and b/content/espanol/android-tictactoe/resources/_gen/images/open_android_project.gif differ
diff --git a/content/espanol/android-tictactoe/resources/_gen/images/open_strings_file.gif b/content/espanol/android-tictactoe/resources/_gen/images/open_strings_file.gif
new file mode 100644
index 0000000000..bb17f52794
Binary files /dev/null and b/content/espanol/android-tictactoe/resources/_gen/images/open_strings_file.gif differ
diff --git a/content/espanol/android-tictactoe/resources/_gen/images/println.gif b/content/espanol/android-tictactoe/resources/_gen/images/println.gif
new file mode 100644
index 0000000000..cef264e5f5
Binary files /dev/null and b/content/espanol/android-tictactoe/resources/_gen/images/println.gif differ
diff --git a/content/espanol/android-tictactoe/resources/_gen/images/puzzle1_stringsxml.png b/content/espanol/android-tictactoe/resources/_gen/images/puzzle1_stringsxml.png
new file mode 100644
index 0000000000..546d5ad476
Binary files /dev/null and b/content/espanol/android-tictactoe/resources/_gen/images/puzzle1_stringsxml.png differ
diff --git a/content/espanol/android-tictactoe/resources/_gen/images/run_app.png b/content/espanol/android-tictactoe/resources/_gen/images/run_app.png
new file mode 100644
index 0000000000..bbc74c7821
Binary files /dev/null and b/content/espanol/android-tictactoe/resources/_gen/images/run_app.png differ
diff --git a/content/espanol/android-tictactoe/resources/_gen/images/set_java_home.gif b/content/espanol/android-tictactoe/resources/_gen/images/set_java_home.gif
new file mode 100644
index 0000000000..be32f86a06
Binary files /dev/null and b/content/espanol/android-tictactoe/resources/_gen/images/set_java_home.gif differ
diff --git a/content/espanol/android-tictactoe/resources/_gen/images/successful_toast.png b/content/espanol/android-tictactoe/resources/_gen/images/successful_toast.png
new file mode 100644
index 0000000000..177e1b5474
Binary files /dev/null and b/content/espanol/android-tictactoe/resources/_gen/images/successful_toast.png differ
diff --git a/content/espanol/android-tictactoe/resources/_gen/images/title.png b/content/espanol/android-tictactoe/resources/_gen/images/title.png
new file mode 100644
index 0000000000..1f395dfde1
Binary files /dev/null and b/content/espanol/android-tictactoe/resources/_gen/images/title.png differ
diff --git a/content/espanol/android-tictactoe/resources/_gen/images/toast_example.png b/content/espanol/android-tictactoe/resources/_gen/images/toast_example.png
new file mode 100644
index 0000000000..51beb86624
Binary files /dev/null and b/content/espanol/android-tictactoe/resources/_gen/images/toast_example.png differ
diff --git a/content/espanol/android-tictactoe/resources/_gen/images/toast_success.png b/content/espanol/android-tictactoe/resources/_gen/images/toast_success.png
new file mode 100644
index 0000000000..94dd1037e5
Binary files /dev/null and b/content/espanol/android-tictactoe/resources/_gen/images/toast_success.png differ
diff --git a/content/espanol/android-tictactoe/strings.md b/content/espanol/android-tictactoe/strings.md
new file mode 100644
index 0000000000..c521869c15
--- /dev/null
+++ b/content/espanol/android-tictactoe/strings.md
@@ -0,0 +1,21 @@
+---
+title: "Strings ó Cadenas"
+date: 2021-03-13T14:17:07.42-07:00
+draft: false
+weight: 7
+---
+Todo lo que está rodeado de comillas se denomina cadena. Así es como una computadora representa palabras u oraciones. Por ejemplo, `"a"`, `"2"`, `"banana!" `, y `"Hello World"` son cadenas, pero `Hello World` y `2` no son cadenas, porque faltan las comillas. Puede combinar muchas cadenas juntas usando el operador +. Por ejemplo:
+
+- `"Apple" + "Pineapple"` produce la cadena `"ApplePineapple"`.
+- `"Nuevo" + " " + "Fundación"` produce la cadena `"Fundación Nuevo"`.
+
+{{% notice tip %}}
+## Trabajando Juntos
+
+
+Elimina todo el texto `System.out.println` en su código. Inicia su código con la línea `System.out.println("Nuevo" + " " + "Foundation");`. Ten en cuenta que hay muchas maneras de combinar cadenas. Por ejemplo, otra forma de mostrar Fundación Nuevo sería escribir ´System.out.println("Nue" + "vo Fou" + "ndation");`. Haremos una lluvia de ideas sobre al menos una forma más de mostrar la cadena ´"Nuevo Foundation"´ usando dos símbolos ´+´ en cada instrucción `System.out.println`. Verifica que Nuevo Foundation se muestre 3 veces. En otras palabras, la consola debería verse así después de presionar el botón de ejecutar:
+
+ Nuevo Foundation
+ Nuevo Foundation
+ Nuevo Foundation
+{{% /notice %}}
\ No newline at end of file
diff --git a/content/espanol/android-tictactoe/variables.md b/content/espanol/android-tictactoe/variables.md
new file mode 100644
index 0000000000..b3b3c9f752
--- /dev/null
+++ b/content/espanol/android-tictactoe/variables.md
@@ -0,0 +1,25 @@
+---
+title: "Variables"
+date: 2021-03-13T14:17:07.42-07:00
+draft: false
+weight: 10
+---
+Las variables son simplemente nombres que podemos dar a valores como cadenas, números y booleanos. Usamos variables para almacenar información para que la computadora pueda hacer un seguimiento de ella. Las variables se crean utilizando el tipo de la variable y el nombre de la variable. Luego puedes asignar esa variable a la información que quieres almacenar usando `=` y el contenido.
+
+Por favor, mira las variables en la parte superior de `MainActivity.kt`.
+
+```kotlin
+ var Player1 = ArrayList()
+ var Player2 = ArrayList()
+ var ActivePlayer = 1
+ var setPlayer = 1
+ var colorBlue = Color.rgb(0, 161, 241)
+ // PUZZLE 3
+ var colorGreen = Color.BLACK
+```
+
+- `Jugador1` contiene los valores de los movimientos del Jugador 1 en el juego.
+- `Jugador2` contiene los valores de los movimientos del Jugador 2 en el juego.
+- `ActivePlayer` realiza un seguimiento de quién es el turno.
+- `setPlayer` contiene el valor de si el juego es Jugador vs Jugador o Jugador vs Computadora.
+- `colorBlue` y `colorGreen` contienen los valores de los colores del jugador.