/// <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); }
/// <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); }