Ristinolla

tictac

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.

9

1990

    Vastaukset

    Anonyymi (Kirjaudu / Rekisteröidy)
    5000
    • void

      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.

    • xo-xpert

      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ä!

      • 2000

      • yes!

        http://cactus.rulez.org/projects/gnomoku/

        Gnomoku 1.4
        ===========
        Gnomoku is a Gomoku game for GTK /X11. It uses the GTKmm C wrapper
        for accessing GTK itself.

        The libraries required by Gnomoku are available in GNOME 1.4. Consult
        your operating system vendor for information on obtaining GNOME
        1.4. The individual packages you need are:
            GTKmm 1.2.0 or later
            GNOMEmm 1.1.15 or later
            GTK 1.2
            gnome-libs 1.4
        And the following non-GNOME-related libraries:
            GNU LibC 2.0 / libpthread

        Gnomoku is maintained by ÉRDI Gergõ. Send comments, bug fixed, etc. to
        [email protected].

        Gnomoku was originally written by NAGY András .
        The AI code is ported from Gomoku.el from the GNU Emacs distribution.
        GNU Gettext support and Hungarian translation (c) ÉRDI Gergõ
        .

        This program is free software; you can redistribute it and/or modify
        it under the terms of the GNU General Public License as published by
        the Free Software Foundation; either version 2 of the License, or
        (at your option) any later version.

        This program is distributed in the hope that it will be useful,
        but WITHOUT ANY WARRANTY; without even the implied warranty of
        MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
        GNU General Public License for more details.


      • samaa
        yes! kirjoitti:

        http://cactus.rulez.org/projects/gnomoku/

        Gnomoku 1.4
        ===========
        Gnomoku is a Gomoku game for GTK /X11. It uses the GTKmm C wrapper
        for accessing GTK itself.

        The libraries required by Gnomoku are available in GNOME 1.4. Consult
        your operating system vendor for information on obtaining GNOME
        1.4. The individual packages you need are:
            GTKmm 1.2.0 or later
            GNOMEmm 1.1.15 or later
            GTK 1.2
            gnome-libs 1.4
        And the following non-GNOME-related libraries:
            GNU LibC 2.0 / libpthread

        Gnomoku is maintained by ÉRDI Gergõ. Send comments, bug fixed, etc. to
        [email protected].

        Gnomoku was originally written by NAGY András .
        The AI code is ported from Gomoku.el from the GNU Emacs distribution.
        GNU Gettext support and Hungarian translation (c) ÉRDI Gergõ
        .

        This program is free software; you can redistribute it and/or modify
        it under the terms of the GNU General Public License as published by
        the Free Software Foundation; either version 2 of the License, or
        (at your option) any later version.

        This program is distributed in the hope that it will be useful,
        but WITHOUT ANY WARRANTY; without even the implied warranty of
        MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
        GNU General Public License for more details.

        C
        http://www.gnustep.it/nicola/Applications/Gomoku/

        Python
        http://flibuste.net/pythreries/morpyon.html


      • 2000

      • Sinivuokko

    Ketjusta on poistettu 0 sääntöjenvastaista viestiä.

    Luetuimmat keskustelut

    1. Kanki kovana; ei tiedä pornovideoista mitään

      Kaikkosen erityis­avustajan asunnossa kuvattiin pornoa. Väittää ettei tiedä asiasta yhtään mitään. https://www.is.fi/po
      Maailman menoa
      77
      4043
    2. Niin voimakkaat tunteet

      Että ajattelin hänen olevan se elämän rakkaus. Silmien edessä vikitteli toista ja hyvästelemättä hylkäs niin tyhjyys jäi
      Ikävä
      18
      2776
    3. Nainen, sinä viisas ja ymmärtäväinen

      sekä hyvällä huumorintajulla varustettu. Kun kaikki muut ovat kaikonneet, vain sinä olet jäljellä. Ellet kestä kirjoituk
      Ikävä
      24
      2664
    4. Puhe on halpaa

      Katso mitä hän tekee.Teot kertoo enemmän kuin tuhat sanaa.Uskokaa punaisia lippuja.Hyvää yötä.
      Ikävä
      44
      1876
    5. Halaisin sua mies

      Jos voisin 💗
      Ikävä
      25
      1676
    6. Oletko harrastanut

      seksiä kaivattusi kanssa? 🤔
      Ikävä
      125
      1461
    7. Onkohan meillä kummallakin joku pakkomielle toisiimme

      Vähän luulen että on..
      Ikävä
      140
      1440
    8. Miksi miehet hermostuvat tyhjästä?

      Olen tässä viimeisen vuoden sisään pudottanut melko reilusti painoa mikä on sitten saanut useammankin lähipiirin aiemmin
      Sinkut
      99
      1382
    9. Nainen, se on vain karu totuus, että

      sinut on luotu synnyttämään ja mies siittämään. Niin on luomakunnassa säädetty ja niin se on. Sinut luotiin heikoksi ja
      Ikävä
      281
      1365
    10. Joko aiheuttamani pettymys

      on lieventynyt? Toivottavasti. Uskallan heittää lentosuukon näin etäältä ja nimettömänä 😘.
      Ikävä
      90
      1329
    Aihe