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