Example #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;
        }
Example #2
0
        /// <summary>
        /// Tarkistetaan voittiko jompi kumpi pelaaja pelin
        /// </summary>
        private void TarkistaVoitto(Pelinappula syotyNappula)
        {
            if (syotyNappula.GetPelaaja() == 1)
            {
                pelaaja1NappuloidenMaara--;
            }
            else pelaaja2NappuloidenMaara--;

            if (pelaaja1NappuloidenMaara == 0)
            {
                IlmoitaVoittaja(pelaaja2 + " voitti!");
            }

            if (pelaaja2NappuloidenMaara == 0)
            {
                IlmoitaVoittaja(pelaaja1 + " voitti!");
            }
        }
Example #3
0
 /// <summary>
 /// Tarkistetaan onko nappulan toisella puolella tyhjä ruutu, eli voidaanko
 /// hypätä yli.
 /// </summary>
 /// <param name="liikutettavanColumn">Liikutettavan nappulan column</param>
 /// <param name="liikutettavanRow">Liikutettavan nappulan row</param>
 /// <returns></returns>
 private bool TarkistaOnkoRuutuTyhja(int liikutettavanColumn, int liikutettavanRow, Pelinappula syotavaNappula)
 {
     foreach (Pelinappula nappula in lista)
     {
         if (Grid.GetColumn(nappula) == liikutettavanColumn && Grid.GetRow(nappula) == liikutettavanRow)
         {
             pelikentta.VarjaaPunaiseksi(columnKlikkaus, rowKlikkaus, ruudukko1VariMuisti, ruudukko2VariMuisti);
             return false;
         }
     }
     return true;
 }
Example #4
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);
                }
            }
        }
Example #5
0
        /// <summary>
        /// Tarkistetaan voiko nappula liikkua tammessa.
        /// </summary>
        /// <param name="p1">Liikutusehto 1</param>
        /// <param name="p2">Liikutusehto 2</param>
        private void VoikoLiikkuaTammi(int p1, int p2, Pelinappula nappula, Pelinappula syotavaNappula)
        {
            Boolean a = TarkistaOnkoRuutuTyhja(p1, p2, syotavaNappula);
            if (a == true)
            {
                soiko = true;
                SyoNappula(syotavaNappula);
                LiikutaNappulaa(nappula, p1, p2);
                // SyoNappula(syotavaNappula);
            }
            else
            {
                joLiikutettu = true;
                return;
            }

        }
