Redes Sociais
 Telegram  YouTube
Como fazer um Jogo da Velha em Kotlin
27 de outubro de 2019

Nesse tutorial vou descrever Como fazer um Jogo da Velha em Kotlin assim você pode programar e se divertir um pouco com a linguagem.

Vou fazer nesse primeiro tutorial como criar um jogo da velha simples, uma pessoa contra outra e no próximo vou integrar o computador e assim podendo  fazer jogadas.

Primeiramente vamos criar um novo projeto vazio(Empty) para fazer nossas mudanças necessárias e assim nosso joga da velha funcionar.

Se você tiver problemas com a criação do novo projeto então veja o tutorial Como criar um projeto no Android Studio.

Então vamos modificar a nossa activity_main para que ela tenha um LinearLayout vertical com mais 3 linear LinearLayout contendo 3 botões cada, assim tendo nossos 9 quadrantes do jogo da velha.

activity_main

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">
    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:text="Jogo da Velha"
        android:textSize="30sp"
        android:textColor="#000000"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintBottom_toTopOf="@id/layGame"/>
    <LinearLayout
        android:id="@+id/layGame"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintBottom_toBottomOf="parent">
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal"
            android:gravity="center">
            <Button
                android:id="@+id/btn1"
                android:layout_width="100dp"
                android:layout_height="100dp"
                android:textSize="35sp"/>
            <Button
                android:id="@+id/btn2"
                android:layout_width="100dp"
                android:layout_height="100dp"
                android:textSize="35sp"/>
            <Button
                android:id="@+id/btn3"
                android:layout_width="100dp"
                android:layout_height="100dp"
                android:textSize="35sp"/>
        </LinearLayout>
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal"
            android:gravity="center">
            <Button
                android:id="@+id/btn4"
                android:layout_width="100dp"
                android:layout_height="100dp"
                android:textSize="35sp"/>
            <Button
                android:id="@+id/btn5"
                android:layout_width="100dp"
                android:layout_height="100dp"
                android:textSize="35sp"/>
            <Button
                android:id="@+id/btn6"
                android:layout_width="100dp"
                android:layout_height="100dp"
                android:textSize="35sp"/>
        </LinearLayout>
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal"
            android:gravity="center">
            <Button
                android:id="@+id/btn7"
                android:layout_width="100dp"
                android:layout_height="100dp"
                android:textSize="35sp"/>
            <Button
                android:id="@+id/btn8"
                android:layout_width="100dp"
                android:layout_height="100dp"
                android:textSize="35sp"/>
            <Button
                android:id="@+id/btn9"
                android:layout_width="100dp"
                android:layout_height="100dp"
                android:textSize="35sp"/>
        </LinearLayout>
    </LinearLayout>
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        app:layout_constraintTop_toBottomOf="@+id/layGame"
        app:layout_constraintBottom_toBottomOf="parent">
        <TextView
            android:id="@+id/tvResult"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:gravity="center"
            android:textSize="22sp"/>
        <Button
            android:id="@+id/btnRestart"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:text="Reiniciar"/>
    </LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>




Logo após ter feito o layout do nosso jogo vamos então trabalhar com a MainActivity e programar para que o nosso jogo funcione.

Vamos deixar nosso código assim como o seguinte.

MainActivity

class MainActivity : AppCompatActivity() {
    var jogador: Int = 1
    private var btnList = ArrayList<Button>()
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        btnList = arrayListOf<Button>(btn1, btn2, btn3, btn4, btn5, btn6, btn7, btn8, btn9)
        btnRestart.visibility = View.GONE
        for(x in 0..btnList.size-1) {
            btnList[x].setOnClickListener {
                joga(it as Button)
            }
        }
        btnRestart.setOnClickListener {
            restart()
        }
    }
    private fun joga(btn: Button){
        if(jogador % 2 != 0) {
            btn.text = "X"
        }
        else{
            btn.text = "O"
        }
        btn.isClickable = false
        checkGame()
        ++jogador
    }
    private fun restart(){
        for(x in 0..btnList.size-1){
            btnList[x].text = ""
            btnList[x].isClickable = true
        }
        tvResult.text = ""
        jogador = 1
        btnRestart.visibility = View.GONE
    }
    private fun checkGame(){
        if(jogador == 9){
            tvResult.text = "Empate"
            btnRestart.visibility = View.VISIBLE
        }
        val numb = listOf<Int>(0,3,6)
        for(x in numb){
            if (btnList[x].text != "" && btnList[x].text == btnList[x+1].text && btnList[x+1].text == btnList[x + 2].text) {
                ganhador()
            }
        }
        for(x in 0..2){
            if(btnList[x].text != "" && btnList[x].text == btnList[x+3].text && btnList[x+3].text == btnList[x+6].text){
                ganhador()
            }
        }
        if ((btnList[0].text != "" && btnList[0].text == btnList[4].text && btnList[4].text == btnList[8].text)
            || (btnList[2].text != "" && btnList[2].text == btnList[4].text && btnList[4].text == btnList[6].text)) {
            ganhador()
        }
    }
    private fun ganhador(){
        if(jogador % 2 != 0){
            tvResult.text = "Ganhador: X"
        }
        else{
            tvResult.text = "Ganhador: O"
        }
        endGame()
        btnRestart.visibility = View.VISIBLE
    }
    private fun endGame(){
        for(x in 0..btnList.size-1){
            btnList[x].isClickable = false
        }
    }
}

Logo depois de modificar a MainActivity é só compilar e executar para jogar.

Você também pode clonar nosso repositório com o seguinte comando.

[[email protected] ~]$ git clone https://github.com/uware-com-br/JogoDaVelha

Enfim espero poder te ajudado com mais este tutorial sobre Como fazer um Jogo da Velha em Kotlin.





Parte 2 ->

Autor: Rodrigo Leutz

Desenvolvedor Web e Android ( Kotlin e Java )


Começando a programar na linguagem Kotlin – Parte 5

Nesse tutorial Começando a programar na linguagem Kotlin – Parte 5 vamos ver strings e intervalos para que assim seja possível entrar em laços.[...]

7 de fevereiro de 2020

Vídeo 11: Pegar endereço com o CEP Kotlin

Nesse Vídeo 11: Pegar endereço com o CEP Kotlin vou descrever como fazer a parte da programação assim você vai imprimir o endereço na tela.[...]

4 de janeiro de 2020

Vídeo 10: Pegar endereço com o CEP Kotlin

Nesse Vídeo 10: Pegar endereço com o CEP Kotlin vou descrever como fazer o layout do aplicativo para assim poder fazer a programação. Vou[...]

4 de janeiro de 2020