Beispiel #1
0
 /// <summary>
 /// Luo nappulat gridiin
 /// </summary>
 private void LuoNappulat()
 {
     for (int i = 0; i < ruudukko.RowDefinitions.Count; i++)
     {
         for (int j = 0; j < ruudukko.ColumnDefinitions.Count; j++)
         {
             Nappula.NappulaClass nappula = new Nappula.NappulaClass();
             Grid.SetRow(nappula, i);
             nappula.rivi = i;
             Grid.SetColumn(nappula, j);
             nappula.sarake      = j;
             nappula.nappulaFill = valkoinen;
             ruudukko.Children.Add(nappula);
         }
     }
 }
Beispiel #2
0
 /// <summary>
 /// Tarkistaa, onko nappula päässyt läpi
 /// </summary>
 private void TarkistaVoittaja()
 {
     foreach (var UIElement in ruudukko.Children)
     {
         Nappula.NappulaClass n = (Nappula.NappulaClass)UIElement;
         if (n.pelaaja.Equals("pelaaja1") && n.rivi == koko - 1)
         {
             n.nappulaFill = Brushes.Green;
             vuoro         = "loppu";
         }
         else if (n.pelaaja.Equals("pelaaja2") && n.rivi == 0)
         {
             n.nappulaFill = Brushes.Green;
             vuoro         = "loppu";
         }
     }
 }
Beispiel #3
0
        /// <summary>
        /// Aloittaa uuden pelin
        /// </summary>
        public void UusiPeli()
        {
            ruudukko.Children.Clear();
            vuoro = "pelaaja2";
            LuoNappulat();
            for (int i = 0; i < ruudukko.ColumnDefinitions.Count * 2; i++)
            {
                Nappula.NappulaClass nappula = (Nappula.NappulaClass)ruudukko.Children[i];
                nappula.pelaaja     = "pelaaja1";
                nappula.nappulaFill = musta;
            }

            for (int i = ruudukko.Children.Count - 1; i > ruudukko.Children.Count - 1 - ruudukko.ColumnDefinitions.Count * 2; i--)
            {
                Nappula.NappulaClass nappula = (Nappula.NappulaClass)ruudukko.Children[i];
                nappula.pelaaja     = "pelaaja2";
                nappula.nappulaFill = punainen;
            }
        }
Beispiel #4
0
        void System.Windows.Markup.IComponentConnector.Connect(int connectionId, object target)
        {
            switch (connectionId)
            {
            case 1:
                this.ikkuna = ((Nappula.NappulaClass)(target));
                return;

            case 2:
                this.circularBorder = ((System.Windows.Controls.Border)(target));
                return;

            case 3:
                this.ellipsi = ((System.Windows.Shapes.Ellipse)(target));

            #line 9 "..\..\Nappula.xaml"
                this.ellipsi.MouseUp += new System.Windows.Input.MouseButtonEventHandler(this.ellipsi_MouseUp);

            #line default
            #line hidden
                return;
            }
            this._contentLoaded = true;
        }
Beispiel #5
0
        /// <summary>
        /// Ensimmäisenä klikattu nappula otetaan temp-muuttujaan, toisena klikattua
        /// verrataan temp nappulan pelaajaan ja sijaintiin, jonka perusteella
        /// määritetään siirron laillisuus
        /// </summary>
        /// <param name="sender">mistä tapahtumaan tullaan</param>
        /// <param name="e">tapahtuman argumentit</param>
        private void nappulaClick(object sender, RoutedEventArgs e)
        {
            // lokaali temp-nappula
            Nappula.NappulaClass n = (Nappula.NappulaClass)e.OriginalSource;

            // katsotaan onko tempnappulassa mitään ja kuuluuko klikattu nappula kummallekaan pelaajalle
            if (tempNappula == null && n.pelaaja.Equals(vuoro))
            {
                tempNappula     = n;
                n.nappulaStroke = Brushes.Yellow;
                //this.Background = Brushes.Blue;
            }
            else if (tempNappula != null)
            {
                // hylätään siirto jos kyseessä on väärä vuoro
                if (!tempNappula.pelaaja.Equals(vuoro))
                {
                    HylkaaSiirto();
                    return;
                }

                // nappula, johon globaalia tempnappulaa verrataan
                Nappula.NappulaClass temp2 = (Nappula.NappulaClass)e.OriginalSource;

                // laillisia siirtoja ovat vain suoraan tai yksi viistoon, muuten hylätään
                if (!(temp2.sarake == tempNappula.sarake || temp2.sarake == tempNappula.sarake - 1 || temp2.sarake == tempNappula.sarake + 1))
                {
                    HylkaaSiirto();
                    return;
                }

                // punaisilla siirto pitää olla aina yksi ylöspäin
                if (vuoro.Equals("pelaaja2") && temp2.rivi != tempNappula.rivi - 1)
                {
                    HylkaaSiirto();
                    return;
                }

                // mustilla siirto pitää olla aina yksi alaspäin
                if (vuoro.Equals("pelaaja1") && temp2.rivi != tempNappula.rivi + 1)
                {
                    HylkaaSiirto();
                    return;
                }

                // voi liikuttaa suoraan vain jos edessä on tyhjä nappula
                if (temp2.sarake == tempNappula.sarake && !temp2.pelaaja.Equals(""))
                {
                    HylkaaSiirto();
                    return;
                }

                // SYÖNTI

                // tarkistetaan ettei kumpikaan ole tyhjä nappula
                if (!temp2.pelaaja.Equals("") && !tempNappula.pelaaja.Equals(""))
                {
                    temp2.pelaaja           = tempNappula.pelaaja;
                    temp2.nappulaFill       = tempNappula.nappulaFill;
                    tempNappula.pelaaja     = "";
                    tempNappula.nappulaFill = valkoinen;
                    HylkaaSiirto();
                    VaihdaVuoroa();
                    return;
                }

                // ETENEMINEN

                // kolmas nappula tietojen vaihtamista varten
                Nappula.NappulaClass kopio = new Nappula.NappulaClass();
                kopio.pelaaja     = tempNappula.pelaaja;
                kopio.nappulaFill = tempNappula.nappulaFill;

                // jos kaikki menee ok niin vaihdetaan nappuloiden väriä ja omistajaa
                tempNappula.pelaaja     = temp2.pelaaja;
                tempNappula.nappulaFill = temp2.nappulaFill;
                temp2.pelaaja           = kopio.pelaaja;
                temp2.nappulaFill       = kopio.nappulaFill;

                // onnistuneen siirron jälkeen asetetaan tempnappula taas nulliksi ja vaihdetaan vuoroa
                HylkaaSiirto();
                VaihdaVuoroa();
            }
        }
Beispiel #6
0
 /// <summary>
 /// Hylkää siirron, mikäli se on laiton
 /// </summary>
 private void HylkaaSiirto()
 {
     tempNappula.nappulaStroke = Brushes.Transparent;
     tempNappula = null;
     //this.Background = Brushes.Pink;
 }