Example #6
0
        /// <summary>
        /// Tammen monimutkainen alustus, otetti huomioon kaikki
        /// eri pelilaudan koot.
        /// </summary>
        private void AlustaTammi()
        {
            pelaaja1NappuloidenMaara = 0;
            pelaaja2NappuloidenMaara = 0;
            int pariton = 0;
            int pelikentanKoko = pelikentta.GetPelikentanKoko();
            // Ensimmäisen pelaajan nappulat sijoittuvat samalla tavalla riippumatta laudan koosta
            for (int i = 0; i < 3; i++)
            {
                for (int o = 0; o < pelikentanKoko; o += 2)
                {
                    if (pariton % 2 == 0)
                    {
                        Pelinappula nappula = new Pelinappula();
                        nappula.SetPelaaja(1);
                        if (pelaaja1VariMuisti != null) nappula.SetVari1(pelaaja1VariMuisti);
                        pelaaja1NappuloidenMaara++;
                        nappula.ClickLol += nappula_Click;
                        Grid.SetColumn(nappula, o);
                        Grid.SetRow(nappula, i);
                        pelikentta.myGrid.Children.Add(nappula);
                        lista.Add(nappula);

                    }
                    else
                    {
                        if (o < pelikentanKoko - 1)
                        {
                            Pelinappula nappula = new Pelinappula();
                            nappula.SetPelaaja(1);
                            if (pelaaja1VariMuisti != null) nappula.SetVari1(pelaaja1VariMuisti);
                            pelaaja1NappuloidenMaara++;
                            nappula.ClickLol += nappula_Click;
                            Grid.SetColumn(nappula, o + 1);
                            Grid.SetRow(nappula, i);
                            pelikentta.myGrid.Children.Add(nappula);
                            lista.Add(nappula);
                        }
                    }

                }
                pariton++;
            }
            pariton = 0;
            // Toisen pelaajan nappuloiden sijoittelu on vähän monimutkaisempi
            // Menevät eri tavalla riippuen onko pelilaudan koko pariton vai parillinen
            if (pelikentanKoko % 2 != 0)
            {
                for (int i = pelikentanKoko - 1; i > pelikentanKoko - 4; i--)
                {
                    for (int o = 0; o < pelikentanKoko; o += 2)
                    {
                        if (pariton % 2 == 0)
                        {
                            Pelinappula nappula = new Pelinappula();
                            nappula.SetPelaaja(2);
                            if (pelaaja2VariMuisti != null) nappula.SetVari2(pelaaja2VariMuisti);
                            pelaaja2NappuloidenMaara++;
                            nappula.ClickLol += nappula_Click;
                            Grid.SetColumn(nappula, o);
                            Grid.SetRow(nappula, i);
                            pelikentta.myGrid.Children.Add(nappula);
                            lista.Add(nappula);
                        }
                        else
                        {
                            if (o < pelikentanKoko - 1)
                            {
                                Pelinappula nappula = new Pelinappula();
                                nappula.SetPelaaja(2);
                                if (pelaaja2VariMuisti != null) nappula.SetVari2(pelaaja2VariMuisti);
                                pelaaja2NappuloidenMaara++;
                                nappula.ClickLol += nappula_Click;
                                Grid.SetColumn(nappula, o + 1);
                                Grid.SetRow(nappula, i);
                                pelikentta.myGrid.Children.Add(nappula);
                                lista.Add(nappula);
                            }
                        }

                    }

                    pariton++;
                }
            }
            else
            {
                for (int i = pelikentanKoko - 1; i > pelikentanKoko - 4; i--)
                {
                    for (int o = 0; o < pelikentanKoko; o += 2)
                    {
                        if (pariton % 2 == 0)
                        {
                            Pelinappula nappula = new Pelinappula();
                            nappula.SetPelaaja(2);
                            if (pelaaja2VariMuisti != null) nappula.SetVari2(pelaaja2VariMuisti);
                            pelaaja2NappuloidenMaara++;
                            nappula.ClickLol += nappula_Click;
                            Grid.SetColumn(nappula, o + 1);
                            Grid.SetRow(nappula, i);
                            pelikentta.myGrid.Children.Add(nappula);
                            lista.Add(nappula);
                        }
                        else
                        {
                            if (o < pelikentanKoko - 1)
                            {
                                Pelinappula nappula = new Pelinappula();
                                nappula.SetPelaaja(2);
                                if (pelaaja2VariMuisti != null) nappula.SetVari2(pelaaja2VariMuisti);
                                pelaaja2NappuloidenMaara++;
                                nappula.ClickLol += nappula_Click;
                                Grid.SetColumn(nappula, o);
                                Grid.SetRow(nappula, i);
                                pelikentta.myGrid.Children.Add(nappula);
                                lista.Add(nappula);
                            }
                        }

                    }
                    pariton++;
                }
            }
            pariton = 0;
            ArvoVuoro(lista);
        }
Example #7
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);
                    }
                }
            }
        }
