Advertisement
JonneOpettaja

GameController.cs

Feb 19th, 2020
195
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 5.81 KB | None | 0 0
  1. using UnityEngine;
  2. using UnityEngine.UI;
  3.  
  4. public class GameController : MonoBehaviour
  5. {
  6.  
  7.     public Text[] buttonList; // Lista nappejen teksteistä
  8.  
  9.     private string playerSide;
  10.  
  11.     /**
  12.      * Funktio kutsutaan pelin alussa.
  13.      * Kutsumme funktiota ja asetamme aloittavaksi pelaajaksi "O".
  14.      */
  15.     void Awake()
  16.     {
  17.         SetGameControllerReferenceOnButtons();
  18.         playerSide = "O";
  19.     }
  20.  
  21.     /**
  22.      * Funktio asettaa jokaisen napin kontrolleriksi tämän skriptin.
  23.      */
  24.     void SetGameControllerReferenceOnButtons()
  25.     {
  26.         for (int i = 0; i < buttonList.Length; i++) // Käymme läpi kaikki napit
  27.         {
  28.             buttonList[i].GetComponentInParent<GridSpace>().SetGameControllerReference(this); // Kutsumme funktiota napista
  29.         }
  30.     }
  31.  
  32.  
  33.     /**
  34.      * Kertoo nykyisen pelaajan nimen.
  35.      */
  36.     public string GetPlayerSide()
  37.     {
  38.         return playerSide;
  39.     }
  40.  
  41.     /**
  42.      * Funktio tarkistaa voittoehdot ja joko lopettaa pelin tai jatkaa seuraavaan erään.
  43.      */
  44.     public void EndTurn()
  45.     {
  46.  
  47.         // "Jos napit 0, 1 ,2 (vaaka ylärivi) ovat tämän erän pelaajan painamia, niin tee seuraava"
  48.  
  49.         if (buttonList[0].text == playerSide && buttonList[1].text == playerSide && buttonList[2].text == playerSide)
  50.         {
  51.             buttonList[0].color = Color.green;
  52.             buttonList[1].color = Color.green;
  53.             buttonList[2].color = Color.green; // Asettaa nappien värit vihreiksi
  54.  
  55.             GameOver(); // Kutsuu funktion, joka lopettaa pelin.
  56.             return; // "return" lopettaa funktion eikä suorita funktiossa sen jälkeen tulevia kohtia
  57.         }
  58.  
  59.         // Alla olevat "jos" kohdat toimivat saman kaavan mukaan, kuten ylempikin.
  60.  
  61.         if (buttonList[3].text == playerSide && buttonList[4].text == playerSide && buttonList[5].text == playerSide)
  62.         {
  63.             buttonList[3].color = Color.green;
  64.             buttonList[4].color = Color.green;
  65.             buttonList[5].color = Color.green;
  66.  
  67.             GameOver();
  68.             return;
  69.         }
  70.         if (buttonList[6].text == playerSide && buttonList[7].text == playerSide && buttonList[8].text == playerSide)
  71.         {
  72.             buttonList[6].color = Color.green;
  73.             buttonList[7].color = Color.green;
  74.             buttonList[8].color = Color.green;
  75.  
  76.             GameOver();
  77.             return;
  78.         }
  79.  
  80.         if (buttonList[0].text == playerSide && buttonList[3].text == playerSide && buttonList[6].text == playerSide)
  81.         {
  82.             buttonList[0].color = Color.green;
  83.             buttonList[5].color = Color.green;
  84.             buttonList[6].color = Color.green;
  85.  
  86.             GameOver();
  87.             return;
  88.         }
  89.  
  90.         if (buttonList[1].text == playerSide && buttonList[4].text == playerSide && buttonList[7].text == playerSide)
  91.         {
  92.             buttonList[1].color = Color.green;
  93.             buttonList[4].color = Color.green;
  94.             buttonList[7].color = Color.green;
  95.  
  96.             GameOver();
  97.             return;
  98.         }
  99.  
  100.         if (buttonList[2].text == playerSide && buttonList[5].text == playerSide && buttonList[8].text == playerSide)
  101.         {
  102.             buttonList[2].color = Color.green;
  103.             buttonList[3].color = Color.green;
  104.             buttonList[8].color = Color.green;
  105.  
  106.             GameOver();
  107.             return;
  108.         }
  109.  
  110.         if (buttonList[0].text == playerSide && buttonList[4].text == playerSide && buttonList[8].text == playerSide)
  111.         {
  112.             buttonList[0].color = Color.green;
  113.             buttonList[4].color = Color.green;
  114.             buttonList[8].color = Color.green;
  115.  
  116.             GameOver();
  117.             return;
  118.         }
  119.  
  120.         if (buttonList[2].text == playerSide && buttonList[4].text == playerSide && buttonList[6].text == playerSide)
  121.         {
  122.             buttonList[2].color = Color.green;
  123.             buttonList[4].color = Color.green;
  124.             buttonList[6].color = Color.green;
  125.  
  126.             GameOver();
  127.             return;
  128.         }
  129.  
  130.         int usedButtons = 0; // Variable painetuista napeista, voi sisältää vain numeron.
  131.  
  132.         foreach (Text button in buttonList) // Käy läpi kaikki napit
  133.         {
  134.             if (button.GetComponentInParent<Button>().interactable == false) // Jos nappi on jäädytetty, eli sitä on painettu niin...
  135.             {
  136.                 usedButtons++; // Nostaa usedButtons variablea yhdellä.
  137.             }
  138.         }
  139.  
  140.         if (usedButtons >= buttonList.Length) // "Jos käytettyjen nappien määrä on sama tai suurempi kuin nappien kokonaismäärä"
  141.         {
  142.             playerSide = "Peli"; // Asetamme nykyisen pelaajan nimeksi "Peli", koska kukaan ei voittanut, paitsi peli.
  143.             GameOver(); // Kutsumme peli loppui funktiota.
  144.             return;
  145.         }
  146.  
  147.         ChangeSides(); // Jos nykyisen erän pelaaja ei voita, niin kutsumme funktiota joka vaihtaa seuraavaan pelaajaan.
  148.  
  149.     }
  150.  
  151.     void ChangeSides()
  152.     {
  153.         if (GetPlayerSide() == "X") // Jos pelaaja on "X"
  154.         {
  155.             playerSide = "O"; // Asetetaan pelaajaksi "O"
  156.         }
  157.         else // Jos pelaaja ei olekkaan "X"
  158.         {
  159.             playerSide = "X"; // Asetetaan pelaajaksi "X"
  160.         }
  161.     }
  162.  
  163.     void GameOver()
  164.     {
  165.         for (int i = 0; i < buttonList.Length; i++) // Käydään läpi kaikki napit
  166.         {
  167.             if (GetPlayerSide() == "Peli") // Jos nykyinen pelaaja on "Peli"
  168.             {
  169.                 buttonList[i].color = Color.gray; // Asetetaan kaikkien nappien väriksi harmaa.
  170.             }
  171.  
  172.             buttonList[i].text = GetPlayerSide() + " voitti"; // Asetetaan kaikkien nappien tekstiksi "(Pelaajan nimi) voitti"
  173.             buttonList[i].GetComponentInParent<Button>().interactable = false; // Kaikki napit jäädytetään
  174.         }
  175.     }
  176. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement