예제 #1
0
 /// <summary>
 /// Kopierer celle til cellen.
 /// </summary>
 /// <param name="celle">Cellen som skal kopieres.</param>
 public Celle(Celle celle)
 {
     this.n               = celle.n;
     this.muligeVerdier   = celle.muligeVerdier;
     this.verdi           = celle.verdi;
     this.tillatteVerdier = celle.tillatteVerdier;
     this.rad             = celle.rad;
     this.kol             = celle.kol;
     this.blokk           = celle.blokk;
     this.celleIBlokk     = celle.celleIBlokk;
     this.låst            = celle.låst;
 }
예제 #2
0
 /// <summary>
 /// true hvis rad, kol og verdi er like, eller hvis begge cellene er null.
 /// </summary>
 /// <param name="celle">Vilkårlig Celle.</param>
 /// <returns>true hvis rad, kol og verdi er like, eller hvis begge cellene er null.</returns>
 public bool Equals(Celle celle)
 {
     if (this is null && celle is null)
     {
         return(true);
     }
     if (this is null || celle is null)
     {
         return(false);
     }
     if (this.n != celle.n || this.rad != celle.rad || this.kol != celle.kol || this.verdi != celle.verdi)
     {
         return(false);
     }
     return(true);
 }
예제 #3
0
        /// <summary>
        /// Lager en kopi fra celle, av verdi, tillatteVerdier og låst. Andre elementer, som rad og kol, blir ikke kopiert.
        /// </summary>
        /// <param name="celle">Cellen som skal kopieres.</param>
        public void Kopi(Celle celle)
        {
            if (this.n != celle.n)
            {
                throw new Exception("Feil i Celle.Kopi: n ikke lik.");
            }
            else if (this.rad != celle.rad)
            {
                throw new Exception("Feil i Celle.Kopi: rad ikke lik.");
            }
            else if (this.kol != celle.kol)
            {
                throw new Exception("Feil i Celle.Kopi: kol ikke lik.");
            }
            else if (this.blokk != celle.blokk)
            {
                throw new Exception("Feil i Celle.Kopi: blokk ikke lik.");
            }

            this.verdi           = celle.verdi;
            this.tillatteVerdier = celle.tillatteVerdier;
            this.låst            = celle.låst;
        }
예제 #4
0
        private void TastTastet(Object sender, KeyPressEventArgs tast)
        {
            if ('\b' == tast.KeyChar)
            {
                return;
            }
            int rad = dg.CurrentCell.RowIndex;
            int kol = dg.CurrentCell.ColumnIndex;

            if (brett[rad, kol].låst)
            {
                return;
            }
            if (kladdModus)
            {
                if (brett[rad, kol].verdi == ' ')
                {
                    LeggTegnTilKladd(ref brett.kladd.brett[rad, kol], tast.KeyChar);
                    dg.CurrentCell.Value = brett.kladd.brett[rad, kol];
                }
            }
            else
            {
                if (Celle.MuligeVerdier(n).Contains(tast.KeyChar.ToString().ToUpperInvariant()))
                {
                    char verdi = tast.KeyChar.ToString().ToUpperInvariant()[0];
                    if (brett[rad, kol].verdi == verdi)
                    {
                        return;
                    }
                    if (lettModus)
                    {
                        if (brett[rad, kol].verdi == ' ')
                        {
                            if (!brett[rad, kol].tillatteVerdier.Contains(verdi))
                            {
                                return;
                            }
                        }
                        else
                        {
                            char verdiGammel = brett[rad, kol].verdi;
                            brett.SettVerdi(rad, kol, ' ');
                            if (!brett[rad, kol].tillatteVerdier.Contains(verdi))
                            {
                                brett.SettVerdi(rad, kol, verdiGammel);
                                return;
                            }
                        }
                    }
                    brett.SettVerdi(rad, kol, verdi);
                    brett.kladd.brett[rad, kol] = "";
                    dg.CurrentCell.Value        = verdi;
                    if (visKladdModus)
                    {
                        dg.CurrentCell.Style.Font = new System.Drawing.Font("", størrelse.størrelseFont);
                    }

                    if (brett.gjenværendeCeller == 0)
                    {
                        if (!brett.løst && !brett.feil)
                        {
                            brett.feil = !brett.SjekkBrettLøst();
                        }
                        if (!brett.feil)
                        {
                            labelTekst.Text = "Gratulerer!\nBrett løst.";
                            MessageBox.Show("Gratulerer!\nBrett løst.");
                        }
                        else
                        {
                            MessageBox.Show("Det er dessverre en feil på brettet :(");
                        }
                    }
                    else
                    {
                        FjernTegnFraKladd(rad, kol, verdi);
                    }
                }
            }
        }