コード例 #1
0
    void Start()
    {
        gameController.whiteCheckers.Clear();
        gameController.redCheckers.Clear();

        foreach (PositionContainer whiteStartPosition in whiteStartPositions)
        {
            whiteStartPosition.OccupationValue = 1;
            var clone = Instantiate(whitePrefab, whiteStartPosition.transform.position, whiteStartPosition.transform.rotation) as GameObject;
            clone.name = "White_" + whiteSpawnCount;
            whiteSpawnCount++;

            CheckerContainer checkerContainerScript = clone.GetComponent <CheckerContainer>();
            whiteStartPosition.OccupyingChecker  = checkerContainerScript;
            checkerContainerScript.BoardLocation = whiteStartPosition.PositionValue;

            gameController.whiteCheckers.Add(clone);
        }

        foreach (PositionContainer redStartPosition in redStartPositions)
        {
            redStartPosition.OccupationValue = 2;
            var clone = Instantiate(redPrefab, redStartPosition.transform.position, redStartPosition.transform.rotation) as GameObject;
            clone.name = "Red_" + redSpawnCount;
            redSpawnCount++;

            CheckerContainer checkerContainerScript = clone.GetComponent <CheckerContainer>();
            redStartPosition.OccupyingChecker    = checkerContainerScript;
            checkerContainerScript.BoardLocation = redStartPosition.PositionValue;

            gameController.redCheckers.Add(clone);
        }

        gameController.CheckerCounter.text = "White: " + gameController.whiteCheckers.Count + " Red: " + gameController.redCheckers.Count;
    }
コード例 #2
0
    public void FindThreats()
    {
        checkerPrecheck = true;
        threatCheck     = true;

        if (!WhiteTurn)
        {
            GameObject[] whiteCheckers = GameObject.FindGameObjectsWithTag("White");

            if (whiteCheckers != null)
            {
                foreach (GameObject whiteChecker in whiteCheckers)
                {
                    checkerContainerScript = whiteChecker.GetComponent <CheckerContainer>();
                    checkerPosition        = checkerContainerScript.BoardLocation;

                    if (checkerContainerScript.PieceColor == 1)
                    {
                        CheckUpLeftCapture();
                        CheckUpRightCapture();
                    }
                    else
                    {
                        CheckAllCapture();
                    }
                }
            }
        }
        else
        {
            GameObject[] redCheckers = GameObject.FindGameObjectsWithTag("Red");

            if (redCheckers != null)
            {
                foreach (GameObject redChecker in redCheckers)
                {
                    checkerContainerScript = redChecker.GetComponent <CheckerContainer>();
                    checkerPosition        = checkerContainerScript.BoardLocation;

                    if (checkerContainerScript.PieceColor == 2)
                    {
                        CheckDownLeftCapture();
                        CheckDownRightCapture();
                    }
                    else
                    {
                        CheckAllCapture();
                    }
                }
            }
        }

        checkerPrecheck = false;
        threatCheck     = false;
        CaptureRequired = false;
    }
コード例 #3
0
    public void FindMoves()
    {
        CaptureRequired = false;
        opponentAI.aiMovePositions.Clear();
        movePrecheck = true;

        if (WhiteTurn)
        {
            GameObject[] whiteCheckers = GameObject.FindGameObjectsWithTag("White");

            if (whiteCheckers != null)
            {
                randomInt              = Random.Range(0, whiteCheckers.Length);
                CheckerOfInterest      = whiteCheckers[randomInt];
                checkerContainerScript = whiteCheckers[randomInt].GetComponent <CheckerContainer>();
                checkerPosition        = checkerContainerScript.BoardLocation;
            }
        }
        else
        {
            GameObject[] redCheckers = GameObject.FindGameObjectsWithTag("Red");

            if (redCheckers != null)
            {
                randomInt = Random.Range(0, redCheckers.Length);

                if (randomInt < redCheckers.Length && redCheckers.Length != 0)
                {
                    CheckerOfInterest = redCheckers[randomInt];
                }

                checkerContainerScript = redCheckers[randomInt].GetComponent <CheckerContainer>();
                checkerPosition        = checkerContainerScript.BoardLocation;
            }
        }

        if (checkerContainerScript.PieceType == 1)
        {
            if (checkerContainerScript.PieceColor == 1)
            {
                CheckUpLeftMove();
                CheckUpRightMove();
            }
            else if (checkerContainerScript.PieceColor == 2)
            {
                CheckDownLeftMove();
                CheckDownRightMove();
            }
        }
        else if (checkerContainerScript.PieceType == 2)
        {
            CheckAllMove();
        }

        movePrecheck = false;
    }
