Esempio n. 1
0
        /// <summary>
        /// Kaikkien nappuloiden liikuttamiseen käytetty alihojelma.
        /// </summary>
        /// <param name="nappula">Liikutettava nappula</param>
        /// <param name="columnKlikkaus">Column johon ollaan siirtämässä</param>
        /// <param name="rowKlikkaus">Row johon ollaan siirtämässä</param>
        private void LiikutaNappulaa(Pelinappula nappula, int columnKlikkaus, int rowKlikkaus)
        {
            luovutus.IsEnabled = true;

            KirjoitaMuistiin(columnKlikkaus, rowKlikkaus, nappula);
            Grid.SetColumn(nappula, columnKlikkaus);
            Grid.SetRow(nappula, rowKlikkaus);
            if (!nappula.GetTammi()) TarkistaMuuttuukoTammeksi(nappula);
            if (soiko == true)
            {
                if (OnkoSyotavia(nappula))
                {

                }
                else
                {
                    pelikentta.VaihdaVuoro();
                    PoistaValinta();
                }
            }
            else
            {
                pelikentta.VaihdaVuoro();
                PoistaValinta();
            }
            soiko = false;
        }
Esempio n. 2
0
        /// <summary>
        /// Tarkisetaan syönnin jälkeen voiko nappula syödä lisää, jos voi niin
        /// jätetään vuoro syöjälle jotta voi syödä lisää.
        /// </summary>
        /// <param name="nappula"></param>
        /// <returns></returns>
        private bool OnkoSyotavia(Pelinappula nappula)
        {
            int mahdollisetSiirrot = 0;
            // Pelaajan 1 syöminen
            if (nappula.GetPelaaja() == 1 && !nappula.GetTammi() && Grid.GetRow(nappula) < pelikentta.GetPelikentanKoko() - 2)
            {
                foreach (Pelinappula nappula1 in lista)
                {
                    if (Grid.GetRow(nappula1) == Grid.GetRow(nappula) + 1 && Grid.GetColumn(nappula1) == Grid.GetColumn(nappula) + 1 && nappula1.GetPelaaja() == 2 && Grid.GetColumn(nappula) < pelikentta.GetPelikentanKoko() - 2)
                    {
                        if (TarkistaOnkoRuutuTyhjaAutomaatti(Grid.GetColumn(nappula) + 2, Grid.GetRow(nappula) + 2, false))
                        {
                            mahdollisetSiirrot++;
                        }
                    }

                    if (Grid.GetRow(nappula1) == Grid.GetRow(nappula) + 1 && Grid.GetColumn(nappula1) == Grid.GetColumn(nappula) - 1 && nappula1.GetPelaaja() == 2 && Grid.GetColumn(nappula) > 1)
                    {
                        if (TarkistaOnkoRuutuTyhjaAutomaatti(Grid.GetColumn(nappula) - 2, Grid.GetRow(nappula) + 2, false))
                        {
                            mahdollisetSiirrot++;
                        }
                    }
                }

            }
            // Pelaajan 2 syöminen
            if (nappula.GetPelaaja() == 2 && !nappula.GetTammi() && Grid.GetRow(nappula) > 1)
            {
                foreach (Pelinappula nappula1 in lista)
                {
                    if (Grid.GetRow(nappula1) == Grid.GetRow(nappula) - 1 && Grid.GetColumn(nappula1) == Grid.GetColumn(nappula) + 1 && nappula1.GetPelaaja() == 1 && Grid.GetColumn(nappula) < pelikentta.GetPelikentanKoko() - 2)
                    {
                        if (TarkistaOnkoRuutuTyhjaAutomaatti(Grid.GetColumn(nappula) + 2, Grid.GetRow(nappula) - 2, false))
                        {
                            mahdollisetSiirrot++;
                        }
                    }

                    if (Grid.GetRow(nappula1) == Grid.GetRow(nappula) - 1 && Grid.GetColumn(nappula1) == Grid.GetColumn(nappula) - 1 && nappula1.GetPelaaja() == 1 && Grid.GetColumn(nappula) > 1)
                    {
                        if (TarkistaOnkoRuutuTyhjaAutomaatti(Grid.GetColumn(nappula) - 2, Grid.GetRow(nappula) - 2, false))
                        {
                            mahdollisetSiirrot++;
                        }
                    }
                }
            }
            if (nappula.GetTammi())
            {
                if (nappula.GetPelaaja() == 1) return OnkoSyotaviaTammi(nappula, 2);
                else return OnkoSyotaviaTammi(nappula, 1);
            }
            if (mahdollisetSiirrot != 0)
            {
                return true;
            }
            return false;
        }
