private void Start() { GameObject ChessTable = GameObject.Find("chess-table"); Controller = ChessTable.GetComponent <FieldController>(); ChessTable = GameObject.Find("chess-table"); GameObject ScriptHolder = GameObject.Find("ScriptHolder"); AiDetails = ScriptHolder.GetComponent <AIDetails>(); StepRandomizer = Random.Range(2, 20); }
public void AddTerminalMinimaxValuesOfWhiteAI(AIDetails aiDetails) { if (this.Children.Count == 0) { this.Minimax = CalculateWhiteMinimax(aiDetails); } else { for (int i = 0; i < this.Children.Count; i++) { this.Children[i].AddTerminalMinimaxValuesOfWhiteAI(aiDetails); } } }
//Called when the object is instaniated void Start() { //Get the Gamemanager and Audio manager from the scene glob_gamemanager = GameObject.FindGameObjectWithTag("GameManager"); glob_audiomanager = GameObject.FindGameObjectWithTag("audio_manager"); ai_details = gameObject.GetComponent <AIDetails> (); //Get the AI details component from the same object as the one this //component is attached too! //Setup the AI field, deck, hand, ect ai_hand = new List <Card> (); ai_graveyard = new List <Card> (); ai_deck = new List <Card> (); ai_extradeck = new List <Card> (); ai_monsterzones = new List <DuelMonsterZoneScript> (); }
/// <summary> /// Command to setup the duel opponent and all necessary components required /// for executing the AI correctly /// </summary> public void btn_Duel() { glob_audiomanager.SendMessage("PlayClickA"); //When this button is pressed we need too //1.Instatiate the Duel Opponent Controller //2.Pass all the options and AI details to the Controller //3.Load the Duel Scene if (GameObject.FindGameObjectWithTag("DUEL_OPPONENT") == null) { Instantiate(duel_opponent_prefab, new Vector3(0.0f, 0.0f, 0.0f), Quaternion.identity); AIDetails dOpponent = GameObject. FindGameObjectWithTag("DUEL_OPPONENT"). GetComponent <AIDetails> (); DuelOptions duelOpts = GameObject. FindGameObjectWithTag("DUEL_OPPONENT"). GetComponent <DuelOptions> (); AIDetails sOpponent = selectedAI.GetComponent <AIDetails> (); //Assign everything to the new Duel opponent object dOpponent.ai_name = sOpponent.ai_name; dOpponent.ai_deckname = sOpponent.ai_deckname; dOpponent.ai_image = sOpponent.ai_image; dOpponent.ai_unlocklevel = sOpponent.ai_unlocklevel; dOpponent.ai_decklist = sOpponent.ai_decklist; dOpponent.ai_winExp = sOpponent.ai_winExp; dOpponent.ai_lossExp = sOpponent.ai_lossExp; dOpponent.ai_drawExp = sOpponent.ai_drawExp; dOpponent.speech_DuelStart = sOpponent.speech_DuelStart; dOpponent.speech_EndTurn = sOpponent.speech_EndTurn; dOpponent.speech_DrawCard = sOpponent.speech_DrawCard; dOpponent.speech_SummonCard = sOpponent.speech_SummonCard; dOpponent.speech_SetCard = sOpponent.speech_SetCard; dOpponent.speech_DirectAttack = sOpponent.speech_DirectAttack; dOpponent.speech_NormalAttack = sOpponent.speech_NormalAttack; duelOpts.duelopt_traditionalrules = ui_toggleTraditional.isOn; duelOpts.duelopt_monstersonly = ui_toggleMonstersOnly.isOn; duelOpts.duelopt_noeffectmonsters = ui_toggleNoEffect.isOn; duelOpponentLoaded = true; } }
void Start() { GameObject materialLoader; materialLoader = GameObject.Find("GreenCube"); GreenCubeMaterial = materialLoader.GetComponent <Renderer>().material; materialLoader = GameObject.Find("WhitePawn"); WhitePawnMaterial = materialLoader.GetComponent <Renderer>().material; GameObject ChessTable = GameObject.Find("chess-table"); Controller = ChessTable.GetComponent <FieldController>(); GameObject ScriptHolder = GameObject.Find("ScriptHolder"); AiDetails = ScriptHolder.GetComponent <AIDetails>(); StepRandomizer = Random.Range(2, 10); }
void Start() { //Get our Gamemanagers glob_gamemanager = GameObject.FindGameObjectWithTag("GameManager"); glob_audiomanager = GameObject.FindGameObjectWithTag("audio_manager"); //Foreach AI assigned in Unity Editor foreach (GameObject ai in ai_opponents) { //Compare your account level with the AI level to unlock it AIDetails aiDet = ai.GetComponent <AIDetails> (); int myLevel = glob_gamemanager.GetComponent <AccountController> (). LoggedInAccount.Level; if (aiDet != null) { if (myLevel >= aiDet.ai_unlocklevel) { //If unlocked then we can display it in our player select ai.SetActive(true); } } } }
// Start is called before the first frame update void Start() { ScriptHolder = GameObject.Find("ScriptHolder"); AiDetails = ScriptHolder.GetComponent <AIDetails>(); #region Init StepIgnoreToggle.isOn = AiDetails.UseStepIgnore; MaxLevel.text = AiDetails.MaxLevel.ToString(); MaxLevelWhite.text = AiDetails.MaxLevelWhite.ToString(); //White WhiteRow1.text = AiDetails.WhiteRowBonuses[0].ToString(); WhiteRow2.text = AiDetails.WhiteRowBonuses[1].ToString(); WhiteRow3.text = AiDetails.WhiteRowBonuses[2].ToString(); WhiteRow4.text = AiDetails.WhiteRowBonuses[3].ToString(); WhiteRow5.text = AiDetails.WhiteRowBonuses[4].ToString(); WhiteRow6.text = AiDetails.WhiteRowBonuses[5].ToString(); WhiteRow7.text = AiDetails.WhiteRowBonuses[6].ToString(); WhiteRow8.text = AiDetails.WhiteRowBonuses[7].ToString(); WhiteSafe.text = AiDetails.WhiteSafeFieldBonus.ToString(); WhiteSafeOnSide.text = AiDetails.WhiteSafeFieldBonusOnSide.ToString(); WhiteRowForm.text = AiDetails.WhiteRowFormationBonus.ToString(); WhiteRowFormOnSide.text = AiDetails.WhiteRowFormationBonusOnSide.ToString(); WhiteColumnForm.text = AiDetails.WhiteColumnFormationBonus.ToString(); WhiteColumnFormOnSide.text = AiDetails.WhiteColumnFormationBonusOnSide.ToString(); WhiteDiagonalForm.text = AiDetails.WhiteDiagonalFormationBonus_SecondaryFormation.ToString(); WhiteDiagonalFormOnSide.text = AiDetails.WhiteDiagonalFormationBonusOnSide_SecondaryFormation.ToString(); WhitePenalty.text = AiDetails.WhitePenaltyForDangerousField.ToString(); WhitePenaltyOnSide.text = AiDetails.WhitePenaltyForDangerousFieldOnSide.ToString(); WhiteDefender.text = AiDetails.WhitePawnInDangerDefenderBonus.ToString(); WhiteDefenderOnSide.text = AiDetails.WhitePawnInDangerDefenderBonusOnSide.ToString(); //Black BlackRow1.text = AiDetails.BlackRowBonuses[0].ToString(); BlackRow2.text = AiDetails.BlackRowBonuses[1].ToString(); BlackRow3.text = AiDetails.BlackRowBonuses[2].ToString(); BlackRow4.text = AiDetails.BlackRowBonuses[3].ToString(); BlackRow5.text = AiDetails.BlackRowBonuses[4].ToString(); BlackRow6.text = AiDetails.BlackRowBonuses[5].ToString(); BlackRow7.text = AiDetails.BlackRowBonuses[6].ToString(); BlackRow8.text = AiDetails.BlackRowBonuses[7].ToString(); BlackSafe.text = AiDetails.BlackSafeFieldBonus.ToString(); BlackSafeOnSide.text = AiDetails.BlackSafeFieldBonusOnSide.ToString(); BlackRowForm.text = AiDetails.BlackRowFormationBonus.ToString(); BlackRowFormOnSide.text = AiDetails.BlackRowFormationBonusOnSide.ToString(); BlackColumnForm.text = AiDetails.BlackColumnFormationBonus.ToString(); BlackColumnFormOnSide.text = AiDetails.BlackColumnFormationBonusOnSide.ToString(); BlackDiagonalForm.text = AiDetails.BlackDiagonalFormationBonus_SecondaryFormation.ToString(); BlackDiagonalFormOnSide.text = AiDetails.BlackDiagonalFormationBonusOnSide_SecondaryFormation.ToString(); BlackPenalty.text = AiDetails.BlackPenaltyForDangerousField.ToString(); BlackPenaltyOnSide.text = AiDetails.BlackPenaltyForDangerousFieldOnSide.ToString(); BlackDefender.text = AiDetails.BlackPawnInDangerDefenderBonus.ToString(); BlackDefenderOnSide.text = AiDetails.BlackPawnInDangerDefenderBonusOnSide.ToString(); #endregion Time.timeScale = 0; }
void Start() { //Get the necessary Managers glob_gamemanager = GameObject.FindGameObjectWithTag("GameManager"); glob_audiomanager = GameObject.FindGameObjectWithTag("audio_manager"); //Get the information on the Duel Opponent/AI duel_opponent = GameObject.FindGameObjectWithTag("DUEL_OPPONENT"); //Get player Account details accountControl = glob_gamemanager.GetComponent <AccountController> (); //Get the AI details ai_details = duel_opponent.GetComponent <AIDetails> (); duel_opts = duel_opponent.GetComponent <DuelOptions> (); //Determine if the Player Lost,Won,or Drew the game hasPlayerLost = duel_opts.hasPlayerLost; hasDrawnGame = duel_opts.hasDrawnGame; //Assign the appropriate amount of EXP if (hasDrawnGame) { hasLeveledUp = accountControl.AddDraw(ai_details.ai_drawExp); rewardsText += ai_details.ai_drawExp.ToString() + "xp,"; } else { if (hasPlayerLost) { hasLeveledUp = accountControl.AddLoss(ai_details.ai_lossExp); rewardsText += ai_details.ai_lossExp.ToString() + "xp,"; } else { hasLeveledUp = accountControl.AddWin(ai_details.ai_winExp); rewardsText += ai_details.ai_winExp.ToString() + "xp,"; } } //Set the rewards text and place the new lines where assigned rewardsText = rewardsText.Replace(",", "\n"); //Assign player and AI profile pictures ui_img_playerDisplay.sprite = accountControl.LoggedInAccount.DisplayPicture; ui_img_aiDisplay.sprite = ai_details.ai_image; //Assign player and AI names to the UI ui_lbl_playerName.text = accountControl.LoggedInAccount.Username; ui_lbl_aiName.text = ai_details.ai_name; //Assign the rewards the player recieved to the UI ui_lbl_rewards.text = rewardsText; //Output the Result to the UI if (hasPlayerLost) { ui_lbl_result.color = Color.red; ui_lbl_result.text = "Result: Lost"; } else { ui_lbl_result.color = Color.green; ui_lbl_result.text = "Result: Win"; } Destroy(duel_opponent); //Dump the old Duel Opponent object //A new one is made at each new Duel, so it's okay //Stop the Duel music and go back to the MainMenu audio glob_audiomanager.SendMessage("StopDuelAudio"); glob_audiomanager.SendMessage("PlayMainMenuAudio"); }
public int CalculateWhiteMinimax(AIDetails aiDetails) { int mm = 0; //Fekete pontjainak kiszámítása for (int i = 0; i < 8; i++) { for (int j = 0; j < 8; j++) { if (this.Table[i, j] == 1) { switch (i) { case 0: { mm += aiDetails.BlackRowBonuses[0]; break; } case 1: { mm += aiDetails.BlackRowBonuses[1]; break; } case 2: { mm += aiDetails.BlackRowBonuses[2]; break; } case 3: { mm += aiDetails.BlackRowBonuses[3]; break; } case 4: { mm += aiDetails.BlackRowBonuses[4]; break; } case 5: { mm += aiDetails.BlackRowBonuses[5]; break; } case 6: { mm += aiDetails.BlackRowBonuses[6]; break; } case 7: { mm += aiDetails.BlackRowBonuses[7]; break; } } } //------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- //------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- //------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- else { //Fehérek összpontszáma if (this.Table[i, j] == 2) { switch (i) { case 0: { mm -= aiDetails.WhiteRowBonuses[0]; break; } case 1: { mm -= aiDetails.WhiteRowBonuses[1]; break; } case 2: { mm -= aiDetails.WhiteRowBonuses[2]; break; } case 3: { mm -= aiDetails.WhiteRowBonuses[3]; break; } case 4: { mm -= aiDetails.WhiteRowBonuses[4]; break; } case 5: { mm -= aiDetails.WhiteRowBonuses[5]; break; } case 6: { mm -= aiDetails.WhiteRowBonuses[6]; break; } case 7: { mm -= aiDetails.WhiteRowBonuses[7]; break; } } if (j != 0 && j != 7) { // Ha biztonságos mezőre lép +1 pont. if (i != 0 && this.Table[i - 1, j + 1] != 1 && this.Table[i - 1, j - 1] != 1) { mm -= aiDetails.WhiteSafeFieldBonus; } //Alakzat bónusz, ha egymás mellett vagy alatt vannak +1 pont. //Sor if (this.Table[i, j - 1] == 2) { mm -= aiDetails.WhiteRowFormationBonus; } if (this.Table[i, j + 1] == 2) { mm -= aiDetails.WhiteRowFormationBonus; } if (i != 7 && this.Table[i, j - 1] == 2 && this.Table[i, j + 1] == 2) { if (this.Table[i + 1, j - 1] == 2) { mm -= aiDetails.WhiteDiagonalFormationBonus_SecondaryFormation; } if (this.Table[i + 1, j + 1] == 2) { mm -= aiDetails.WhiteDiagonalFormationBonus_SecondaryFormation; } } //Oszlop if (i != 0 && this.Table[i - 1, j] == 2) { mm -= aiDetails.WhiteColumnFormationBonus; } if (i != 7 && this.Table[i + 1, j] == 2) { mm -= aiDetails.WhiteColumnFormationBonus; } if (i != 7 && i != 0 && this.Table[i - 1, j] == 2 && this.Table[i + 1, j] == 2) { if (this.Table[i + 1, j - 1] == 2) { mm -= aiDetails.WhiteDiagonalFormationBonus_SecondaryFormation; } if (this.Table[i + 1, j + 1] == 2) { mm -= aiDetails.WhiteDiagonalFormationBonus_SecondaryFormation; } } //Ellenfél ütő mezője - Nem biztonságos mező -1 pont if (i != 0 && i < 5 && (this.Table[i - 1, j + 1] == 1 || this.Table[i - 1, j - 1] == 1)) { if (this.Table[i - 1, j + 1] == 1) { mm += aiDetails.WhitePenaltyForDangerousField; } if (this.Table[i - 1, j - 1] == 1) { mm += aiDetails.WhitePenaltyForDangerousField; } if (this.Table[i + 1, j - 1] == 2) { mm -= aiDetails.WhitePawnInDangerDefenderBonus; } if (this.Table[i + 1, j + 1] == 2) { mm -= aiDetails.WhitePawnInDangerDefenderBonus; } //if (i != 0 && this.Table[i + 1, j] == 2) //{ // mm -= aiDetails.WhitePawnInDangerDefenderBonus; //} } } else { if (j == 0) { // Ha biztonságos mezőre lép +1 pont. if (i != 0 && this.Table[i - 1, j + 1] != 1) { mm -= aiDetails.WhiteSafeFieldBonusOnSide; } //Alakzat bónusz, ha egymás mellett vagy alatt vannak +1 pont. //Sor if (this.Table[i, j + 1] == 2) { mm -= aiDetails.WhiteRowFormationBonusOnSide; if (i != 7 && this.Table[i + 1, j + 1] == 2) { mm -= aiDetails.WhiteDiagonalFormationBonusOnSide_SecondaryFormation; } } //Oszlop if (i != 0 && this.Table[i - 1, j] == 2) { mm -= aiDetails.WhiteColumnFormationBonusOnSide; } if (i != 7 && this.Table[i + 1, j] == 2) { mm -= aiDetails.WhiteColumnFormationBonusOnSide; } if (i != 7 && i != 0 && this.Table[i - 1, j] == 2 && this.Table[i + 1, j] == 2) { if (this.Table[i + 1, j + 1] == 2) { mm -= aiDetails.WhiteDiagonalFormationBonusOnSide_SecondaryFormation; } } //Ellenfél ütő mezője - Nem biztonságos mező -1 pont if (i != 0 && i < 5 && this.Table[i - 1, j + 1] == 1) { mm += aiDetails.WhitePenaltyForDangerousFieldOnSide; if (this.Table[i + 1, j + 1] == 2) { mm -= aiDetails.WhitePawnInDangerDefenderBonusOnSide; } //if (i != 7 && this.Table[i + 1, j] == 2) //{ // mm -= aiDetails.WhitePawnInDangerDefenderBonusOnSide; //} } } else { // Ha biztonságos mezőre lép +1 pont. if (i != 0 && this.Table[i - 1, j - 1] != 1) { mm -= aiDetails.WhiteSafeFieldBonusOnSide; } //Alakzat bónusz, ha egymás mellett vagy alatt vannak +1 pont. //Sor if (this.Table[i, j - 1] == 2) { mm -= aiDetails.WhiteRowFormationBonusOnSide; if (i != 7 && this.Table[i + 1, j - 1] == 2) { mm -= aiDetails.WhiteDiagonalFormationBonusOnSide_SecondaryFormation; } } //Oszlop if (i != 0 && this.Table[i - 1, j] == 2) { mm -= aiDetails.WhiteColumnFormationBonusOnSide; } if (i != 7 && this.Table[i + 1, j] == 2) { mm -= aiDetails.WhiteColumnFormationBonusOnSide; } if (i != 7 && i != 0 && this.Table[i - 1, j] == 2 && this.Table[i + 1, j] == 2) { if (this.Table[i + 1, j - 1] == 2) { mm -= aiDetails.WhiteDiagonalFormationBonusOnSide_SecondaryFormation; } } //Ellenfél ütő mezője - Nem biztonságos mező -1 pont if (i != 0 && i < 5 && this.Table[i - 1, j - 1] == 1) { mm += aiDetails.WhitePenaltyForDangerousFieldOnSide; if (this.Table[i + 1, j - 1] == 2) { mm -= aiDetails.WhitePawnInDangerDefenderBonusOnSide; } //if (i != 7 && this.Table[i + 1, j] == 2) //{ // mm -= aiDetails.WhitePawnInDangerDefenderBonusOnSide; //} } } } } } } } return(mm); }