检查Unity中的整数值是否为玩家转弯

时间:2018-05-27 11:09:15

标签: c# unity3d

如果根据int lastClickedValuex和o分别移动无效,我试图阻止点击

不确定如何进行检查。在我的代码完成之前我必须做的最后一件事让我疯狂。

基本上

if (lastclickedvaluex >= boardsquarevalue || boardsquarevalue == 0){
    allow move;
} else {
    dont show the sprite;
    dont switch turns;
    restart the players turn;
    dont change the value of lastclickedvaluex;
    make like player never clicked I suppose;
}

我在20小时,所以它可能是非常愚蠢的。

using UnityEngine;
using UnityEngine.UI;
public class GameController : MonoBehaviour
{

public int playerTurn;   //0 = X && 1 = O
public int turnCountX;     //Tally Player X Turns
public int turnCountO;     //Tally Player O Turns
public GameObject[] bigTurnIcons;  //Player Icons Array
public Sprite[] playerGamePieces;      //GamePieces Array
public Button[] gameBoardSquares;  //GameBoard Array
public int lastPlayedSquareValueX;  //Store Value of Last Clicked Square
public int lastPlayedSquareValueO;  // ""
public bool gameOver;  // End Game
public bool isValidMove;  //  Check For Valid Move
public int boardSquareValue;  //Value of Each Square from Value Script 
public int[] markedSquare;    //Win Check Array

void Awake()
{
    GameSetup();
}

public void GameSetup()
{
    isValidMove = true;
    playerTurn = 0;  //Set Player Turn To X Goes First
    turnCountX = 0;    //Set X Turn Count to 0
    turnCountO = 0;    //Set O Turn COunt to 0
    bigTurnIcons[0].SetActive(true);  //Set X Turn Icon to Active
    bigTurnIcons[1].SetActive(false); //Set O Turn Icon to Inactive
    for (int i = 0; i < gameBoardSquares.Length; i++)  //Initialize Squares (GameBoard) Array
    {
        gameBoardSquares[i].interactable = true;  //Make All Squares Clickable
        gameBoardSquares[i].GetComponent<Image>().sprite = null;  //Set TurnIcons To Off

    }
    for (int j = 0; j < markedSquare.Length; j++)  //Initialize MarkedSquare Array
    {
        markedSquare[j] = -100;  //Set Value To Wacky Number So It Doesn't Interfere With Formula FOr Win Check
    }
}

public void PlaySquareButton(int WhichNumber)  //OnClick Function
{


    markedSquare[WhichNumber] = playerTurn + 1; //OnClick Store Which PLayer Clicked Which Square
    gameBoardSquares[WhichNumber].image.sprite = playerGamePieces[playerTurn]; //OnClick Check To Place Correct Symbol (GamePiece)
    gameBoardSquares[WhichNumber].interactable = false;  //OnClick Set Button.Interactable To False So It Cannot Be CLicked Again
    boardSquareValue = gameBoardSquares[WhichNumber].GetComponent<Value>().boardSquareValue; //OnClick Set The Square's Value To The BoardSquareValue Variable in the Value Script

    if (turnCountO > 3 || turnCountX > 3)  //Check For Wins After 3 Turns
    {
        CheckForWinner();  //Iterate Through The MarkedSpaces Array To Check For A Winner
    }

    if (playerTurn == 0)

    {

        playerTurn = 1;                      //Player O Turn
        bigTurnIcons[0].SetActive(false);
        bigTurnIcons[1].SetActive(true);
        Debug.Log(boardSquareValue);           //Show Value of Clicked Square in Console
        lastPlayedSquareValueX = boardSquareValue;   //Set Last CLicked Value to Current Clicked Square
        turnCountX++;    //Increment Player Turn Count

    }
    else
    {

        playerTurn = 0;
        bigTurnIcons[0].SetActive(true);
        bigTurnIcons[1].SetActive(false);
        Debug.Log(boardSquareValue);
        lastPlayedSquareValueO = boardSquareValue;
        turnCountO++;
    }

}

感谢您的帮助

GameBoard

1 个答案:

答案 0 :(得分:1)

根据您的意见,您可能会失踪:

public PlaySquareButton(int WhichNumber){


    if(playerTurn)
    {
        if(WhichNumber > lastPlayedSquareValueX){
            markedSquare[WhichNumber] = playerTurn + 1; //OnClick Store Which PLayer Clicked Which Square
            gameBoardSquares[WhichNumber].image.sprite = playerGamePieces[playerTurn]; //OnClick Check To Place Correct Symbol (GamePiece)
            gameBoardSquares[WhichNumber].interactable = false;  //OnClick Set Button.Interactable To False So It Cannot Be CLicked Again
            ...

        }
    }else{
        if(WhichNumber > lastPlayedSquareValueO){
            markedSquare[WhichNumber] = playerTurn + 1; //OnClick Store Which PLayer Clicked Which Square
            gameBoardSquares[WhichNumber].image.sprite = playerGamePieces[playerTurn]; //OnClick Check To Place Correct Symbol (GamePiece)
            gameBoardSquares[WhichNumber].interactable = false;  //OnClick Set Button.Interactable To False So It Cannot Be CLicked Again
            ...

        }
    }

}

基本上在开始使用功能之前,请检查一旦点击,哪个来自广场的WhichNumber大于lastPlayedSquareValueX