Esempio n. 3
0
        /// <summary>
        /// Tarkistetaan voidaanko nappulalla syödä toinen nappula.
        /// </summary>
        /// <param name="nappula">Liikutettava nappula</param>
        /// <param name="syotavaNappula">Syötävä nappula</param>
        private void TarkistaSyontiLiikutusTammi(Pelinappula nappula, Pelinappula syotavaNappula)
        {
            int liikutettavanRow = Grid.GetRow(nappula);
            int liikutettavanColumn = Grid.GetColumn(nappula);
            int syotavaRow = Grid.GetRow(syotavaNappula);
            int syotavaColumn = Grid.GetColumn(syotavaNappula);
            int i = liikutettavanColumn - syotavaColumn;
            // Ei anneta hypätä pelilaudan ulkopuolelle, palataan.
            if (syotavaColumn == 0 || (syotavaColumn == pelikentta.GetPelikentanKoko() - 1) || (syotavaRow == 0) || (syotavaRow == pelikentta.GetPelikentanKoko() - 1))
            {
                pelikentta.VarjaaPunaiseksi(syotavaColumn, syotavaRow, ruudukko1VariMuisti, ruudukko2VariMuisti);
                joLiikutettu = true;
                return;
            }

            if (nappula.GetTammi() && liikuttuEriSuuntaan == true)
            {
                if (nappula.GetPelaaja() == 1)
                {
                    // oikea (-1) vasen (1)
                    if (i == -1) // oikea
                    {
                        VoikoLiikkuaTammi(liikutettavanColumn + 2, liikutettavanRow - 2, nappula, syotavaNappula);
                    }
                    if (i == 1) // vasen
                    {
                        VoikoLiikkuaTammi(liikutettavanColumn - 2, liikutettavanRow - 2, nappula, syotavaNappula);
                    }
                    return;
                }

                if (nappula.GetPelaaja() == 2)
                {
                    if (i == -1) // oikea
                    {
                        VoikoLiikkuaTammi(liikutettavanColumn + 2, liikutettavanRow + 2, nappula, syotavaNappula);

                    }
                    if (i == 1) // vasen
                    {
                        VoikoLiikkuaTammi(liikutettavanColumn - 2, liikutettavanRow + 2, nappula, syotavaNappula);
                    }
                    return;
                }

            }

            if (nappula.GetPelaaja() == 1)
            {
                // oikea (-1) vasen (1)
                if (i == -1) // oikea
                {
                    VoikoLiikkuaTammi(liikutettavanColumn + 2, liikutettavanRow + 2, nappula, syotavaNappula);
                }
                if (i == 1) // vasen
                {
                    VoikoLiikkuaTammi(liikutettavanColumn - 2, liikutettavanRow + 2, nappula, syotavaNappula);
                }
            }

            if (nappula.GetPelaaja() == 2)
            {
                if (i == -1) // oikea
                {
                    VoikoLiikkuaTammi(liikutettavanColumn + 2, liikutettavanRow - 2, nappula, syotavaNappula);

                }
                if (i == 1) // vasen
                {
                    VoikoLiikkuaTammi(liikutettavanColumn - 2, liikutettavanRow - 2, nappula, syotavaNappula);
                }
            }
        }
Esempio n. 4
0
        /// <summary>
        /// Tarkistaa muuttuuko nappula tammeksi, eli onko se pelilaudan toisessa päässä verrattuna
        /// aloituspäähän.
        /// </summary>
        /// <param name="nappula">Liikutettava nappula</param>
        private void TarkistaMuuttuukoTammeksi(Pelinappula nappula)
        {
            if (nappula.GetPelaaja() == 1)
            {
                if (Grid.GetRow(nappula) == pelikentta.GetPelikentanKoko() - 1)
                {
                    if (!nappula.GetTammi())
                    {
                        nappula.SuurennaNappula();
                        nappula.SetTammi(true);
                    }
                }
            }

            if (nappula.GetPelaaja() == 2)
            {
                if (Grid.GetRow(nappula) == 0)
                {
                    if (!nappula.GetTammi())
                    {
                        nappula.SuurennaNappula();
                        nappula.SetTammi(true);
                    }
                }
            }
        }