コード例 #4
0
        static void Main(string[] args)
        {
            IDisplay display = new ScreenDisplay();

            CheckerContainer checkerContainer = FullCheckerContainer();

            CooperateMachines work = new CooperateMachines(display, checkerContainer);

            StartProgramm(work);
        }
コード例 #5
0
        static CheckerContainer FullCheckerContainer()
        {
            CheckerContainer checkerContainer = new CheckerContainer();

            checkerContainer.Register(new Bolt().GetType(), new BoltChecker());
            checkerContainer.Register(new Nail().GetType(), new NailChecker());
            checkerContainer.Register(new Screw().GetType(), new ScrewChecker());
            checkerContainer.Register(new Wheel().GetType(), new WheelChecker());

            return(checkerContainer);
        }
コード例 #6
0
    public void FindSelectedCheckerOptions(GameObject selectedChecker)
    {
        CheckerOfInterest      = selectedChecker;
        checkerContainerScript = selectedChecker.GetComponent <CheckerContainer>();
        checkerPosition        = checkerContainerScript.BoardLocation;
        canCaptureUL           = false;
        canCaptureUR           = false;
        canCaptureDL           = false;
        canCaptureDR           = false;

        if (checkerContainerScript.PieceColor == 1 && WhiteTurn)
        {
            SelectedCheckerMoves(selectedChecker);
        }
        else if (checkerContainerScript.PieceColor == 2 && !WhiteTurn)
        {
            SelectedCheckerMoves(selectedChecker);
        }
    }
コード例 #7
0
    public void FindAdditionalCaptures(GameObject capturingChecker)
    {
        CaptureRequired        = false;
        CheckerOfInterest      = capturingChecker;
        checkerContainerScript = capturingChecker.GetComponent <CheckerContainer>();
        checkerPosition        = checkerContainerScript.BoardLocation;
        recaptureCheck         = true;
        canRecapture           = false;

        if (checkerContainerScript.PieceColor == 1)
        {
            if (checkerContainerScript.PieceType == 1)
            {
                CheckUpLeftCapture();
                CheckUpRightCapture();
            }
            else
            {
                CheckAllCapture();
            }
        }
        else if (checkerContainerScript.PieceColor == 2 && !WhiteTurn)
        {
            if (checkerContainerScript.PieceType == 1)
            {
                CheckDownLeftCapture();
                CheckDownRightCapture();
            }
            else
            {
                CheckAllCapture();
            }
        }

        recaptureCheck = false;
    }
コード例 #8
0
    void Update()
    {
        if (enableMovement)
        {
            if (Vector3.Distance(checkerObject.transform.position, newTransform.position) > 0.001f)
            {
                if (!touchBlocker.enabled)
                {
                    touchBlocker.enabled = true;
                }

                checkerObject.transform.position = Vector3.Lerp(checkerObject.transform.position, newTransform.position, Time.deltaTime * 4f);
            }
            else
            {
                enableMovement       = false;
                touchBlocker.enabled = false;

                checkerObject.transform.position     = newTransform.position;
                checkerContainerScript               = checkerObject.GetComponent <CheckerContainer>();
                checkerContainerScript.BoardLocation = positionValue;

                if (gameController.CapturePerformed)
                {
                    gameController.FindAdditionalCaptures(checkerObject);

                    if (gameController.CanRecapture)
                    {
                        gameController.FindCaptures();

                        if (opponentAI.playingAI)
                        {
                            if (gameController.WhiteTurn && opponentAI.aiCheckerColor == 1)
                            {
                                opponentAI.RunAIChecklist();
                            }
                            else if (!gameController.WhiteTurn && opponentAI.aiCheckerColor == 2)
                            {
                                opponentAI.RunAIChecklist();
                            }
                        }
                    }
                    else
                    {
                        if (gameController.WhiteTurn)
                        {
                            gameController.WhiteTurn = false;
                            informationText.text     = "Red Turn";

                            if (opponentAI.playingAI && opponentAI.aiCheckerColor == 2)
                            {
                                opponentAI.RunAIChecklist();
                            }

                            gameController.FindCaptures();
                        }
                        else
                        {
                            gameController.WhiteTurn = true;
                            informationText.text     = "White Turn";

                            if (opponentAI.playingAI && opponentAI.aiCheckerColor == 1)
                            {
                                opponentAI.RunAIChecklist();
                            }

                            gameController.FindCaptures();
                        }
                    }
                }
                else if (!gameController.GameOver)
                {
                    gameController.CaptureRequired = false;

                    if (gameController.WhiteTurn)
                    {
                        gameController.WhiteTurn = false;
                        informationText.text     = "Red Turn";

                        if (opponentAI.playingAI && opponentAI.aiCheckerColor == 2)
                        {
                            opponentAI.RunAIChecklist();
                        }

                        gameController.FindCaptures();
                    }
                    else
                    {
                        gameController.WhiteTurn = true;
                        informationText.text     = "White Turn";

                        if (opponentAI.playingAI && opponentAI.aiCheckerColor == 1)
                        {
                            opponentAI.RunAIChecklist();
                        }

                        gameController.FindCaptures();
                    }
                }

                if (checkerContainerScript.BoardLocation >= 29 && checkerContainerScript.PieceColor == 1 && checkerContainerScript.PieceType != 2)
                {
                    checkerContainerScript.PieceType = 2;
                    Debug.Log("White Checker Kinged");
                }
                else if (checkerContainerScript.BoardLocation <= 4 && checkerContainerScript.PieceColor == 2 && checkerContainerScript.PieceType != 2)
                {
                    checkerContainerScript.PieceType = 2;
                    Debug.Log("Red Checker Kinged");
                }
            }
        }
    }
