Skip to content

Commit

Permalink
Merge branch 'master' of github.com:Na-na13/Minesweeper
Browse files Browse the repository at this point in the history
  • Loading branch information
Na-na13 committed Jun 4, 2021
2 parents 303a5b6 + 73adb95 commit 4b8881d
Showing 1 changed file with 3 additions and 3 deletions.
6 changes: 3 additions & 3 deletions viikkoraportit/viikko4/raportti4.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
###Viikko 4
### Viikko 4

Kuluneen viikon aikana keskityin yksikkötestaamisen sijaan pelin ratkaisubotin suunnitteluun ja toteutukseen. Botin toiminnan ideana on ensin löytää kaikki varmat miinattomat ruudut sekä varmat miinaruudut. Tämä tapahtuu siten, että etsitään ensin kaikki avatun pelialueen reunimmaiset ruudut eli ns. puskuriruudut avaamattoman ja avatun pelialueen välissä. Tämän jälkeen tarkistetaan jokaisen puskuriruudun avaamattomien naapuriruutujen määrä. Jos tämä määrä vastaa puskuriruudussa olevaa vihjelukua, kaikki puskuriruudun naapuriruudut ovat miinoja. Miinapaikat merkitään ja niiden perusteella pystytään seuraavaksi selvittelemään varmasti miinattomia ruutuja, jotka voidaan avata. Tätä vuorottelua jatketaan, kunnes jäljellä ei tällä kaavalla ole enää yhtään varmaa miinaruutua/miinatonta ruutua. Seuraavaksi suoritetaan peruuttava haku, jonka avulla selvitetään loppujen miinojen sijaintien todennäköisyydet ja avataan ruutu, joka vähiten todennäköisesti on miina. Jos ruutu ei ole miina, katsotaan pystyykö avatun ruudun vihjeen perusteella avaamaan lisää ruutuja/merkkaamaan varmoja miinoja. Muuton avataan seuraavaksi vähiten todennäköinen miinaruutu. Jos pelissä tulee eteen tilanne, jossa miinan paikka on paikka vain arvata, arvaukset käsitellään erikseen.

Olen tähän mennessä saanut koodattua jonkinlaisen pohjan puskuriruutujen etsimiselle sekä niitä vastaavien varmojen miinaruutujen etsimiselle. Päätin toteuttaa tämän yksinkertaisesti vain käymällä silmukassa läpi botin omaa kaksiulotteista taulukkoa kahdella for-silmukalla tarkistaen jokaisen alkion arvon. Jos arvo on välillä 1 .. 8, se on puskuriruutu. Puskuriruutujen naapurit läpikäymällä saa selville varmoja miinaruutuja, esim. jos puskuriruudun arvo on 1 ja sillä on tasan 1 avaamaton naapuriruutu x, on ruudun x oltava miina. Samaan tapaan pitäisi onnistua varmojen miinattomien ruutujen etsiminen, mutta tämä on vielä työn alla.
Olen tähän mennessä saanut koodattua jonkinlaisen pohjan puskuriruutujen etsimiselle sekä niitä vastaavien varmojen miinaruutujen etsimiselle. Päätin toteuttaa tämän yksinkertaisesti vain käymällä silmukassa läpi botin omaa kaksiulotteista taulukkoa kahdella for-silmukalla tarkistaen jokaisen alkion arvon. Jos arvo on välillä 1 .. 8, se on puskuriruutu. Puskuriruutujen naapurit läpikäymällä saa selville varmoja miinaruutuja, esim. jos puskuriruudun arvo on 1 ja sillä on tasan 1 avaamaton naapuriruutu *x*, on ruudun *x* oltava miina. Samaan tapaan pitäisi onnistua varmojen miinattomien ruutujen etsiminen, mutta tämä on vielä työn alla.

Botin syötteiden simulointi osoittautui haastavammaksi kuin ajattelin. Vaikeuksia hahmottamisessa tuottaa se, että pygamen pelisilmukassa botin syötteiden luku tapahtuu myös silmukassa eli ikuisen silmukan sisällä on toinen ikuinen silmukka. Tällä hetkellä ainut näkyvä asia botin toiminnassa pelikentällä on ensimmäisen ruudun avaus. Tämä aloitusruutu on aina sama eli vasen yläkulma. Koodia ei ole muokattu vielä siten, että aloitusruutu ei voisi olla miina tai vain yksi puskuriruutu. Tämä olisi tarkoitus korjata valmiiseen bottiin eli aloitusruudun avaamalla aloitusruutu ei ole miina eikä vähintään sen naapurit oli miinoja.
Botin syötteiden simulointi osoittautui haastavammaksi kuin ajattelin. Vaikeuksia hahmottamisessa tuottaa se, että *pygamen* pelisilmukassa botin syötteiden luku tapahtuu myös silmukassa eli ikuisen silmukan sisällä on toinen ikuinen silmukka. Tällä hetkellä ainut näkyvä asia botin toiminnassa pelikentällä on ensimmäisen ruudun avaus. Tämä aloitusruutu on aina sama eli vasen yläkulma. Koodia ei ole muokattu vielä siten, että aloitusruutu ei voisi olla miina tai vain yksi puskuriruutu. Tämä olisi tarkoitus korjata valmiiseen bottiin siten, että aloitusruutu ei voi olla miina eikä (vähintään) sen naapurit voi olla miinoja.

0 comments on commit 4b8881d

Please sign in to comment.