Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using UnityEngine;
- using UnityEngine.UI;
- public class GameController : MonoBehaviour
- {
- public Text[] buttonList; // Lista nappejen teksteistä
- private string playerSide;
- /**
- * Funktio kutsutaan pelin alussa.
- * Kutsumme funktiota ja asetamme aloittavaksi pelaajaksi "O".
- */
- void Awake()
- {
- SetGameControllerReferenceOnButtons();
- playerSide = "O";
- }
- /**
- * Funktio asettaa jokaisen napin kontrolleriksi tämän skriptin.
- */
- void SetGameControllerReferenceOnButtons()
- {
- for (int i = 0; i < buttonList.Length; i++) // Käymme läpi kaikki napit
- {
- buttonList[i].GetComponentInParent<GridSpace>().SetGameControllerReference(this); // Kutsumme funktiota napista
- }
- }
- /**
- * Kertoo nykyisen pelaajan nimen.
- */
- public string GetPlayerSide()
- {
- return playerSide;
- }
- /**
- * Funktio tarkistaa voittoehdot ja joko lopettaa pelin tai jatkaa seuraavaan erään.
- */
- public void EndTurn()
- {
- // "Jos napit 0, 1 ,2 (vaaka ylärivi) ovat tämän erän pelaajan painamia, niin tee seuraava"
- if (buttonList[0].text == playerSide && buttonList[1].text == playerSide && buttonList[2].text == playerSide)
- {
- buttonList[0].color = Color.green;
- buttonList[1].color = Color.green;
- buttonList[2].color = Color.green; // Asettaa nappien värit vihreiksi
- GameOver(); // Kutsuu funktion, joka lopettaa pelin.
- return; // "return" lopettaa funktion eikä suorita funktiossa sen jälkeen tulevia kohtia
- }
- // Alla olevat "jos" kohdat toimivat saman kaavan mukaan, kuten ylempikin.
- if (buttonList[3].text == playerSide && buttonList[4].text == playerSide && buttonList[5].text == playerSide)
- {
- buttonList[3].color = Color.green;
- buttonList[4].color = Color.green;
- buttonList[5].color = Color.green;
- GameOver();
- return;
- }
- if (buttonList[6].text == playerSide && buttonList[7].text == playerSide && buttonList[8].text == playerSide)
- {
- buttonList[6].color = Color.green;
- buttonList[7].color = Color.green;
- buttonList[8].color = Color.green;
- GameOver();
- return;
- }
- if (buttonList[0].text == playerSide && buttonList[3].text == playerSide && buttonList[6].text == playerSide)
- {
- buttonList[0].color = Color.green;
- buttonList[5].color = Color.green;
- buttonList[6].color = Color.green;
- GameOver();
- return;
- }
- if (buttonList[1].text == playerSide && buttonList[4].text == playerSide && buttonList[7].text == playerSide)
- {
- buttonList[1].color = Color.green;
- buttonList[4].color = Color.green;
- buttonList[7].color = Color.green;
- GameOver();
- return;
- }
- if (buttonList[2].text == playerSide && buttonList[5].text == playerSide && buttonList[8].text == playerSide)
- {
- buttonList[2].color = Color.green;
- buttonList[3].color = Color.green;
- buttonList[8].color = Color.green;
- GameOver();
- return;
- }
- if (buttonList[0].text == playerSide && buttonList[4].text == playerSide && buttonList[8].text == playerSide)
- {
- buttonList[0].color = Color.green;
- buttonList[4].color = Color.green;
- buttonList[8].color = Color.green;
- GameOver();
- return;
- }
- if (buttonList[2].text == playerSide && buttonList[4].text == playerSide && buttonList[6].text == playerSide)
- {
- buttonList[2].color = Color.green;
- buttonList[4].color = Color.green;
- buttonList[6].color = Color.green;
- GameOver();
- return;
- }
- int usedButtons = 0; // Variable painetuista napeista, voi sisältää vain numeron.
- foreach (Text button in buttonList) // Käy läpi kaikki napit
- {
- if (button.GetComponentInParent<Button>().interactable == false) // Jos nappi on jäädytetty, eli sitä on painettu niin...
- {
- usedButtons++; // Nostaa usedButtons variablea yhdellä.
- }
- }
- if (usedButtons >= buttonList.Length) // "Jos käytettyjen nappien määrä on sama tai suurempi kuin nappien kokonaismäärä"
- {
- playerSide = "Peli"; // Asetamme nykyisen pelaajan nimeksi "Peli", koska kukaan ei voittanut, paitsi peli.
- GameOver(); // Kutsumme peli loppui funktiota.
- return;
- }
- ChangeSides(); // Jos nykyisen erän pelaaja ei voita, niin kutsumme funktiota joka vaihtaa seuraavaan pelaajaan.
- }
- void ChangeSides()
- {
- if (GetPlayerSide() == "X") // Jos pelaaja on "X"
- {
- playerSide = "O"; // Asetetaan pelaajaksi "O"
- }
- else // Jos pelaaja ei olekkaan "X"
- {
- playerSide = "X"; // Asetetaan pelaajaksi "X"
- }
- }
- void GameOver()
- {
- for (int i = 0; i < buttonList.Length; i++) // Käydään läpi kaikki napit
- {
- if (GetPlayerSide() == "Peli") // Jos nykyinen pelaaja on "Peli"
- {
- buttonList[i].color = Color.gray; // Asetetaan kaikkien nappien väriksi harmaa.
- }
- buttonList[i].text = GetPlayerSide() + " voitti"; // Asetetaan kaikkien nappien tekstiksi "(Pelaajan nimi) voitti"
- buttonList[i].GetComponentInParent<Button>().interactable = false; // Kaikki napit jäädytetään
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement