Las 3 en raya juego

aquí os voy a dejar el Script del juego entero

este es el Script de GameControler

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

[System.Serializable]
public class Player
{
    public Image panel;
    public Text text;
    public Button button;

}
[System.Serializable]
public class PlayerColor
{

    public Color panelColor;
    public Color textColor;
}

 
public class gamecontroller : MonoBehaviour
{

    public Text[] buttonList;
    private string playerSide;

    public GameObject gameover;

    public Text gameoverText;

    private int moveCount;

    public GameObject restartButton;

    public Player playerX;
    public Player playerO;
    public PlayerColor activePlayerColor;
    public PlayerColor inactivePlayerColor;
    public GameObject starI;

    private string computerSide;
    public bool playerMove;
    public float delay;
    private int value;

   
    private int moveCaount;
    void Awake()
    {
        
        SetGameControllerRerefenceOnButtons();
        gameover.SetActive(false);
        moveCount = 0;
        restartButton.SetActive(false);
        playerMove = true;
        
    }

    void Update()
    {
        if (playerMove == false)
        {
            delay += delay * Time.deltaTime;
            if (delay >= 100)
            {
                value = Random.Range(0, 8);
                if (buttonList[value].GetComponentInParent<Button>().interactable == true)
                {

                    buttonList[value].text = GetComputerSide();
                    buttonList[value].GetComponentInParent<Button>().interactable = false;
                    EndTurn();
                }

            }
        }

    }


    void SetGameControllerRerefenceOnButtons()
    {
        for (int i = 0; i < buttonList.Length; i++)
        {

            buttonList[i].GetComponentInParent<GripSpace>().SetGameControllerReference(this);
        }

    }

    public void SetSartingSide(string startingSide)
    {
        playerSide = startingSide;
        if (playerSide == "X")
        {
            computerSide = "0";
            SetPlayerColors(playerX, playerO);
        }
        else
        {
            computerSide = "X";
            SetPlayerColors(playerO, playerX);
        }

        StartGame(); 
    }

    void StartGame()
    {
        SetBoarddInteractable(true);
        SetPlayerButton(false);
        starI.SetActive(false);

    }


    public string GetPlayerSide()
    {

        return playerSide;

    }

    public string GetComputerSide()
    {
        return computerSide;
    }

    public void EndTurn()
    {

        moveCount++;

        if (buttonList[0].text == playerSide && buttonList[1].text == playerSide && buttonList[2].text == playerSide)
        {

            GameOver(playerSide);

        }

       else if (buttonList[3].text == playerSide && buttonList[4].text == playerSide && buttonList[5].text == playerSide)
        {

            GameOver(playerSide);

        }

        else if (buttonList[6].text == playerSide && buttonList[7].text == playerSide && buttonList[8].text == playerSide)
        {

            GameOver(playerSide);

        }
        else if (buttonList[0].text == playerSide && buttonList[3].text == playerSide && buttonList[6].text == playerSide)
        {

            GameOver(playerSide);

        }
       else if (buttonList[1].text == playerSide && buttonList[4].text == playerSide && buttonList[7].text == playerSide)
        {

            GameOver(playerSide);

        }

        else if (buttonList[2].text == playerSide && buttonList[5].text == playerSide && buttonList[8].text == playerSide)
        {

            GameOver(playerSide);

        }

       else if (buttonList[0].text == playerSide && buttonList[4].text == playerSide && buttonList[8].text == playerSide)
        {

            GameOver(playerSide);

        }

      else  if (buttonList[2].text == playerSide && buttonList[4].text == playerSide && buttonList[6].text == playerSide)
        {

            GameOver(playerSide);

        }















            
        else if (buttonList[0].text == playerSide && buttonList[1].text == playerSide && buttonList[2].text == playerSide)
        {

            GameOver(playerSide);

        }

       else if (buttonList[3].text == playerSide && buttonList[4].text == playerSide && buttonList[5].text == playerSide)
        {

            GameOver(playerSide);

        }

        else if (buttonList[6].text == playerSide && buttonList[7].text == playerSide && buttonList[8].text == playerSide)
        {

            GameOver(playerSide);

        }
        else if (buttonList[0].text == playerSide && buttonList[3].text == playerSide && buttonList[6].text == playerSide)
        {

            GameOver(playerSide);

        }
       else if (buttonList[1].text == playerSide && buttonList[4].text == playerSide && buttonList[7].text == playerSide)
        {

            GameOver(playerSide);

        }

        else if (buttonList[2].text == playerSide && buttonList[5].text == playerSide && buttonList[8].text == playerSide)
        {

            GameOver(playerSide);

        }

       else if (buttonList[0].text == playerSide && buttonList[4].text == playerSide && buttonList[8].text == playerSide)
        {

            GameOver(playerSide);

        }

        else if (buttonList[2].text == playerSide && buttonList[4].text == playerSide && buttonList[6].text == playerSide)
        {

            GameOver(playerSide);
        }






        else if (moveCount >= 9)
        {
            GameOver("draw");

        }
        else
        {

            ChangeSides();
        }
    }

