Læringsmål:
- Store programmer
Pensum:
I denne oppgaven er det nesten utallige måter å lage koden på, og det går nesten å bruke alt vi har vært gjennom i pensum.
Men pensum som kan anbefales å lese på for å få litt større forståelse av store programmer er:
- Chapter 6: MATLAB Programs
Samtlige delkapitler - 10.1 - Anonymous Functions
- 10.2 - Uses of Function Handles
- 10.3 - Variable Numbers of Arguments
- 10.4 - Nested Functions
a)
Spillet Sudoku handler om å fylle 9 rader, kolonner og kvadrater med alle heltall fra og med 1 til og med 9.
8 | ||||||||
9 | ||||||||
1 | ||||||||
2 | 1 | 3 | 5 | |||||
3 | 2 | 4 | 6 | |||||
4 | 5 | 6 | 1 | 2 | 3 | 9 | 8 | 7 |
5 | ||||||||
6 | ||||||||
7 |
Først når alle ni kolonner, rader og kvadrater er ferdig utfylt er spillet ferdig. Man kan bruke tallet 0 for å representere en rute som ikke er fylt med et tall. For eksempel mangler fortsatt sifrene 4,6,7,8,9 (i kolonnene 2-6) i raden under.
2 | 0 | 0 | 0 | 0 | 0 | 1 | 3 | 5 |
---|
Sudoku i Matlab skal implementeres. Du bestemmer selv hvordan løsningen bygges opp, men følgende krav skal oppfylles:
Brukeren skal kunne skrive inn et tall i en valgfri celle. Dersom tallet ikke er gyldig, dvs ikke mellom 1 og 9, skal en feilmelding skrives ut.
Brukeren skal ikke kunne fylle inn et tall som allerede finnes i den samme raden, kolonnen eller kvadratet.
- Brukeren skal kunne slette et tall fra en celle.
Hver gang brukeren fyller inn eller sletter et tall skal det nye brettet skrives ut på en fin måte. Et eksempel kan være som vist under (tallene over og ved siden av brettet angir her henholdsvis kolonne- og radnummer).
Velkommen til Mis Sudoku 1. Start et nytt spill 2. Lagre spill til fil 3. Last spill fra fil 4. Fortsett å spille 5. Spill tilfeldig brett 6. Løs gjeldende brett 0. Avslutt Velg et tall fra menyen: 1 1 2 3 4 5 6 7 8 9 --------------------------- | | | | 1 | | | | 2 | | | | 3 --------------------------- | | | | 4 | | | | 5 | | | | 6 --------------------------- | | | | 7 | | | | 8 | | | | 9 --------------------------- Vil du avslutte?[Y/N] Skriv "endre" for å forandre plassering
- Brukeren skal kunne laste inn et brett fra en tekstfil.
- Et halvutfylt brett skal kunne lagres til fil, slik at man kan fullføre det senere.
- Spillet skal skrive ut en hyggelig gratulasjonsmelding dersom man har klart brettet.
Alt skal utføres gjennom et brukervennlig grensesnitt. Det vil si at brukeren ikke skal trenge å kalle på funksjonene selv, men at alt gjøres via input eller ved å lese fra/skrive til fil.
Spillet må ha en meny.
- (Frivillig) Implementer slik at brukeren kan be om å spille et halvutfylt brett, med forskjellige vanskelighetsgrader.
(Frivillig) Implementer en Sudoku-løser, som hjelper brukeren å fylle ut brettet.
Velkommen til Mis Sudoku 1. Start et nytt spill 2. Lagre spill til fil 3. Last spill fra fil 4. Fortsett å spille 5. Spill tilfeldig brett 6. Løs gjeldende brett 0. Avslutt Velg et tall fra menyen: 5 1. Enkel 2. Middels 3. Vanskelig 4. Hjerterå Hvilken vanskelighetsgrad? 3 --------------------------- | 5 3 4| 8| 9 2| | 2| 1 | 3 4 | | 1 9 8| 4 2| 5 1| --------------------------- | 9| 7 | | | 2 6| 5 3| 9 | | 7 | 9 | 8 6| --------------------------- | | 5 | 2 8 4| | 8 7| 4 1 | 5| | | 8 6| 1 7 | --------------------------- Vil du avslutte?[Y/N] Skriv "endre" for å forandre plassering