Inlämning – Schackbrädet

Detta är en inlämningsuppgift tänkt att användas inom kursen Programmering 2 för gymnasiet. Förkunskaper är arv, polymorfism och Windows Forms. Alla dessa förkunskaper finnas att hämta i andra artiklar på csharpskolan. Inlämningsuppgiften ingår i ett större upplägg kring kursen Programmering 2.

Bakgrund

I denna uppgift ska du få skriva en egen klass baserad på en befintlig klass i .NET. Uppgiften går ut på att skapa en grafisk kontroll som ser ut som ett schackbräde. Vi ska använda och bygga vidare på klasser från Windows Forms. Först följer ett kort exempel, sedan en beskrivning på själva uppgiften.

Det finns redan hjälpmedel inbyggt i Visual Studio som hjälper dig skapa en egen kontroll till Windows Forms. Alternativet heter ”Add->UserControl”. Enklast är att högerklicka på ditt projekt (ett Windows Forms projekt såklart). Se bild

Vi får då en kodfil som automatisk har ett arv ifrån klassen UserControl. Bygger vi sedan vårt projekt (eller kör det) så kommer kontrollen att automatiskt även dyka upp i vår ”Toolbox”. På så vis kan vi enkelt lägga ut kontrollen i vårt formulär och ställa in egenskaper.

I vårt exempel har vi satt egenskapen Dock = ”Fill”. Det gör så att vår kontroll automatiskt fyller hela formuläret och blir så stor som formuläret tillåter.

Vi använder sedan polymorfism för att ändra på hur vår kontroll ritar ut sig. Genom att göra en override på metoden OnPaint(…) så kan vi styra uppritningen. UserControl är den klass som är tänkt att användas om man ska skapa egna kontroller. Men vill man bygga kontroller som i grunden liknar t.ex. Button mer så gör man nog bäst i att ärva från klassen Button. Men åter till vårt exempel.

MyUserControl.cs
using System.Drawing;
using System.Windows.Forms;

namespace CustomControl
{
    public partial class MyUserControl : UserControl
    {
        public MyUserControl()
        {
            InitializeComponent();
        }

        protected override void OnPaint(PaintEventArgs e)
        {
            base.OnPaint(e);

            Brush b = new SolidBrush(Color.Yellow);
            e.Graphics.FillRectangle(b, ClientRectangle);
        }
    }
}

Resultatet av vårt exempel ser ut såhär:

Uppgift

Okej, dags för uppgiften. Skapa utifrån exemplet ett 8×8 svart-vitt schackbräde. Skapa sedan två egenskaper Columns (standard=8) och Rows (standard=8) som styr hur många rader och kolumner det kommer att bli på brädet.

/Lycka till

Scroll to top