Ejemplo n.º 1
0
        /// <summary>
        /// Luodaan nappulat
        /// </summary>
        public void LuoNappulat()
        {
            for (int i = 0; i < sallitutPaikat.Count / 2; i++)
            {
                int sar = (int)sallitutPaikat[i].X;
                int riv = (int)sallitutPaikat[i].Y;
                if (riv >= 3)
                {
                    break;
                }

                Pelinappula.Pelinappula nappula = new Pelinappula.Pelinappula();
                if (ylaPelaajanVari == null)
                {
                    ylaPelaajanVari = Brushes.White;
                }
                Pelinappula.Pelinappula.SetVari(nappula, ylaPelaajanVari);
                valkoiset_nappulat[i] = nappula;
                gridi.Children.Add(nappula);

                Grid.SetColumn(nappula, sar);
                Grid.SetRow(nappula, riv);
                v_paikat[i] = sallitutPaikat[i];
                vapaat_paikat.Remove(new Point(sar, riv));
            }

            int indeksi = taulukoidenKoko - 1;

            for (int j = sallitutPaikat.Count - 1; j > 0; j--)
            {
                int sar = (int)sallitutPaikat[j].X;
                int riv = (int)sallitutPaikat[j].Y;
                if (riv < kokoAlue / 2 - 3)
                {
                    break;
                }

                Pelinappula.Pelinappula nappula = new Pelinappula.Pelinappula();
                if (alaPelaajanVari == null)
                {
                    alaPelaajanVari = Brushes.DarkRed;
                }
                Pelinappula.Pelinappula.SetVari(nappula, alaPelaajanVari);
                punaiset_nappulat[indeksi] = nappula;
                gridi.Children.Add(nappula);

                Grid.SetColumn(nappula, sar);
                Grid.SetRow(nappula, riv);
                p_paikat[indeksi] = sallitutPaikat[j];
                vapaat_paikat.Remove(new Point(sar, riv));
                indeksi--;
            }
            // aloittajan arvonta
            Random rand = new Random();

            vuoro = rand.Next(0, 2);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Käsitellään nappulan syönti ja syövän nappulan siirto sekä mahdollinen voitto
        /// // Tänne vielä siirtojen keräys!!
        /// </summary>
        /// <param name="syova">Nappula, joka liikkuu</param>
        /// <param name="syotava">Nappula, joka jää syönnin alle</param>
        /// <param name="syovat">Liikkuvan nappulan paikkataulukko</param>
        /// <param name="syotavat">Syönnin alle jäävän nappulan paikkataulukko</param>
        /// <param name="liikkuvat">Liikkuvan nappulan taulukko</param>
        /// <param name="poistuvat">Syonnin alle jäävän nappulan taulukko</param>
        private void SyoJaLiiku(Point syova, Point syotava, Point[] syovat, Point[] syotavat,
                                Pelinappula.Pelinappula[] liikkuvat, Pelinappula.Pelinappula[] poistuvat, List <Point> siirrot)
        {
            int indeksi = EtsiIndeksi(syova, syovat);

            if (indeksi == -1)
            {
                return;
            }
            Pelinappula.Pelinappula liikutettava = liikkuvat[indeksi];
            int rivi    = (int)syotava.Y;
            int kolumni = (int)syotava.X;

            // otetaan nykyinen paikka talteen
            siirrot.Add(syova);
            // siirretään liikkuva nappula
            Grid.SetColumn(liikutettava, kolumni);
            Grid.SetRow(liikutettava, rivi);
            siirrot.Add(new Point(kolumni, rivi));

            // poistetaan poistettava nappula
            int i = EtsiIndeksi(syotava, syotavat);

            if (i != -1)
            {
                gridi.Children.Remove(poistuvat[i]);
                syotavat[i] = new Point(-1, -1);
            }

            if (vuoro == 0) // vuoron vaihto
            {
                v_paikat[indeksi] = syotava;
                Pelinappula.Pelinappula.SetVari(liikutettava, alaPelaajanVari);
                vuoro = 1;
                // jos nappula voitii
                if (syotava.Y <= 0)
                {
                    IlmoitaVoittaja(liikutettava);
                }
            }
            else
            {
                if (vuoro == 1)
                {
                    m_paikat[indeksi] = syotava;
                    Pelinappula.Pelinappula.SetVari(liikutettava, ylaPelaajanVari);
                    vuoro = 0;
                    // jos nappula voitti
                    if (syotava.Y >= kokoAlue / 2 - 1)
                    {
                        IlmoitaVoittaja(liikutettava);
                    }
                }
            }
        }
Ejemplo n.º 3
0
 /// <summary>
 /// Etsitään annetusta taulukosta annettu nappula
 /// </summary>
 /// <param name="nap">Etsittävä nappula</param>
 /// <param name="t">Taulukko josta etsitään</param>
 /// <returns>Löytyikö nappulaa vai ei</returns>
 private bool LoytyykoTaulukosta(Pelinappula.Pelinappula nap, Pelinappula.Pelinappula[] t)
 {
     for (int i = 0; i < t.Length; i++)
     {
         if (t[i] == nap)
         {
             return(true);
         }
     }
     return(false);
 }
Ejemplo n.º 4
0
 /// <summary>
 /// Vaihdetaan siirrettävää
 /// </summary>
 /// <param name="suunta">Nappuloiden suunat</param>
 /// <param name="klikatunPaikka">Klikatun paikka</param>
 /// <param name="omat_paikat">Omien nappuloiden paikka</param>
 /// <param name="taulukoidenKoko">Taulukoiden koko</param>
 /// <param name="omat_nappulat">Omat nappulat</param>
 /// <param name="i">Mikä indeksi</param>
 /// <param name="perusvari">Nappuloiden perusväri</param>
 /// <param name="korostusvari">Nappuloiden korostusväri</param>
 private void VaihdaSiirrettavaa(String suunta, Point klikatunPaikka, Point[] omat_paikat, int taulukoidenKoko,
                                 Pelinappula.Pelinappula[] omat_nappulat, int i, SolidColorBrush perusvari, SolidColorBrush korostusvari)
 {
     if (LoytyykoTaulukosta(siirrettavaNappula, omat_nappulat))
     {
         Pelinappula.Pelinappula.SetVari(siirrettavaNappula, perusvari);
     }
     Pelinappula.Pelinappula.SetVari(omat_nappulat[i], korostusvari);
     siirrettavaNappula         = omat_nappulat[i];
     siirrettavanNappulanPaikka = omat_paikat[i];
 }
Ejemplo n.º 5
0
        /// <summary>
        /// Nappulan liikuttaminen (ja mahdollienen syönti, kun klikattu, että halutaan siirtyä
        /// laatalle, jossa on joku)
        /// </summary>
        /// <param name="uusiPaikka">Paikka johon halutaan siirtyä</param>
        private void LiikutaNappulaa(Point uusiPaikka)
        {
            Pelinappula.Pelinappula[] t;
            Point[] p;
            String  suunta = "";

            Point[] toinen_p;
            Pelinappula.Pelinappula[] toinen_t;
            List <Point> siirrot;

            if (vuoro == 0) // jos on valkoisten vuoro
            {
                t        = valkoiset_nappulat;
                p        = v_paikat;
                suunta   = "ylos";
                toinen_p = m_paikat;
                toinen_t = mustat_nappulat;
                siirrot  = valkoiset_siirrot;
            }
            else
            {
                if (vuoro >= 2)
                {
                    return;             // jos vuoro ei ole kummankaan
                }
                t        = mustat_nappulat;
                p        = m_paikat;
                suunta   = "alas";
                toinen_p = v_paikat;
                toinen_t = valkoiset_nappulat;
                siirrot  = mustat_siirrot;
            }
            int indeksi = EtsiIndeksi(siirrettavanNappulanPaikka, p);

            // jos indeksi on -1, jotain on pielessä
            if (indeksi == -1)
            {
                return;
            }
            Pelinappula.Pelinappula liikutettava = t[indeksi];

            if (!OnkoPaikkaValidi(p[indeksi], uusiPaikka, suunta, p, toinen_p))
            {
                return;
            }

            SyoJaLiiku(siirrettavanNappulanPaikka, uusiPaikka, p, toinen_p, t, toinen_t, siirrot);
        }
Ejemplo n.º 6
0
        /// <summary>
        /// Vaihtaa nappulan väriä, jos sen saa valita ja muuttaa, mikä nappula on siirrettävänä
        /// </summary>
        /// <param name="mahdPaikka">Paikka, johon nappula olisi tarkoitus siirtää</param>
        /// <param name="paikat">Taulukko, jossa siirrettävän nappulan pitäisi olla</param>
        /// <param name="nappulat">Taulukko, jossa nappulan pitäisi olla</param>
        /// <param name="perus">Nappulan perusväri</param>
        /// <param name="valittu">Nappulan väri, kun se on valittu</param>
        private void VaihdaVariJaSiirrettava(Point mahdPaikka, Point[] paikat, Pelinappula.Pelinappula[] nappulat, SolidColorBrush perus, SolidColorBrush valittu)
        {
            int i = EtsiIndeksi(mahdPaikka, paikat);

            if (i != -1)
            {
                siirrettavanNappulanPaikka = mahdPaikka;
                // jos siirrettävä nappula löytyy taulukosta
                if (LoytyykoTaulukosta(siirrettavaNappula, nappulat))
                {
                    Pelinappula.Pelinappula.SetVari(siirrettavaNappula, perus);
                }
                Pelinappula.Pelinappula.SetVari(nappulat[i], valittu);
                siirrettavaNappula = nappulat[i]; // täällä vasta päivittyy nappula
            }
        }
Ejemplo n.º 7
0
        /// <summary>
        /// Nappuloiden luonti (mustat ja valkoiset) ja arvotaan aloittaja
        /// </summary>
        public void LuoNappulat()
        {
            // ylänappulat
            int i = 0;

            for (int riv = 0; riv < 2; riv++)
            {
                for (int sar = 0; sar < kokoAlue / 2; sar++)
                {
                    Pelinappula.Pelinappula nappula = new Pelinappula.Pelinappula();
                    if (ylaPelaajanVari == null)
                    {
                        ylaPelaajanVari = Brushes.Black;
                    }
                    Pelinappula.Pelinappula.SetVari(nappula, ylaPelaajanVari);
                    mustat_nappulat[i] = nappula;
                    gridi.Children.Add(nappula);
                    Grid.SetColumn(nappula, sar);
                    Grid.SetRow(nappula, riv);
                    m_paikat[i] = new Point(sar, riv);
                    i++;
                }
            }
            i = 0;
            for (int riv = (kokoAlue / 2 - 2); riv < kokoAlue / 2; riv++)
            {
                for (int sar = 0; sar < kokoAlue / 2; sar++)
                {
                    Pelinappula.Pelinappula nappula = new Pelinappula.Pelinappula();
                    if (alaPelaajanVari == null)
                    {
                        alaPelaajanVari = Brushes.White;
                    }
                    Pelinappula.Pelinappula.SetVari(nappula, alaPelaajanVari);
                    valkoiset_nappulat[i] = nappula;
                    gridi.Children.Add(nappula);
                    Grid.SetColumn(nappula, sar);
                    Grid.SetRow(nappula, riv);
                    v_paikat[i] = new Point(sar, riv);
                    i++;
                }
            }
            // aloittajan arvonta
            Random rand = new Random();

            vuoro = rand.Next(0, 2);
        }
Ejemplo n.º 8
0
 /// <summary>
 /// Vaihdetaan voittaneen nappulan väri
 /// </summary>
 /// <param name="nappula">Minkä nappulan väri vaihdetaan</param>
 private void IlmoitaVoittaja(Pelinappula.Pelinappula nappula)
 {
     audio.Play();
     Pelinappula.Pelinappula.SetVari(nappula, Brushes.SkyBlue);
     vuoro = 2;
 }