I har 5 dage (hele anden uge) til at lave følgende aflevering - den virker som en stopprøve, hvilket betyder at hvis I ikke aflevere til tiden og med en aflevering af en standart som er forventet, tager vi en samtale og der skal laves en genaflevering. I værste fald bliver man meldt at H1. Husk det er anden uge på forløbet, så forventningerne er ikke høje!

Til opgaven skal I bruge følgende GitHub Repository som I for udleveret af jeres underviser - https://github.com/Mercantech/Banko

Lav et program til at få en fordel i et spil banko - banko plader laves på følgende hjemmeside →

image.png

https://mercantech.github.io/Banko/

Flere plader giver større chance for at vinde i et spil banko - på hjemmesiden kan vi lave så mange plader som vi vil. Det er dog svært at holde styr på flere plader - derfor skal vores program give os en fordel i at vi kan holde øje med så mange plader som programmet kan håndtere.

Vi skal holde styr på hvornår vi har en plade med 1 række, 2 rækker og fuld plade. Der kan hurtigt komme problemer med vores kode, i forhold til at holde styr på de forskellige plader og dens rækker.

Derudover skal vi få lavet en metode til at få pladerne ind i vores program og holde styr på deres ID som blev skrevet ind på hjemmesiden.

Her ser vi pladen for “Banko” med stort B. Hvis man skriver “Banko” ind i feltet, er det altid denne plade som kommer! Derfor skal vi finde en måde at gemme strengen “Banko” sammen med pladen som man ser på billedet →

Hvis pladen her for banko, fx med tallene 12, 31, 40, 61 og 72, skal I kunne finde ud af hvad pladen som har banko hedder.

image.png

Bankopladerne følger reglerne her:

  1. Der benyttes 15 forskellige tal mellem 1 og 90.
  2. Hver plade har 3 rækker med hver 9 kolonner.
  3. Tallene fordeles således at der er mindst ét tal i hver kolonne og præcis 5 i hver række.
  4. Første kolonne indeholder tallene fra 1 t.o.m. 9, anden kolonne 10-19, tredje 20-29 osv.; 9. kolonne indeholder tallene fra 80 t.o.m. 90.
  5. I hver kolonne placeres tallene i stigende orden ovenfra og ned.

Dette kan måske hjælpe til at lave jeres algoritme. Vi spiller på 1. Række, 2. Række og fuld plade!

Aflevering - Video

Som minimum forventer jeg at man laver et program som kan tjekke 2 manuelt indtastede plader og kende forskelle på hvilke rækker der er fyldt og på hvilken plade det er.

Du skal aflevere en video, videoen skal indeholde: (Max 7 minutter video)

  1. Vise hvordan man for en ny plade ind i systemet
  2. Forklare hvordan i holder styr på jeres nøglerne (dem man skriver ind på hjemmesiden)
  3. Vise hvordan i holder styr på pladerne i jeres system og ser om der er banko på 1. række, 2 rækker og fuld plade.

Upload den på teams helst som en fil - ikke et link!

Aflevering - Fremlæggelse

UC.png

Hjælp til at bygge datamodel op - Hints til opgaven

<aside> ☝🏼

Den her sektion er kun efter man selv har prøvet eller føler sig lidt fortabt! Man må altså ikke bruge den inden man har brugt 25% af tiden på opgaven!

</aside>

Selenium til Banko

<aside> ☝🏼

Dette trin er først til når I har en fungerende version som virker på 5 hard coded plader!

</aside>

Banko handler om at generere og holde styr på så mange bankoplader som muligt fra en bestemt hjemmeside. Selenium kan hjælpe ved at:

  1. Automatisere generering af plader:
  2. Udtrække data fra pladerne:
  3. Gem ID'er og data:
  4. Automatisk verificering:

Eksempel på Selenium i C#

Her er et simplificeret eksempel på, hvordan du kan bruge Selenium til denne opgave:

using OpenQA.Selenium;
using OpenQA.Selenium.Chrome;

class Program
{
    static void Main(string[] args)
    {
        // Start browseren
        IWebDriver driver = new ChromeDriver();

        // Gå til hjemmesiden
        driver.Navigate().GoToUrl("<https://mercantech.github.io/Banko/>");

        // Find og klik på knappen for at generere en plade
        IWebElement generateButton = driver.FindElement(By.Id("generateButtonId")); // Brug det faktiske ID
        generateButton.Click();

        // Vent på, at pladen bliver genereret
        System.Threading.Thread.Sleep(2000); // En simpel måde at vente, brug evt. WebDriverWait for bedre kontrol

        // Hent pladedata (fx rækker og ID)
        IWebElement plateElement = driver.FindElement(By.CssSelector(".plateClass")); // Brug det faktiske CSS-selector
        string plateData = plateElement.Text;

        Console.WriteLine($"Plade data: {plateData}");

        // Luk browseren
        driver.Quit();
    }
}

Anbefalinger for din opgave

  1. Strukturér din kode:
  2. Optimer browserautomation:
  3. Håndtér store mængder plader:

Bygge en UI til jeres program

Som standart er jeres program kun rettet mod konsollen, dog hvis I når at blive hurtigt færdig kan I med fordel bygge en UI op jeres projekt. Det kan være I allerede har erfaring med et UI-framework inden for C#, såsom WPF, ellers vil jeg anbefale Blazor, da det er den vi skal bruge til jeres H1 projekt.

UC.png