Example #8
0
        /// <summary>
        /// Tarkistetaan nappulan automaattiliikutus jos se on pelaajan 1 nappula
        /// ja sijaitsee oikeassa laidassa.
        /// </summary>
        /// <param name="nappula">Automaattisesti liikutettava nappula</param>
        /// <param name="nappulaColumn">Automaattisesti liikutettavan nappulan column</param>
        /// <param name="nappulaRow">Automaattisesti liikutettavan nappulan row</param>
        /// <param name="p1">Liikutusehto 1 kun ei syödä</param>
        /// <param name="p2">Liikutusehto 2 kun ei syödä</param>
        /// <param name="p11">Liikutusehto 1 kun syödään automaattisesti</param>
        /// <param name="p22">Liikutusehto 2 kun syödään automaattisesti</param>
        /// <returns>Palauttaa false/true sen mukaan onko liikutettu automaattisesti</returns>
        private bool Nappula1ColumnReuna(Pelinappula nappula, int nappulaColumn, int nappulaRow, int p1, int p2, int p11, int p22)
        {
            Boolean liikutetaanko = true;

            if (nappulaRow < pelikentta.GetPelikentanKoko() - 2 && nappula.GetPelaaja() == 1 || nappula.GetPelaaja() == 2 && nappulaRow > 1)
            {
                foreach (Pelinappula nappula1 in lista)
                {
                    if (Grid.GetColumn(nappula1) == nappulaColumn + p1 && Grid.GetRow(nappula1) == nappulaRow + p2)
                    {
                        liikutetaanko = false;
                        if (nappula1.GetPelaaja() != nappula.GetPelaaja())
                        {
                            if (TarkistaOnkoRuutuTyhjaAutomaatti(nappulaColumn + p11, nappulaRow + p22, true))
                            {
                                soiko = true;
                                LiikutaNappulaa(nappula, nappulaColumn + p11, nappulaRow + p22);
                                SyoNappula(nappula1);
                                return true;

                            }
                            else
                            {
                                PoistaValinta();
                            }
                        }
                    }
                }
                if (liikutetaanko == true)
                {
                    LiikutaNappulaa(nappula, nappulaColumn + p1, nappulaRow + p2);
                    return true;
                }
                else
                {
                    TarkistaOnkoRuutuTyhjaAutomaatti(nappulaColumn + p1, nappulaRow + p2, true);
                    PoistaValinta();
                }
            }
            else
            {
                liikutetaanko = true;
                foreach (Pelinappula nappula1 in lista)
                {
                    if (Grid.GetColumn(nappula1) == nappulaColumn + p1 && Grid.GetRow(nappula1) == nappulaRow + p2)
                    {
                        liikutetaanko = false;
                        if (nappula1.GetPelaaja() == 2)
                        {
                            PoistaValinta();
                            liikutetaanko = false;
                            TarkistaOnkoRuutuTyhjaAutomaatti(nappulaColumn + p1, nappulaRow + p2, true);
                        }
                        if (nappula1.GetPelaaja() == 1)
                        {
                            PoistaValinta();
                            liikutetaanko = false;
                            TarkistaOnkoRuutuTyhjaAutomaatti(nappulaColumn + p1, nappulaRow + p2, true);
                        }
                    }
                }
                if (liikutetaanko == true)
                {
                    LiikutaNappulaa(nappula, nappulaColumn + p1, nappulaRow + p2);
                    return true;
                }
            }

            return false;
        }
Example #9
0
 /// <summary>
 /// Poistetaan syöty nappula pelilaudalta ja tarkistetaan onko
 /// peli voitettu
 /// </summary>
 /// <param name="nappula1">Nappula joka syödään</param>
 private void SyoNappula(Pelinappula nappula1)
 {
     pelikentta.myGrid.Children.Remove(nappula1);
     Grid.SetColumn(nappula1, 200);
     Grid.SetRow(nappula1, 200);
     TarkistaVoitto(nappula1);
     nappula1.Syoty(true);
     joLiikutettu = true;
     varjataanko = false;
 }
Example #10
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;

        }
Example #11
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;
        }
Example #12
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);
                    }

                }
            }
        }