Esempio n. 5
0
        /// <summary>
        /// Tarkistaa onko nappulalla vapaita siirjtoja.
        /// </summary>
        /// <param name="nappula"></param>
        /// <param name="pelaaja"></param>
        /// <returns></returns>
        private bool TarkistaVapaatSiirrot(Pelinappula nappula)
        {
            int nappulaColumn = Grid.GetColumn(nappula);
            int nappulaRow = Grid.GetRow(nappula);
            if (nappula.GetPelaaja() == 1 && !nappula.GetTammi())
            {
                if (nappulaColumn == 0 || nappulaColumn == pelikentta.GetPelikentanKoko() - 1) // tarkistetaan onko nappula ruudukon vasemmassa vai oikeassa reunassa
                {
                    if (nappulaColumn == 0) // jos column vasemmassa reunassa
                    {
                        bool a = Nappula1ColumnReuna(nappula, nappulaColumn, nappulaRow, 1, 1, 2, 2);
                        return a;
                    }
                    else // jos column oikea reuna
                    {
                        bool a = Nappula1ColumnReuna(nappula, nappulaColumn, nappulaRow, -1, 1, -2, 2);
                        return a;
                    }
                }
                else // Tänne kaikki muut automaattiset siirrot
                {

                }
            }
            else if (nappula.GetPelaaja() == 1 && nappula.GetTammi()) // tänne tamminappulan 1 automaattisiirrot
            {

            }

            if (nappula.GetPelaaja() == 2 && !nappula.GetTammi())
            {
                if (nappulaColumn == 0 || nappulaColumn == pelikentta.GetPelikentanKoko() - 1)
                {
                    if (nappulaColumn == 0) // jos column vasemmassa reunassa
                    {
                        bool a = Nappula1ColumnReuna(nappula, nappulaColumn, nappulaRow, 1, -1, 2, -2);
                        return a;
                    }
                    else // jos column oikeassa reunassa
                    {
                        bool a = Nappula1ColumnReuna(nappula, nappulaColumn, nappulaRow, -1, -1, -2, -2);
                        return a;
                    }
                }
                else // tänne kaikki muut automaattisiirrot
                {

                }
            }
            else if (nappula.GetPelaaja() == 2 && nappula.GetTammi()) // tamminappulan 2 automaattisiirrot
            {

            }
            return false;
        }
Esempio n. 6
0
        /// <summary>
        /// Tarkistetaan mahdolliset automaattiset liikutukset.
        /// </summary>
        /// <param name="nappula">Liikutettava nappula</param>
        private bool TarkistaMahdollisetLiikutukset(Pelinappula nappula)
        {

            if (nappula.GetTammi())
            {

            }
            else
            {
                bool siirretty = TarkistaVapaatSiirrot(nappula);
                return siirretty;
            }
            return false;

        }
Esempio n. 7
0
        /// <summary>
        /// Tarkistetaan nappulan liikutus tammi-pelissä.
        /// </summary>
        /// <param name="nappula"></param>
        private void TarkistaLiikutusTammi(Pelinappula nappula)
        {
            rowKlikkaus = pelikentta.GetRow();

            if (nappula.OnkoValittu())
            {
                /// AUTOMAATTILIIKUTUS
                bool liikutettu = TarkistaMahdollisetLiikutukset(nappula);
                if (liikutettu == true) return;
                if (nappula.GetPelaaja() == 1)
                {
                    if (nappula.GetTammi())
                    {
                        if (Grid.GetRow(nappula) - rowKlikkaus == 1)
                        {
                            liikuttuEriSuuntaan = true;
                            OnkoRuudussaNappula(-1, 1, -1, 2, 1, nappula);
                        }
                        else
                        {
                            OnkoRuudussaNappula(1, 1, -1, 2, 1, nappula);
                        }
                    }
                    else
                    {
                        OnkoRuudussaNappula(1, 1, -1, 2, 1, nappula);
                    }

                }

                if (nappula.GetPelaaja() == 2)
                {
                    if (nappula.GetTammi())
                    {
                        if (Grid.GetRow(nappula) - rowKlikkaus == -1)
                        {
                            liikuttuEriSuuntaan = true;
                            OnkoRuudussaNappula(1, 1, -1, 1, 2, nappula);
                        }
                        else
                        {
                            OnkoRuudussaNappula(-1, 1, -1, 1, 2, nappula);
                        }

                    }
                    else
                    {
                        // Siirryttävät ruudut ja pelaajat
                        OnkoRuudussaNappula(-1, 1, -1, 1, 2, nappula);
                    }

                }
            }
        }