T-106.1210 Ohjelmoinnin peruskurssi, osa 1

Kierros 10, tehtävä 3

Taso ja pistearvo:C 90
Lyhyesti:Täydennetään annettua sudokupeliä siirtojen laillisuuden tarkastuksella ja käynnistysmodulilla.
Mitä opitaan:taulukoiden käyttöä, ongelmien ratkaisemista sisäkkäisillä silmukoilla, komentoriviparametrien käyttöä
Toteuttamisen vapaus:Kohtalainen. Toimintatapaa ei ole määritelty pilkuntarkasti, joskin ratkaistavaksi annettu ongelma on laajuudeltaan sen verran pieni ettei keskenään täysin erilaisia ratkaisutapoja monta ole.
Realistisuus:Korkea. Tässä täydennetään olemassaolevaa ohjelmaa uusilla ominaisuuksilla, mikä on tyypillinen ohjelmoijan tehtävä.
Haastavuus:Haastavahko. Sisäkkäisten silmukoiden käyttö on monelle hankalaa ja taulukotkin tulevat tässä uutena asiana.
Työläys:Keskitasoa. Kirjoitettavaa koodia on vähän, mutta ohjelman ymmärtäminen ja algoritmien saaminen toimintakuntoon vie aikaa. Kannattaa varata nelisen tuntia, ellei varmuuden vuoksi enemmänkin.

Tehtävänanto

Annettu projekti Sudoku on toteutus sudokupelille. Sen luokat kuvaavat sudokupelin lautaa ja ruutuja ja graafinen käyttöliittymäkin on toteutettu. Ohjelmasta kuitenkin puuttuu käynnistysmoduuli eikä se osaa tarkastaa pelaajan tekemien siirtojen laillisuutta sudokun sääntöihin nojaten. Tehtävänne on korjata nämä kaksi puutetta. Tarkempi spesifikaatio löytyy tuttuun tapaan dokumenteista.

Palauttaminen

Palauttakaa muokatut tiedostot sudoku.py ja chart.py Gobliniin.

Ohjeita ja vinkkejä

Bonustehtävä: pelin parantelu

(Tämä bonustehtävä ei ole osa varsinaista tehtävää. Eikä siis anna pisteitä.)

Annettu versio sudokupelistä on armoton: yksi virhe ja peli loppuu siihen. Annettu peliversio onkin toteutettu siltä pohjalta, että siirtojen peruuttaminen pelissä ei ole mahdollista -- kun numero on kerran kirjattu ruutuun, se myös pysyy. Toinen puute pelissä on valmiiden, osin täytettyjen, sudoku-ongelmien puute. Käyttäjän täytyy syöttää kaikki luvut tyhjälle pohjalle GUI:ssa.

Jos nämä ohjelman puutteet ärsyttävät tai haluat muuten vaan hieman haastavampaa ohjelmointiharjoitusta, voit koettaa muokata ohjelmaa siten, että se sallii siirtojen peruutuksen tai osaa antaa ratkaistavaksi valmiiksi määriteltyjä sudokuongelmia tai vaikkapa osaa antaa vinkkejä pelaajalle.

(Bonustehtävän ratkaisua ei pidä palauttaa Gobliniin. Goblin ei ymmärrä sitä eikä bonustehtävästä pisteitä edes ole tarjolla.)