Example #13
0
        /// <summary>
        /// Alustetaan Breakthrough-pelikenttä.
        /// </summary>
        private void AlustaBreakthrough()
        {
            int pelikentanKoko = pelikentta.GetPelikentanKoko();
            // Toisen pelaajan nappulat
            for (int i = 0; i < 2; i++)
            {
                for (int o = 0; o < pelikentanKoko; o++)
                {
                    Pelinappula nappula = new Pelinappula();
                    nappula.SetPelaaja(1);
                    if (pelaaja1VariMuisti != null) nappula.SetVari1(pelaaja1VariMuisti);
                    nappula.ClickLol += nappula_Click;
                    Grid.SetColumn(nappula, o);
                    Grid.SetRow(nappula, i);
                    pelikentta.myGrid.Children.Add(nappula);
                    lista.Add(nappula);

                }
            }


            // Ja toisen pelaajan nappulat
            for (int i = pelikentanKoko - 1; i > pelikentanKoko - 3; i--)
            {
                for (int o = 0; o < pelikentanKoko; o++)
                {
                    Pelinappula nappula = new Pelinappula();
                    nappula.SetPelaaja(2);
                    if (pelaaja2VariMuisti != null) nappula.SetVari2(pelaaja2VariMuisti);
                    nappula.ClickLol += nappula_Click;
                    Grid.SetColumn(nappula, o);
                    Grid.SetRow(nappula, i);
                    pelikentta.myGrid.Children.Add(nappula);
                    lista.Add(nappula);
                }
            }

            ArvoVuoro(lista);
        }
Example #14
0
        /// <summary>
        /// Laitetaan siirrot muistiin StringBuilderiin.
        /// </summary>
        /// <param name="columnKlikkaus">Klikattu column</param>
        /// <param name="rowKlikkaus">Klikattu row</param>
        /// <param name="nappula">nappula jota liikutettiin</param>
        private void KirjoitaMuistiin(int columnKlikkaus, int rowKlikkaus, Pelinappula nappula)
        {
            if (nappula.GetPelaaja() == 1)
            {
                muisti.Append(pelaaja1 + "(1)" + ": " + "Ruudusta " + "(" + (Grid.GetColumn(nappula) + 1) + ", " + (Grid.GetRow(nappula) + 1) + ") " + " ruutuun " + "(" + (columnKlikkaus + 1) + ", " + (rowKlikkaus + 1) + ") ");
                if (soiko == true) muisti.Append("Söi vastustajan nappulan");
                muisti.Append("\n");
                //    soiko = false;
            }
            else
            {
                muisti.Append(pelaaja2 + "(2)" + ": " + "Ruudusta " + "(" + (Grid.GetColumn(nappula) + 1) + ", " + (Grid.GetRow(nappula) + 1) + ") " + " ruutuun " + "(" + (columnKlikkaus + 1) + ", " + (rowKlikkaus + 1) + ") ");
                if (soiko == true) muisti.Append("Söi vastustajan nappulan");
                muisti.Append("\n");
                //      soiko = false;
            }

            tallennus.IsEnabled = true;
            tulostus.IsEnabled = true;
            luovutus.IsEnabled = true;
        }
Example #15
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;
        }