    void SetPlayerColors(Player newPlayer, Player oldPlayer){

        newPlayer.panel.color= activePlayerColor.panelColor;
        newPlayer.text.color = activePlayerColor.textColor;
        oldPlayer.panel.color = inactivePlayerColor.panelColor;
        oldPlayer.text.color = inactivePlayerColor.textColor;

    }

    

    void GameOver(string winningPlayer)
    {

        SetBoarddInteractable(false);

        if (winningPlayer == "draw")
        {
            SetGameOverText("game");
            SetPlayerColorInactive();
        }
        else
        {
            SetGameOverText(winningPlayer + " Wins¡");


        }




        
        restartButton.SetActive(true);



    }

    void ChangeSides()
    {

        playerSide = (playerSide == "X") ? "O" : "X";
        playerMove = (playerMove == true) ? false : true;
        if (playerSide == "X")
            if(playerMove == true)
        {
            SetPlayerColors(playerX, playerO);

        }
        else
        {
            SetPlayerColors(playerO, playerX);

        }


    }

    void SetGameOverText(string value)
    {
        gameover.SetActive(true);
        gameoverText.text = value;


    }

    public void RestarGame()
    {
       
        moveCount = 0;
        gameover.SetActive(false);
        restartButton.SetActive(false);
        SetPlayerButton(true);
        SetPlayerColorInactive();
        starI.SetActive(true);
        playerMove = true;
        delay = 10;
      

        for (int i = 0; i < buttonList.Length; i++)
        {

            buttonList[i].text = "";

        }
        SetPlayerColors(playerX, playerO);
        restartButton.SetActive(false);




    }

    void SetBoarddInteractable(bool toggle)
    {
        for (int i = 0; i < buttonList.Length; i++)
        {
            buttonList[i].GetComponentInParent<Button>().interactable = toggle;


        }

    }

    void SetPlayerButton(bool toggle)
    {
        playerX.button.interactable = toggle;
        playerO.button.interactable = toggle;

    }

    void SetPlayerColorInactive()
    {
        playerX.panel.color = inactivePlayerColor.panelColor;
        playerX.panel.color = inactivePlayerColor.textColor;
        playerO.panel.color = inactivePlayerColor.panelColor;
        playerO.panel.color = inactivePlayerColor.textColor;
    }
}

    



    


Ahora os pondre el Script de Grip

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class GripSpace : MonoBehaviour
{

    public Button button;
    public Text buttonText;


    private gamecontroller GameController;


    public void SetGameControllerReference(gamecontroller controller)
    {

        GameController = controller;
    }




    public void SetSpace()
    {
       

            buttonText.text = GameController.GetPlayerSide();
            button.interactable = false;
            GameController.EndTurn();


        }





    }



Bien lo que vamos hacer incorporar lo siguiente que le falta a nuestro Script

a nuestro Script había que incorporarle lo siguiente PlayerX(Image) Text(Text) de ambos sitios, para eso vamos a crear un Canvas al que llamaremos Player O y le incorporaremos un Text y de nuevo crearemos otro Canvas al que llamaremos Player X y le incorporaremos el Text.

así debereia de quedar.

y esto es lo que tendriamos que poner en nuestro Script

Bien ahora seleccionamos tanto Player O como Player X y añadimos un Boton
estos 2 Botones vamos a ponerlos en trasparente

Ahora seleccionamos  nuestros cuadrados y lo que vamos hacer va ser lo siguiente

desmarcamos y nos saldra así

Ahora vamos a seleccionar los 2 botones que hemos creado en PlayerX y Player O

seleccionamos los dos y nos vamos a la parte derecha

le damos al + y asignamos el GameControler que tengamos a la izquierda despues buscamos en el Script y abajo ponemos respectivamente en uno el O y en el otro la X

Ahora iriamos a nuestro Script de gameController y le asignaremos los botones
Copiamos el restar y le pegamos y le cambiamos el nombres el Restar es el boton para restablecer la partida al Star tambien le pondremos un Text

y ya tendriamos el juego

tutorial de unity  3 en raya

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *