Ejemplo n.º 1
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);
                    }

                }
            }
        }
Ejemplo n.º 2
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;
                        }
                    }
                }
            }
        }