Example #16
0
        /// <summary>
        /// Tarkistaa onko siirryttävässä ruudussa nappula, jos ei niin siirrytään ja jos on 
        /// niin tarkisteaan voidaanko syödä.
        /// </summary>
        /// <param name="r1">Ehto 1</param>
        /// <param name="r2">Ehto 2</param>
        /// <param name="r3">Ehto 3</param>
        /// <param name="p1">Oma nappula</param>
        /// <param name="p2">Vastustajan nappula</param>
        private void OnkoRuudussaNappula(int r1, int r2, int r3, int p2, int p1, Pelinappula nappula)
        {
            rowKlikkaus = pelikentta.GetRow();
            columnKlikkaus = pelikentta.GetColumn();
            columnNappula = Grid.GetColumn(nappula);
            rowNappula = Grid.GetRow(nappula);

            if ((rowKlikkaus - rowNappula) == r1 && ((columnKlikkaus - columnNappula) == r2 || (columnKlikkaus - columnNappula) == r3))
            {
                // Käydään läpi nappulat, että tiedetään syökö nappula toisen nappulan tai onko ruudussa jo oma nappula.
                foreach (Pelinappula nappula1 in lista)
                {
                    // Tarkistetaan onko ruudussa johon liikutaan vastustajan nappula
                    if (Grid.GetRow(nappula1) == rowKlikkaus && Grid.GetColumn(nappula1) == columnKlikkaus && nappula1.GetPelaaja() == p2)
                    {
                        TarkistaSyontiLiikutusTammi(nappula, nappula1);
                    }

                    // Lopetetaan jos siirryttävässä ruudussa on jo oma nappula.
                    if ((Grid.GetRow(nappula1) == rowKlikkaus) && (Grid.GetColumn(nappula1) == columnKlikkaus) && (nappula1.GetPelaaja() == p1))
                    {
                        pelikentta.VarjaaPunaiseksi(columnKlikkaus, rowKlikkaus, ruudukko1VariMuisti, ruudukko2VariMuisti);
                        return;
                    }
                }
                // Jos päästään tänne, voidaan siirtää valittu nappula klikattavaan kohtaan.
                if (joLiikutettu == false)
                {
                    liikuttuEriSuuntaan = false;
                    LiikutaNappulaa(nappula, columnKlikkaus, rowKlikkaus);
                    varjataanko = false;
                }
                joLiikutettu = false;
            }
            if (rowKlikkaus != rowNappula || columnKlikkaus != columnNappula)
            {
                if (varjataanko == true)
                {
                    pelikentta.VarjaaPunaiseksi(columnKlikkaus, rowKlikkaus, ruudukko1VariMuisti, ruudukko2VariMuisti);
                    varjataanko = true;
                }
            }
        }