コード例 #9
0
    public void TriggerContainer()
    {
        if (CaptureIndicatorEnabled)
        {
            CheckerContainer checkerContainerScript = gameController.CheckerOfInterest.GetComponent <CheckerContainer>();
            gameController.ClearPositionLabels();
            gameController.ResetOccupationValue(checkerContainerScript.BoardLocation);

            if (MoveDirection == "UL")
            {
                captureContainerScript = gameController.CaptureObjectUL.GetComponent <CheckerContainer>();
                gameController.ResetOccupationValue(captureContainerScript.BoardLocation);
            }
            else if (MoveDirection == "UR")
            {
                captureContainerScript = gameController.CaptureObjectUR.GetComponent <CheckerContainer>();
                gameController.ResetOccupationValue(captureContainerScript.BoardLocation);
            }
            else if (MoveDirection == "DL")
            {
                captureContainerScript = gameController.CaptureObjectDL.GetComponent <CheckerContainer>();
                gameController.ResetOccupationValue(captureContainerScript.BoardLocation);
            }
            else if (MoveDirection == "DR")
            {
                captureContainerScript = gameController.CaptureObjectDR.GetComponent <CheckerContainer>();
                gameController.ResetOccupationValue(captureContainerScript.BoardLocation);
            }

            gameController.CapturePerformed = true;
            OccupyingChecker = checkerContainerScript;
            OccupationValue  = checkerContainerScript.PieceColor;
            movementController.TriggerMovement(gameController.CheckerOfInterest, transform, positionValue);

            if (captureContainerScript.PieceColor == 1)
            {
                gameController.whiteCheckers.Remove(captureContainerScript.gameObject);
            }
            else
            {
                gameController.redCheckers.Remove(captureContainerScript.gameObject);
            }

            if (MoveDirection == "UL")
            {
                Destroy(gameController.CaptureObjectUL, 1.0f);
            }
            else if (MoveDirection == "UR")
            {
                Destroy(gameController.CaptureObjectUR, 1.0f);
            }
            else if (MoveDirection == "DL")
            {
                Destroy(gameController.CaptureObjectDL, 1.0f);
            }
            else if (MoveDirection == "DR")
            {
                Destroy(gameController.CaptureObjectDR, 1.0f);
            }
            else
            {
                Debug.LogError("MoveDirection is null");
            }

            gameController.CheckerCounter.text = "White: " + gameController.whiteCheckers.Count + " Red: " + gameController.redCheckers.Count;

            if (gameController.whiteCheckers.Count == 0)
            {
                gameController.InformationText.text = "Game Over: Red Wins";
                gameController.GameOver             = true;
            }
            else if (gameController.redCheckers.Count == 0)
            {
                gameController.InformationText.text = "Game Over: White Wins";
                gameController.GameOver             = true;
            }
        }
        else if (MoveIndicatorEnabled)
        {
            gameController.CapturePerformed = false;
            CheckerContainer checkerContainerScript = gameController.CheckerOfInterest.GetComponent <CheckerContainer>();
            gameController.ClearPositionLabels();
            gameController.ResetOccupationValue(checkerContainerScript.BoardLocation);
            OccupyingChecker = checkerContainerScript;
            OccupationValue  = checkerContainerScript.PieceColor;
            movementController.TriggerMovement(gameController.CheckerOfInterest, transform, positionValue);
        }
    }