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; }
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; }
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; }
static void Main(string[] args) { IDisplay display = new ScreenDisplay(); CheckerContainer checkerContainer = FullCheckerContainer(); CooperateMachines work = new CooperateMachines(display, checkerContainer); StartProgramm(work); }
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); }
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); } }
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; }
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"); } } } }
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); } }