Documentos de Académico
Documentos de Profesional
Documentos de Cultura
JUEGO DE 3 EN RAYA
Estudiante:
Fernando Andrés Mendiola Andrade
Docente:
Rodmy Orellana
2 PROGRAMA...............................................................................................................1
3 BIBLIOGRAFIA.........................................................................................................13
1 INTRODUCCION
Los juegos han sido una parte fundamental de la historia de la humanidad,
proporcionando entretenimiento, desafíos y oportunidades para ejercitar la mente. Uno
de los juegos más icónicos y sencillos en este sentido es el "3 en raya", también
conocido como "Tres en línea" o "Tic-Tac-Toe". Este juego estratégico de tablero ha
perdurado a lo largo de los siglos y ha encontrado su camino hacia la era digital a
través de la programación. En este informe, exploraremos la implementación del juego
"3 en raya" utilizando el lenguaje de programación Kotlin.
2 PROGRAMA
1
1.2.1 Codigo
<LinearLayout
android:layout_width="0dp"
android:layout_height="0dp"
android:orientation="vertical"
app:layout_constraintBottom_toTopOf="@+id/imageButton2"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:orientation="horizontal">
<Button
android:id="@+id/btn1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_margin="10dp"
android:layout_weight="1"
android:onClick="pressButton"
tools:ignore="SpeakableTextPresentCheck" />
<Button
android:id="@+id/btn2"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_margin="10dp"
android:layout_weight="1"
android:onClick="pressButton"
tools:ignore="SpeakableTextPresentCheck" />
<Button
android:id="@+id/btn3"
android:layout_width="match_parent"
android:layout_height="match_parent"
2
android:layout_margin="10dp"
android:layout_weight="1"
android:onClick="pressButton"
tools:ignore="SpeakableTextPresentCheck" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:orientation="horizontal">
<Button
android:id="@+id/btn4"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_margin="10dp"
android:layout_weight="1"
android:onClick="pressButton"
tools:ignore="SpeakableTextPresentCheck" />
<Button
android:id="@+id/btn5"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_margin="10dp"
android:layout_weight="1"
android:onClick="pressButton"
tools:ignore="SpeakableTextPresentCheck" />
<Button
android:id="@+id/btn6"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_margin="10dp"
android:layout_weight="1"
android:onClick="pressButton"
tools:ignore="SpeakableTextPresentCheck" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:orientation="horizontal">
<Button
android:id="@+id/btn7"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_margin="10dp"
android:layout_weight="1"
android:onClick="pressButton"
tools:ignore="SpeakableTextPresentCheck" />
<Button
android:id="@+id/btn8"
3
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_margin="10dp"
android:layout_weight="1"
android:onClick="pressButton"
tools:ignore="SpeakableTextPresentCheck" />
<Button
android:id="@+id/btn9"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_margin="10dp"
android:layout_weight="1"
android:onClick="pressButton"
tools:ignore="SpeakableTextPresentCheck" />
</LinearLayout>
</LinearLayout>
<ImageButton
android:id="@+id/imageButton2"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:onClick="startAgain"
android:visibility="visible"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:srcCompat="@drawable/ic_baseline_autorenew_24"
tools:ignore="SpeakableTextPresentCheck,SpeakableTextPresentCheck"
android:minHeight="48dp"/>
</androidx.constraintlayout.widget.ConstraintLayout>
4
<?xml version="1.0" encoding="utf-8"?>: Esta línea declara la versión del
XML y la codificación utilizada.
5
<LinearLayout>: Estos son contenedores para los botones dispuestos en filas
y columnas. Los botones están organizados en tres filas y tres columnas
dentro de estos LinearLayout. Cada LinearLayout tiene un atributo
layout_weight que distribuye el espacio disponible de manera equitativa entre
sus hijos.
<Button>: Cada uno de los botones tiene un ID único asignado (btn1,
btn2, ..., btn9) y comparten un atributo android:onClick que se refiere a una
función llamada pressButton (que debería estar definida en el código
Java/Kotlin correspondiente) que Este código XML define una interfaz de
usuario en Android utilizando el lenguaje de diseño de Android XML. La
interfaz está construida utilizando el ConstraintLayout de AndroidX, que es un
tipo de diseño flexible que permite posicionar y alinear elementos de la
interfaz de usuario de manera más controlada y versátil. A continuación, te
explicaré los componentes principales del código:
<?xml version="1.0" encoding="utf-8"?>: Esta línea declara la versión del
XML y la codificación utilizada.
<androidx.constraintlayout.widget.ConstraintLayout>: Es la vista raíz que
contiene todos los elementos de la interfaz de usuario. Se utilizan atributos
para definir propiedades del layout, como su tamaño y contexto.
<LinearLayout>: Estos son contenedores para los botones dispuestos en filas
y columnas. Los botones están organizados en tres filas y tres columnas
dentro de estos LinearLayout. Cada LinearLayout tiene un atributo
layout_weight que distribuye el espacio disponible de manera equitativa entre
sus hijos.
<Button>: Cada uno de los botones tiene un ID único asignado (btn1,
btn2, ..., btn9) y comparten un atributo android:onClick que se refiere a una
función llamada pressButton (que debería estar definida en el código
Java/Kotlin correspondiente) que se ejecutará cuando se haga clic en
cualquiera de estos botones.
<ImageButton>: Este es un botón de imagen (imagen de un círculo con una
flecha) con un ID imageButton2. También tiene un atributo android:onClick
6
que se refiere a una función llamada startAgain. La imagen en este botón se
establece usando app:srcCompat con una imagen vectorial.
Atributos de diseño (app:layout_constraint...): Estos atributos establecen las
restricciones de diseño para los elementos, definiendo cómo se posicionan y
alinean. Por ejemplo, app:layout_constraintTop_toTopOf="parent" significa
que el elemento se alineará con la parte superior del padre.
se ejecutará cuando se haga clic en cualquiera de estos botones.
<ImageButton>: Este es un botón de imagen (imagen de un círculo con una
flecha) con un ID imageButton2. También tiene un atributo android:onClick
que se refiere a una función llamada startAgain. La imagen en este botón se
establece usando app:srcCompat con una imagen vectorial.
13. Atributos de diseño (app:layout_constraint...): Estos atributos establecen
las restricciones de diseño para los elementos, definiendo cómo se
posicionan y alinean. Por ejemplo,
app:layout_constraintTop_toTopOf="parent" significa que el elemento se
alineará con la parte superior del padre.
2.2.1 MainActivity
package com.example.a3enraya
7
import android.content.Intent
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.view.View
import android.widget.Button
import android.widget.Toast
import com.example.a3enraya.databinding.ActivityMainBinding
8
}else if(binding.btn1.getText().toString()==playerStr &&
binding.btn4.getText().toString()==playerStr &&
binding.btn7.getText().toString()==playerStr){
return true
}else if(binding.btn2.getText().toString()==playerStr &&
binding.btn5.getText().toString()==playerStr &&
binding.btn8.getText().toString()==playerStr){
return true
}
else if(binding.btn3.getText().toString()==playerStr &&
binding.btn6.getText().toString()==playerStr &&
binding.btn9.getText().toString()==playerStr){
return true
}
return false
}
private fun winnerFounded(){
setEnabledButtons(false)
Toast.makeText(this,"GANADOR: $player.\uD83C\
uDFC6",Toast.LENGTH_SHORT).show()
}
fun startAgain(view:View){
setEnabledButtons(true)
binding.btn1.setText("")
binding.btn2.setText("")
binding.btn3.setText("")
binding.btn4.setText("")
binding.btn5.setText("")
binding.btn6.setText("")
binding.btn7.setText("")
binding.btn8.setText("")
binding.btn9.setText("")
}
}
9
package com.example.a3enraya
import android.content.Intent
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.view.View
import android.widget.Button
import android.widget.Toast
import com.example.a3enraya.databinding.ActivityMainBinding
10
(binding.btn4.text.toString() == playerStr && binding.btn5.text.toString() == playerStr &&
binding.btn6.text.toString() == playerStr) ||
// ... y así sucesivamente para todas las combinaciones
}
11
• La función missingWinner verifica si un jugador ha ganado revisando
todas las posibles combinaciones ganadoras en el tablero. Si se encuentra
una combinación ganadora, la función devuelve true.
• La función winnerFounded muestra un mensaje emergente (Toast)
anunciando al ganador y deshabilita todos los botones para evitar más
movimientos.
• La función setEnabledButtons habilita o deshabilita todos los botones en
función del estado proporcionado como argumento.
• La función startAgain se llama cuando se presiona el botón "Volver a
empezar". Esta función habilita todos los botones y borra el texto de todos los
botones para reiniciar el juego.
12
3 BIBLIOGRAFIA
Detectar quien gana en 3 en Raya con Kotlin. (s/f). Stack Overflow en español.
https://es.stackoverflow.com/questions/531595/detectar-quien-gana-en-3-en-
raya-con-kotlin
kotlin-compose-functions?hl=es-419
Facialix. (2022, julio 30). Udemy Gratis: Juego de tres en raya en Kotlin, estudio de
https://blog.facialix.com/udemy-gratis-juego-de-tres-en-raya-en-kotlin-estudio-
de-desarrollo-de-aplicaciones-para-android/
13