-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge branch 'master' of github.com:Na-na13/Minesweeper
- Loading branch information
Showing
1 changed file
with
3 additions
and
3 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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. |