Ristinolla

Voisiko joku hahmottaa miten ristinolla pelissä voi toteuttaa suorien tarkistuksen? (en tarvitse koodia, vaan sanoilla voi kuvata)

Eli on vaikka 30x30 kentä ja pitäisi etsiä 5 suorat.

Peli vaikuttaa erittäin monimutkaiselta jopa 3x3 kentällä, jos pitäisi vielä toteuttaa tekoälykin.
92140
Äänestä

Muut lukivat myös

Vastaukset 9

Vanhimmat

Tarkoitatko ristinollaa (3x3) ruudukko vai sitä toista peliä missä laitetaan isompaan ruudukkoon rasteja ja pyritään saamaan 5 omaa peräkkäin?

Ratkaisuja on useita. Ristinollan tapauksessa voisit tehdä pelipuun, joka sisältää kaikki mahdollisuudet, muistaakseni pelipuun koko ei ole kovin suuri. Yleisemmässä tapauksessa pelipuun koko kasvaa liian suureksi, jolloin täytyisi käyttää jotain rajoitinta jolla estetään liian suuri kasvu. Siis tällä tavalla voit tarkistaa sekä rivit että varmistaa sen että konetta ei voi voittaa.

Helpompi tapa on 2-ulotteinen 3x3 -taulukko, jossa jokaista ruutua esittää 1 alkio, joka saa arvon 1 silloin kun se on risti ja -1 silloin kun se on nolla. (ristinollasta). Jos rivillä on 3 ristiä, sen summa on 3 ja kolme nollaa summa on -3 jne. Joten tarkistusrutiini yksinkertaisesti laskee rivien, sarakkeiden ja diagonaalien summan. Tyhjää ruutua esittää 0. Samalla kertaa voit kehittää logiikan, joka pyrkii löytämään ja blokkaamaan vastustajan 2 rivin sarjan.

Yleinen 30x30 -ruudukko on hiukan monimutkaisempi tapaus, mutta numerointia kannattaa käyttää. Keksin ainakin kaksi vaihtoehtoa, eli joko käydä 30 x 30-ruudukko järjestelmällisesti läpi riveittäin, sarakkeittain ja diagonaaleittain tai sitten talletetaan potentiaalisten rivien alku ja suunta johonkin listaan, ja poistetaan listalta ne jotka vastustaja on blokannut ja lisätään sinne uudet syntyvät listat. Jälkimmäistä ratkaisua voisi käyttää alkeelliseen päättelyyn.

Toivottavasti näistä ehdotuksista oli apua. Lisää voi löytyä netistä ja ehkä täältäkin tulee lisää vaihtoehtoja.

Äänestä

3x3-ristinolla on oma "mielenkiintoinen" tapauksensa, jota tuskin kuitenkaan kannattaa pohtia tämän enempää...

Suorien (5 merkkiä) tarkistus on erittäin helppo toteuttaa. Ihmiselle haasteita tarjoavan tekoälyn toteuttaminen on paljon vaikeampaa.

Mutta ensinnäkin, 30x30 kenttä on toivottoman ahdas silloin, kun lähdetään tosissaan pelaamaan ristinollaa. Mikään ei ole sen ärsyttävämpää kuin todeta, että tila loppuu -- läiskitään tässä nyt merkkejä sinne ja tänne, että saadaan ruutu täyteen ja uusi peli käyntiin.

Suorien tarkistus tapahtuu siten, että jokaisen ruudukkoon lisätyn merkin jälkeen tarkistetaan ko. ruudusta alkaen ruudut vaaka- ja pystysuuntaan, sekä vielä vinottain aina neljän ruudun etäisyydelle saakka. Jos näistä 33:sta ruudusta löytyy viisi samaa merkkiä peräkkäin, peli on päättynyt. Koko "pelilautaa" on siis aivan turha käydä läpi tässä vaiheessa.

Tekoälyn toteuttamiseksi sen sijaan pelilauta on käytävä läpi ainakin "käytössä olevilta osin" ja jopa moneen kertaan. Homma etenee periaatteessa esim. siten, että tekoäly kokeilee sijoittaa merkkinsä vuorollaan jokaiseen vapaaseen ruutuun, tekee em. suorien tarkistuksen ja jos peli ei ratkennut, toistaa saman vastapuolen pelimerkillä.

Näin jatketaan kunnes löytyy pelin ratkaisuun johtava, tai ainakin paras siirto.

Tekoälyllä ei useinkaan voi laskea siirtoja pelin ratkaisuun saakka. Vaihtoehtoja kun on käytännössä ääretön määrä jo pienemmälläkin kuin 30x30 pelilaudalla. Jo tämän vuoksi on suorien tarkistuksen lisäksi voitava pisteyttää jokainen sijoitus, ts. "asema", tietyllä tavalla siten, että kahdesta vaihtoehdosta voidaan valita parempi. Vastapuolen asema pisteytetään samalla tavoin pyrkimyksenä minimoida vastapuolen etu ja mahdollisuudet.

Tekoälyn vaikeudet liittyvätkin lähinnä a) tuohon pisteytykseen ja b) vaihtoehtojen määrän rajaukseen. Vastaavat ongelmat ovat mm. Shakissa, vaikka vielä paljon monimutkaisempina.

Viiden merkin ristinolla on parhaimmillaan erittäin mukaansatempaava peli kaikessa yksinkertaisuudessaan. Shakissa sen sijaan mielenkiintoa riittää paljon pidemmäksi aikaa....

Pistäkää tänne linkkejä jos tiedätte tai löydätte hyviä ristinollapelejä!

Äänestä

Kommentoi aloitusta


tictac kirjoitti:

Voisiko joku hahmottaa miten ristinolla pelissä voi toteuttaa suorien tarkistuksen? (en tarvitse koodia, vaan sanoilla voi kuvata)

Eli on vaikka 30x30 kentä ja pitäisi etsiä 5 suorat.

Peli vaikuttaa erittäin monimutkaiselta jopa 3x3 kentällä, jos pitäisi vielä toteuttaa tekoälykin.

Anonyymi
5000

Ilmoita asiaton sisältö

  • Sisältää materiaalia, joka on loukkaavaa, herjaavaa, rasistista, uhkailevaa tai ahdistelevaa.

  • Materiaali sisältää nimiä, yhteystietoja tai muita henkilökohtaisia tietoja. Julkisuuden henkilöistä, julkisissa viroissa toimivista ihmisistä sekä yritysten vastuuhenkilöistä saa keskustella työhön liittyen. Myös yksityiselämään liittyvistä asioista voi keskustella siltä osin, kuin niistä on julkisesti kerrottu.

  • Sisältää lapsille haitallista tai heiltä kiellettyä materiaalia. Seksuaalinen sisältö on sallittua aiheeseen tarkoitetuilla palstoilla, joiden ikäraja on 18 vuotta.

  • Lainvastaista sisältöä voi olla mm. yksityiselämää loukkaavan tiedon levitys, kiihottaminen kansanryhmää vastaan, laiton uhkaaminen, alaikäisiin liittyvä seksuaalinen sisältö/grooming, petokset, identiteettivarkaudet, kunnianloukkaukset ja tekijänoikeusrikkomukset.

  • Sisältö ei liity palstan tai keskusteluketjun aiheeseen.

  • Viesti ei ole suomea tai ruotsia (pl. International Forums), se sisältää mainontaa, se sisältää tekijänoikeuksin suojattua materiaalia, se on massapostitus tai jokin muu syy.

Jaa keskustelu