...
Forslag til visuell representasjon av brett:
Code Block |
---|
I denne oppgaven skal du implementere spillet sudoku. Du vil lage en klasse Sudoku som innkapsler brettet og har metoder for å fylle det ut og sjekke gyldigheten til de forskjellige områdene. Du vil også implementere SudokuUI som lar en spille tekstbasert sudoku.Del 1 - Representasjon av brettTilstanden Sudoku -objektet holder på består av et 9x9-brett. Hver rute kan være tom, eller ha et tall 1-9 i seg. Det må også holdes styr på om tallet i ruten er en del av problemet eller om den kan fylles ut / endres av spilleren.KlassenSudoku må ha følgende metoder:void problemSetCell(int x, int y, int value):
Setter verdien til rute i x,y til value og markerer ruten som en del av problemet.boolean playerSetCell(int x, int y, int value):
Hvis ruten i x,y er en del av problemet, returner false. Ellers set ruten til value og returner true.int getCell(int x, int y):
Returner verdien til ruten i x,y.boolean isCellPartOfProblem(int x, int y):
Returner om ruten i x,y er markert som del av problemet.Del 2 - Logikk for spillets gangUtvid Sudoku-klassen med metodene under:
boolean isColumnLegal(int col):
Returnerer false om et tall opptrer (minst) to ganger i kolonne col. Returnerer true ellers (selv om det er tome ruter i kollonen). col skal tilsvare x-verien til rutene.boolean isRowLegal(int row):
Returnerer false om et tall opptrer (minst) to ganger i rad row. Returnerer true ellers (selv om det er tome ruter i raden). row skal tilsvare y-verien til rutene.boolean isRegionLegal(int rx, int ry):
Returnerer false om et tall opptrer (minst) to ganger i 3x3 område i rx,ry. Returnerer true ellers (selv om det er tome ruter i området). rx skal tilsvare floor(x / 3) til rutene.Del 3 - Fullt fungerende spill, med tekstlig interaksjonLag en SukokuProgram-klasse som lar en spille på konsollen. Programmet skal gjøre følgende:Ta inn en beskrivelse av et sudoku-problem. Formatet og eksempler finner du lenger ned på siden.Vise brettet. Forslag til representasjon finner du lenger nede på siden.La brukeren sette tall i ruter som ikke er en del av problemet, for å så gå tilbake til punkt 2.Forslag til visuell representasjon av brett: +-------------+-------------+-------------+
1 | . (1) 2 | . . . | . . . |
2 | . . . | . . . | . . . |
3 | . . . | . . . | . . . |
+-------------+-------------+-------------+
4 | . 1 . | . . . |? . . . ?|
5 | . . . | . . . |? 2 2 . ?|
6 | . . . | . . . |? . . . ?|
+-------------+-------------+-------------+
??? 7 | 2 . . | . 2 . | . . . |
8 | . . . | . . . | . . . |
9 | . . . | . . . | . . . |
+-------------+-------------+-------------+
a b c d e f g h i
?
? Forklaring:(1): Tall i parenteser: del av problemet1: Tall uten parenteser: satt av spilleren.: Punktum: Tom ruteSpørsmålstegn: Ulovlig kollone, rad eller område. |
...