Costruire un semplice gioco di intelligenza artificiale per tris

1

Sto sviluppando un semplice tris e ampli; incrocia il gioco in cui il giocatore gioca contro il computer.

Ovviamente, uso la funzione Randomize della lingua, tuttavia, lo stadio finale della raffinatezza è cercare di far bloccare il computer alla mia mossa vincente (come fareste normalmente in un vero gioco). Questo, ovviamente, richiede più intelligenza da parte del computer.

Finora, ho appena pensato a tutte le permutazioni che si potevano avere e ho costruito questo in una grande struttura di selezione. Questo, come puoi immaginare, vede molte dichiarazioni if / case.

C'è un modo più intelligente di creare un noughts & attraversa l'IA piuttosto che delineando tutte le possibili mosse vincenti?

Grazie.

    
posta user3396486 14.11.2016 - 10:39
fonte

3 risposte

1

Il mio approccio ingenuo sarebbe qualcosa come un ordine di priorità. È possibile rilevare le mosse vincenti con una combinazione di pattern piuttosto semplice, ovvero controllare ciascuna riga e colonna e diagonale per due degli stessi e uno spazio vuoto. Una volta identificato uno o la sua mancanza:

1) Se la vittoria si muove per te, fai mossa vincente. 2) Altrimenti in caso di mossa vincente per l'avversario, mossa vincente per blocco. 3) Altrimenti Se fila / colonna / diagonale con uno dei tuoi pezzi e due spazi aperti, riempire lo spazio. 4) Altrimenti compilare random r / c / d con 3 spazi aperti

Il problema ovvio qui è difendersi dalle mosse che creano una situazione di non vittoria due mosse avanti (ad es. angolo come mossa di apertura deve essere neutralizzato dall'angolo centrale o opposto o si perde) e anche utilizzarle.

Effettuare una ricerca completa di tutti i possibili stati futuri è una possibilità dato quanto è piccolo lo spazio, ma è anche una strategia che non si adatta a giochi più complessi.

    
risposta data 15.11.2016 - 19:43
fonte
1

Is there a smarter way of creating a noughts & crosses AI than simply outlining all the possible winning moves?

Bene, il "più intelligente" diventa l'intelligenza artificiale, le informazioni necessarie diventano la definizione di mosse sempre più possibili. Con l'aumentare della profondità delle mosse possibili, l'intelligenza artificiale può diventare così intelligente da non batterla mai. Ho lavorato su un'implementazione del genere usando l'algoritmo minimax con l'alfa beta di potatura per una classe che usa C ++. Tutto dalla riga di comando. Se sei interessato: link

    
risposta data 15.11.2016 - 19:09
fonte
0

Ecco una strategia, ma non è abbastanza complessa da qualificarsi come "AI", passare attraverso queste regole e giocare al primo che funziona. Notare che le strategie migliori potrebbero essere possibili, ma questo gioca un gioco ragionevole.

  1. Verifica se è possibile vincere, se è così puoi giocare lì.
  2. Controlla se l'avversario può vincere - se è così, gioca lì
  3. Gioca al centro, se possibile
  4. Gioca in un angolo, se possibile
  5. Gioca da qualsiasi altra parte
risposta data 15.11.2016 - 19:41
fonte

Leggi altre domande sui tag