コード例 #1
0
 /// <summary>
 /// Siirtää nappulan paikasta toiseen ja päivittää kyseisten paikkojen OnkoTyhja -arvon
 /// </summary>
 /// <param name="sender">Paikka joka valittu, eli jonne nappula siirtyy</param>
 private void paikka_Valinta(Paikka sender)
 {
     if (lautaPeli.paikkaValinta(valittuNappula, sender))
     {
         vuoronvaihto();
     }
 }
コード例 #2
0
        /// <summary>
        /// Siirretään haluttu nappula haluttuun paikkaan, jos mahdollista
        /// </summary>
        /// <param name="valittuPaikka">paikka jonne siirretään</param>
        /// <param name="valittuNappula">nappula joka siirretään</param>
        /// <returns>true jos siirto onnistui, false jos ei onnistunut tai jos peli päättyi</returns>
        protected bool siirra(Paikka valittuPaikka, Nappula valittuNappula)
        {
            Grid   control    = (Grid)valittuNappula.Parent;
            Paikka alkuPaikka = valittuNappula.annaPaikka();

            control.Children.Remove(valittuNappula); //Poistetaan nappula vanhalta paikaltaan
            alkuPaikka.OnkoTyhja = true;
            if (!valittuPaikka.OnkoTyhja)            //Jos valitussa paikassa on jo nappula niin se poistetaan
            {
                valittuPaikka.annaNappula().Syoty = true;
                valittuPaikka.poistaNappula();
            }
            valittuPaikka.lisaaNappula(valittuNappula);
            alkuPaikka.poistaNappula();;
            if (!onkoJaljella()) //jos kaikki vastustajan nappulat syöty
            {
                Paaty();
                return(false);
            }
            if (onkoPaadyssa(valittuNappula)) //jos nappula saapui pelilaudan päätyyn
            {
                Paaty();
                return(false); // Jos voittoehdot täyttyvät
            }
            return(true);
        }
コード例 #3
0
        /// <summary>
        /// Selvittää onko tehtävä siirto sääntöjen mukainen
        /// </summary>
        /// <param name="mista">mistä siirretään</param>
        /// <param name="mihin">minne siirrettään</param>
        /// <returns>true jos saa siirtää, false jos ei saa siirtää</returns>
        public virtual bool onkoLaillinen(Nappula valittuNappula, Paikka mihin)
        {
            Paikka mista = valittuNappula.annaPaikka();

            string alku  = mista.Name;
            string loppu = mihin.Name;

            kirjainNro1 = char.ToUpper(alku[0]) - 65; // 'A' on 65 joten siksi -65; ei varsinaisesti väliä
            kirjainNro2 = char.ToUpper(loppu[0]) - 65;

            numero1 = Int32.Parse(alku.Substring(1, alku.Length - 1));
            numero2 = Int32.Parse(loppu.Substring(1, loppu.Length - 1));

            return(true);
        }
コード例 #4
0
 /// <summary>
 /// Tarkistaa onko haluttu siirto sääntöjen mukainen
 /// </summary>
 /// <param name="valittuNappula">siirrettävä nappula</param>
 /// <param name="mihin">ruutu jonne halutaan siirtää</param>
 /// <returns>true jos laillinen, false jos ei ole</returns>
 public override bool onkoLaillinen(Nappula valittuNappula, Paikka mihin)
 {
     base.onkoLaillinen(valittuNappula, mihin);
     if (kirjainNro1 - kirjainNro2 > 1 || kirjainNro1 - kirjainNro2 < -1)
     {
         return(false);                                                                 //false jos sivusiirto enemmän kuin yksi
     }
     if (!mihin.OnkoTyhja && kirjainNro1 == kirjainNro2)
     {
         return(false);                                                //estää syömisen suoraan edestä
     }
     if (numero1 - numero2 != pelaajanVuoro)
     {
         return(false);                                    //estetään väärään suuntaan liikkuminen
     }
     return(true);
 }
コード例 #5
0
 /// <summary>
 /// Jos mahdollista, niin siirtää nappulan valittuun paikkaan
 /// </summary>
 /// <param name="valittuNappula">nappula joka siirretään</param>
 /// <param name="valittu">paikka jonne siirretään</param>
 /// <returns>onnistuiko siirto vai ei (true, false)</returns>
 public bool paikkaValinta(Nappula valittuNappula, Paikka valittu)
 {
     this.valittuPaikka = valittu;
     if (valittuNappula == null || !valittuNappula.Valittu)
     {
         return(false);                                                   //Jos ei ole nappulaa valittuna, ei tehdä mitään
     }
     if (!valittuPaikka.OnkoTyhja && !onkoVastustaja(valittuPaikka))
     {
         return(false);                                                            //Jos valitussa paikassa oma nappula, ei tehdä mitään
     }
     if (onkoLaillinen(valittuNappula, valittuPaikka))
     {
         return(siirra(valittuPaikka, valittuNappula));
     }
     valittuPaikka.virheellinen(); return(false);
 }
コード例 #6
0
        /// <summary>
        /// Katsoo onko jollakin pelipaikalla oleva nappula vastustajan, eli sen pelaajan, jonka vuoro ei ole tällä hetkellä
        /// </summary>
        /// <param name="sender">Paikka jonka nappula tarkistetaan</param>
        /// <returns>true jos vasustajan, false jos ei ole</returns>
        public bool onkoVastustaja(Paikka sender)
        {
            Nappula paikalla = sender.annaNappula();

            if (paikalla == null)
            {
                return(false);
            }
            if (paikalla.ympyra.Fill == nappuloidenVari1 && pelaajanVuoro == 1)
            {
                return(true);
            }
            if (paikalla.ympyra.Fill == nappuloidenVari2 && pelaajanVuoro == -1)
            {
                return(true);
            }
            return(false);
        }
コード例 #7
0
        /// <summary>
        /// Luo rivin paikkoja
        /// </summary>
        /// <param name="monesko">monesko rivi luodaan</param>
        /// <param name="ensimmainenVari">joka toisen paikan väri</param>
        /// <param name="toinenVari">joka toisen paikan väri</param>
        public void luoRivi(int monesko, Brush ensimmainenVari, Brush toinenVari)
        {
            Brush vari;

            for (int i = 0; i < Koko; i++)
            {
                if (i % 2 == 0)
                {
                    vari = ensimmainenVari;
                }
                else
                {
                    vari = toinenVari;
                }
                Paikka uusi = new Paikka(i, monesko - 1, vari);
                uusi.PaikkaValittu    += paikka_Valinta;
                paikat[i, monesko - 1] = uusi;
                lautaPeli.asetaPaikat(paikat);
                pelialue.Children.Add(uusi);
            }
        }