Criando um jogo de tabuleiro AI

9

Quero codificar um jogo de tabuleiro com o nome Okey e muito popular na Turquia. http://en.wikipedia.org/wiki/Okey

Mas eu tenho alguns problemas sobre a IA.

Firslty, deixe-me explicar o jogo ..

O jogo é jogado por 4 jogadores.

Neste jogo, existem 106 peças, 2 delas são brincadeiras falsas. Outras 104 peças são divididas em 4 cores, geralmente verde, preto, azul e vermelho. Todas as cores têm dois conjuntos de peças. Um conjunto contém 13 peças numeradas sequencialmente de 1 a 13.

Cada jogador inicia 14 peças (uma começa 15 e começa primeiro) e lança uma das peças mais indesejadas do próximo jogador. O próximo jogador pode obter esse ladrilho ou outro ladrilho da pilha no meio da mesa. O jogo jogou no sentido anti-horário ..

O objetivo deste jogo é encontrar a sequência válida de 14 peças o mais rápido possível. O jogador pode alinhar ladrilhos por números seqüenciais da mesma cor até 13. Para examinar Verde 1, Verde 2, Verde 3. Há uma exceção aqui, 1 pode ser seguido para 13. Por exemplo, Vermelho 12, Vermelho 13 e Vermelho 1 é um conjunto válido. Mas o vermelho 13, o vermelho 1 e o vermelho 2 não são válidos.

Ou o jogador pode alinhar peças por cores no mesmo número. Por exemplo, Verde 1, Preto 1, Vermelho 1, Azul 1.

Cada conjunto precisa ter 3 ou mais blocos para ser válido e cada um deles definido como "Por". Menos de 3 peças não são válidas para o acabamento. Um conjunto de finalizações válido pode ser assim. G: Verde, B: Azul, R: Vermelho, BL: Preto G1 | G2 | G3 B2 | R2 | BL2 R9 | R10 | R11 | R12 BL13 | R13 | G13

Última coisa, ao iniciar o jogo, uma peça selecionada para determinar o coringa (okey). Por exemplo, se você selecionar Azul 3; O azul 4 será um coringa (okey) e o jogador pode usar esse ladrilho em vez de qualquer ladrilho que o jogador precise para vencer ou concluir um conjunto (por).

É claro que essas regras são regras gerais e resumidas para explicar a pergunta. Se você sabe ler inglês, pode verificar este link para obter mais informações http://tr.wikipedia.org/wiki/Okey ou página traduzida pelo Google Translate http://translate.google.com/translate?js=n&prev=_t&hl= pt-br = ie UTF-8 & layout = 2 & eotf = 1 & sl = tr & tl = pt-br & u = http: //tr.wikipedia.org/wiki/Okey

Então, qual algoritmo de IA que eu posso usar? Procurei a teoria do minimax e a poda alfa beta. Mas essas teorias geralmente são de dois jogadores, como xadrez ou tic-tac-toe.

A pergunta original está em stackoverflow: /programming/4419628/creating-a-board-game-ai

bahadir arslan
fonte
11
Você pode usar muitos algoritmos de IA; portanto, "qual deles" é uma troca de design (ou possivelmente engenharia). Você quer uma IA "perfeita" que possa "resolver" o jogo (ou seja, jogar da melhor maneira)? Ou você quer uma IA de "jogo" que seja boa o suficiente para não se envergonhar, mas fraca o suficiente para ser derrotável (especialmente se você quiser vários níveis de dificuldade)? Ou você só quer uma IA "burra" básica que joga sem lógica para poder testar o jogo? Muitas opções, nenhuma inerentemente certa ou errada.
22610 Ian Ian Schreiber
Eu acho que você precisaria de um algoritmo desenvolvido especificamente para esse problema, embora você possa usar várias técnicas / algoritmos nele. Você pode obter uma boa resposta em ai.stackexchange.com
Matthew Leia
@Ian, eu quero que a IA possa jogar o próprio jogo aceitável. Pode ser que mais tarde eu possa adicionar níveis de dificuldade. Então, eu preciso de um ponto de partida. @ Matthew, vou adicionar minha pergunta para lá. Obrigado a todos.
bahadir arslan
Ai! Parece que ai.stackexchange.com estava fechado, embora esse fosse o lugar perfeito para perguntar ... triste.
bummzack
As versões para vários jogadores bem conhecidos de minmax são MaxN e Paranoid Pesquisa
Druzil

Respostas:

3

Se você trocar peças por cartas, a descrição do jogo soa incrivelmente semelhante ao jogo de cartas Gin Rummy. Você pode encontrar alguns recursos diretos de IA pesquisando isso.

Uma opção para a IA que é independente do número de jogadores e pode ser usada para criar diferentes personalidades da IA:

  1. Jogue o jogo de tabuleiro, idealmente com alguns amigos, embora você possa jogar todas as mãos sozinho, mas com um computador à mão e o Excel aberto.
  2. Fale sobre qual é o seu processo de pensamento. Haverá vários pontos discretos que você considera ao tomar uma decisão. Coisas como "o bloco indesejável me dá um conjunto reproduzível", ou "me leva um passo perto de um conjunto" ou "adiciona a um conjunto reproduzível existente".
  3. Depois de ter a lista de todos os itens que você considera ao tomar uma decisão sobre qual bloco pegar e qual bloco descartar, comece a criar pesos numéricos para eles com base no que é mais importante para você.
    1. Exemplo: pode ser três vezes mais importante para você obter o terceiro bloco em uma sequência do que obter o quarto bloco em uma sequência existente.
  4. Depois de ter todos esses pesos para todas as coisas que você olha ao tomar uma decisão, você pode usar o Excel para calcular uma pontuação para cada ação. Portanto, você tem uma planilha em que cada linha representa uma opção de ação e cada coluna representa um fator decisivo. Se esse fator for verdadeiro para essa ação, você o multiplicará pelo peso, se esse fator for falso, será zero. Em seguida, você soma todas as pontuações e aquela com o valor mais alto é o que a IA escolherá fazer.
  5. Jogue o jogo com o Excel aberto. A cada turno, veja se o resultado da pontuação corresponde ao resultado que você escolheria. Se não ajustar os pesos com base no seu pensamento até isso acontecer. Após vários jogos, a IA deve jogar o jogo da mesma maneira que você. Se você está jogando de forma consistente com um grupo de amigos com pesos diferentes, você terá IAs com várias personalidades.

Você pode controlar a dificuldade nem sempre selecionando a opção de classificação mais alta. Como quanto menor a pontuação, pior a decisão.

wkerslake
fonte
Aqui está um artigo sobre a criação de IA para Gin Rummy. Pode provar algumas idéias úteis. aifactory.co.uk/newsletter/2007_02_imperfect_info.htm
Tim Holt
Vou procurar isso o mais rápido possível. Obrigado @ Tim Holt e @skerslake
bahadir arslan
Eu também procuraria por estratégias de MahJongg. Não está tão intimamente relacionado, mas ainda está perto.
Loren Pechtel