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

admin

Related Posts

Lección del Balón de Oro, Cuando el Carácter y el Juego. No Van de la Mano

Ayer el Real Madrid se enfrentó en casa al AC Milan, pero el marcador de 1-3 en contra fue un golpe difícil. Este resultado no es alentador, y si la…

Jugadores Lesionados y Controversias en Amistosos Internacionales

En estos últimos días, se ha hablado mucho sobre los partidos amistosos de selecciones y los jugadores que vuelven lesionados. Uno de los focos de atención ha sido Kylian Mbappé,…

Deja una respuesta

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

You Missed

Ganar para No Avanzar: El Atlético de Madrid y su Estilo Estancado

  • Por admin
  • noviembre 6, 2024
  • 212 views
Ganar para No Avanzar: El Atlético de Madrid y su Estilo Estancado

Lección del Balón de Oro, Cuando el Carácter y el Juego. No Van de la Mano

  • Por admin
  • noviembre 6, 2024
  • 72 views
Lección del Balón de Oro, Cuando el Carácter y el Juego. No Van de la Mano

Una Jornada Que Nunca Debió Jugarse

  • Por admin
  • noviembre 4, 2024
  • 57 views
Una Jornada Que Nunca Debió Jugarse

Vinicius, el Real Madrid y la Sombra de la ‘Encerrona’ en el Balón de Oro

  • Por admin
  • octubre 29, 2024
  • 70 views
Vinicius, el Real Madrid y la Sombra de la ‘Encerrona’ en el Balón de Oro

La Farsa del Balón de Oro. Un Espejismo de Justicia en el Fútbol

  • Por admin
  • octubre 28, 2024
  • 86 views
La Farsa del Balón de Oro. Un Espejismo de Justicia en el Fútbol

Barcelona Imparable, Atlético en Caída y un Valencia Sin Rumbo

  • Por admin
  • octubre 28, 2024
  • 42 views
Barcelona Imparable, Atlético en Caída y un Valencia Sin Rumbo