Example #17
0
        /// <summary>
        /// Tarkistetaan onko syötäviä nappuloita tammi-nappulalla kun on jo kerran syöty
        /// </summary>
        /// <param name="nappula">Liikutettava nappula</param>
        /// <param name="vastustaja">Vastustaja</param>
        /// <returns></returns>
        private bool OnkoSyotaviaTammi(Pelinappula nappula, int vastustaja)
        {
            int mahdollisetSiirrot = 0;
            // keskellä kaikki
            if (Grid.GetRow(nappula) > 1 && Grid.GetRow(nappula) < pelikentta.GetPelikentanKoko() - 2 && Grid.GetColumn(nappula) > 1 && Grid.GetColumn(nappula) < pelikentta.GetPelikentanKoko() - 2)
            {
                foreach (Pelinappula nappula1 in lista)
                {
                    if (nappula1.GetPelaaja() == vastustaja && Grid.GetRow(nappula1) == Grid.GetRow(nappula) + 1 && Grid.GetColumn(nappula1) == Grid.GetColumn(nappula) + 1)
                    {
                        if (TarkistaOnkoRuutuTyhjaAutomaatti(Grid.GetColumn(nappula) + 2, Grid.GetRow(nappula) + 2, false))
                        {
                            mahdollisetSiirrot++;
                        }
                    }

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

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

                    if (nappula1.GetPelaaja() == vastustaja && Grid.GetRow(nappula1) == Grid.GetRow(nappula) - 1 && Grid.GetColumn(nappula1) == Grid.GetColumn(nappula) - 1)
                    {
                        if (TarkistaOnkoRuutuTyhjaAutomaatti(Grid.GetColumn(nappula) - 2, Grid.GetRow(nappula) - 2, false))
                        {
                            mahdollisetSiirrot++;
                        }
                    }
                }
               
                
            }
            // ylhäälä vasen ja oikea
            if (Grid.GetRow(nappula) <= 1 && Grid.GetColumn(nappula) > 1 && Grid.GetColumn(nappula) < pelikentta.GetPelikentanKoko() - 2)
            {
                foreach (Pelinappula nappula1 in lista)
                {
                    if (nappula1.GetPelaaja() == vastustaja && Grid.GetRow(nappula1) == Grid.GetRow(nappula) + 1 && Grid.GetColumn(nappula1) == Grid.GetColumn(nappula) + 1)
                    {
                        if (TarkistaOnkoRuutuTyhjaAutomaatti(Grid.GetColumn(nappula) + 2, Grid.GetRow(nappula) + 2, false))
                        {
                            mahdollisetSiirrot++;
                        }
                    }

                    if (nappula1.GetPelaaja() == vastustaja && Grid.GetRow(nappula1) == Grid.GetRow(nappula) + 1 && Grid.GetColumn(nappula1) == Grid.GetColumn(nappula) - 1)
                    {
                        if (TarkistaOnkoRuutuTyhjaAutomaatti(Grid.GetColumn(nappula) - 2, Grid.GetRow(nappula) + 2, false))
                        {
                            mahdollisetSiirrot++;
                        }
                    }
                }
            }
            // alhaalla vasen ja oikea
            if (Grid.GetRow(nappula) >= pelikentta.GetPelikentanKoko() - 2 && Grid.GetColumn(nappula) > 1 && Grid.GetColumn(nappula) < pelikentta.GetPelikentanKoko() - 2)
            {
                foreach (Pelinappula nappula1 in lista)
                {
                    if (nappula1.GetPelaaja() == vastustaja && Grid.GetRow(nappula1) == Grid.GetRow(nappula) - 1 && Grid.GetColumn(nappula1) == Grid.GetColumn(nappula) + 1)
                    {
                        if (TarkistaOnkoRuutuTyhjaAutomaatti(Grid.GetColumn(nappula) + 2, Grid.GetRow(nappula) - 2, false))
                        {
                            mahdollisetSiirrot++;
                        }
                    }

                    if (nappula1.GetPelaaja() == vastustaja && Grid.GetRow(nappula1) == Grid.GetRow(nappula) - 1 && Grid.GetColumn(nappula1) == Grid.GetColumn(nappula) - 1)
                    {
                        if (TarkistaOnkoRuutuTyhjaAutomaatti(Grid.GetColumn(nappula) - 2, Grid.GetRow(nappula) - 2, false))
                        {
                            mahdollisetSiirrot++;
                        }
                    }
                }
            }
            // vasemmalla ylös oikea ja alas oikea
            if (Grid.GetColumn(nappula) <= 1 && Grid.GetRow(nappula) > 1 && Grid.GetRow(nappula) < pelikentta.GetPelikentanKoko() - 2)
            {
                foreach (Pelinappula nappula1 in lista)
                {
                    if (nappula1.GetPelaaja() == vastustaja && Grid.GetRow(nappula1) == Grid.GetRow(nappula) - 1 && Grid.GetColumn(nappula1) == Grid.GetColumn(nappula) + 1)
                    {
                        if (TarkistaOnkoRuutuTyhjaAutomaatti(Grid.GetColumn(nappula) + 2, Grid.GetRow(nappula) - 2, false))
                        {
                            mahdollisetSiirrot++;
                        }
                    }

                    if (nappula1.GetPelaaja() == vastustaja && Grid.GetRow(nappula1) == Grid.GetRow(nappula) + 1 && Grid.GetColumn(nappula1) == Grid.GetColumn(nappula) + 1)
                    {
                        if (TarkistaOnkoRuutuTyhjaAutomaatti(Grid.GetColumn(nappula) + 2, Grid.GetRow(nappula) + 2, false))
                        {
                            mahdollisetSiirrot++;
                        }
                    }
                }
            }
            // oikealla ylös vase ja alas vasen
            if (Grid.GetColumn(nappula) >= pelikentta.GetPelikentanKoko() - 2 && Grid.GetRow(nappula) > 1 && Grid.GetRow(nappula) < pelikentta.GetPelikentanKoko() - 2)
            {
                foreach (Pelinappula nappula1 in lista)
                {
                    if (nappula1.GetPelaaja() == vastustaja && Grid.GetRow(nappula1) == Grid.GetRow(nappula) - 1 && Grid.GetColumn(nappula1) == Grid.GetColumn(nappula) - 1)
                    {
                        if (TarkistaOnkoRuutuTyhjaAutomaatti(Grid.GetColumn(nappula) - 2, Grid.GetRow(nappula) - 2, false))
                        {
                            mahdollisetSiirrot++;
                        }
                    }

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

            if (mahdollisetSiirrot > 0) return true;

            return false;
        }
Example #18
0
        /// <summary>
        /// Siirretään valittua nappulaan ruutuun jota klikataan ja syödään nappula
        /// tarvittaessa. (Pelilogiikka)
        /// </summary>
        /// <param name="nappula"></param>
        private void TarkistaLiikutusBreakthrough(Pelinappula nappula)
        {

            if (nappula.OnkoValittu())
            {
                // otetaan int-muuttujiin tiedot nappulan sijainnista ja klikkauksen sijainnista
                int rowKlikkaus = pelikentta.GetRow();
                int columnKlikkaus = pelikentta.GetColumn();
                int columnNappula = Grid.GetColumn(nappula);
                int rowNappula = Grid.GetRow(nappula);

                // Tarkistetaan kumman puolen nappulaa ollaan siirtämässä. TODO: REFAKTOROI samat koodit!!!!
                if (nappula.GetPelaaja() == 1)
                {
                    // Katsotaan täyttyvätkö siirtoehdot
                    if ((rowKlikkaus - rowNappula) == 1 && ((columnKlikkaus - columnNappula) == 1 || (columnKlikkaus - columnNappula) == 0 || (columnKlikkaus - columnNappula) == -1))
                    {
                        // Käydään läpi nappulat, että tiedetään syökö nappula toisen nappulan tai onko ruudussa jo oma nappula.
                        foreach (Pelinappula nappula1 in lista)
                        {
                            // Tarkistetaan onko ruudussa johon liikutaan vastustajan nappula
                            if (Grid.GetRow(nappula1) == rowKlikkaus && Grid.GetColumn(nappula1) == columnKlikkaus && nappula1.GetPelaaja() == 2)
                            {
                                if (columnKlikkaus - columnNappula == 0)
                                {
                                    pelikentta.VarjaaPunaiseksi(columnKlikkaus, rowKlikkaus, ruudukko1VariMuisti, ruudukko2VariMuisti);
                                    return;

                                }// Ei voida syödä jos nappula kohtisuorassa.
                                pelikentta.myGrid.Children.Remove(nappula1);
                                // Ainakin väliaikainen ratkaisu nappulan poistoon gridiltä.
                                Grid.SetColumn(nappula1, 200);
                                Grid.SetRow(nappula1, 200);
                                nappula1.Syoty(true);
                                soiko = true;
                            }

                            // Lopetetaan jos siirryttävässä ruudussa on jo oma nappula.
                            if ((Grid.GetRow(nappula1) == rowKlikkaus) && (Grid.GetColumn(nappula1) == columnKlikkaus) && (nappula1.GetPelaaja() == 1))
                            {
                                pelikentta.VarjaaPunaiseksi(columnKlikkaus, rowKlikkaus, ruudukko1VariMuisti, ruudukko2VariMuisti);
                                return;

                            }
                        }
                        KirjoitaMuistiin(columnKlikkaus, rowKlikkaus, nappula);
                        // Jos päästään tänne, voidaan siirtää valittu nappula klikattavaan kohtaan.
                        Grid.SetColumn(nappula, columnKlikkaus);
                        Grid.SetRow(nappula, rowKlikkaus);
                        varjataanko = false;
                        // Jos klikkaus oli vastustajan päädyssä voittaa pelin
                        if (rowKlikkaus == pelikentta.GetPelikentanKoko() - 1)
                        {
                            nappula.Voitti();
                            LopetaPeli();
                            IlmoitaVoittaja(pelaaja1 + " voitti!");
                            return;
                        }
                        pelikentta.VaihdaVuoro();
                        PoistaValinta();
                    }
                    if (rowKlikkaus != rowNappula || columnKlikkaus != columnNappula)
                    {
                        if (varjataanko == true)
                        {
                            pelikentta.VarjaaPunaiseksi(columnKlikkaus, rowKlikkaus, ruudukko1VariMuisti, ruudukko2VariMuisti);
                            varjataanko = true;
                        }
                    }
                }

                // Tarkistetaan kumman puolen nappulaa ollaan siirtämässä. TODO: REFAKTOROI samat koodit!!!!
                if (nappula.GetPelaaja() == 2)
                {

                    // Tarkistetaan täyttyvätkö siirtoehdot, ei voi liikkua ihan minne tahansa
                    if ((rowKlikkaus - rowNappula) == -1 && ((columnKlikkaus - columnNappula) == 0 || (columnKlikkaus - columnNappula) == -1 || (columnKlikkaus - columnNappula) == 1))
                    {
                        // Käydään läpi nappulat, että tiedetään syökö nappula toisen nappulan tai onko ruudussa jo oma nappula.
                        foreach (Pelinappula nappula1 in lista)
                        {
                            // Tarkistetaan onko ruudussa johon liikutaan vastustajan nappula
                            if (Grid.GetRow(nappula1) == rowKlikkaus && Grid.GetColumn(nappula1) == columnKlikkaus && nappula1.GetPelaaja() == 1)
                            {
                                if (columnKlikkaus - columnNappula == 0)
                                {
                                    pelikentta.VarjaaPunaiseksi(columnKlikkaus, rowKlikkaus, ruudukko1VariMuisti, ruudukko2VariMuisti);
                                    return;
                                }
                                pelikentta.myGrid.Children.Remove(nappula1);
                                // Ainakin väliaikainen ratkaisu nappulan poistoon gridiltä.
                                Grid.SetColumn(nappula1, 200);
                                Grid.SetRow(nappula1, 200);
                                nappula1.Syoty(true);
                                soiko = true;
                            }

                            // Lopetetaan jos siirryttävässä ruudussa on jo oma nappula.
                            if ((Grid.GetRow(nappula1) == rowKlikkaus) && (Grid.GetColumn(nappula1) == columnKlikkaus) && (nappula1.GetPelaaja() == 2) && (nappula1.OnkoSyoty() == false))
                            {
                                pelikentta.VarjaaPunaiseksi(columnKlikkaus, rowKlikkaus, ruudukko1VariMuisti, ruudukko2VariMuisti);
                                return;
                            }
                        }

                        // Jos päästään tänne, voidaan siirtää valittu nappula klikattavaan kohtaan.
                        KirjoitaMuistiin(columnKlikkaus, rowKlikkaus, nappula);
                        Grid.SetColumn(nappula, columnKlikkaus);
                        Grid.SetRow(nappula, rowKlikkaus);
                        varjataanko = false;
                        if (rowKlikkaus == 0)
                        {
                            nappula.Voitti();
                            LopetaPeli();
                            IlmoitaVoittaja(pelaaja2 + " voitti!");
                            return;
                        }
                        pelikentta.VaihdaVuoro();
                        PoistaValinta();
                    }
                    if (rowKlikkaus != rowNappula || columnKlikkaus != columnNappula)
                    {
                        if (varjataanko == true)
                        {
                            pelikentta.VarjaaPunaiseksi(columnKlikkaus, rowKlikkaus, ruudukko1VariMuisti, ruudukko2VariMuisti);
                            varjataanko = true;
                        }
                    }
                }
            }
        }