Esempio n. 1
0
    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);
    }
Esempio n. 2
0
 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);
         }
     }
 }
Esempio n. 3
0
 //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> ();
 }
Esempio n. 4
0
    /// <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;
        }
    }
Esempio n. 5
0
    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);
    }
Esempio n. 6
0
    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);
                }
            }
        }
    }
Esempio n. 7
0
    // 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");
    }
Esempio n. 9
0
    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);
    }