1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

[JAVA] jogo de cartas

Discussão em 'Programação' iniciada por carvaljo2707, 23 de Agosto de 2012. (Respostas: 7; Visualizações: 1414)

  1. carvaljo2707

    carvaljo2707 Power Member

    boas, estou a tentar criar um programa em java para jogar copas..
    ja criei todas as funções e nesta fase as cartas jogadas sao aleatorias (tendo em conta as regras do jogo)..

    na segunda fase queria dar inteligencia ao computador para o utilizador poder jogar contra o computador [​IMG]

    o que vou precisar? pelo que li o algoritmo minimax é muito bom , mas aplica-se? que sugestões têm?

    obrigad
    o ;)
     
    Última edição: 23 de Agosto de 2012
  2. Expertinfo

    Expertinfo Power Member

    Se conseguires integrar Prolog (http://www.din.uem.br/~ia/ferramen/prolog/) com o teu programa, a inteligência vai-se ganhar. Existem bons algoritmos que te vão permitir, de forma acessível, dar a inteligência que pretendes ao jogo.

    O algoritmo que referes segue um padrão, salvo erro, em árvore, o que para este fim não me parece o mais adequado, visto que o jogo de copa ser um pouco aleatório (provavelmente até estou enganado):
     
    Última edição: 23 de Agosto de 2012
  3. carvaljo2707

    carvaljo2707 Power Member

    podes explicar melhor? aprendi java sozinho e nomes como esses nao me dizem nada ainda xd
     
  4. Geedunk

    Geedunk Power Member

    Se tiveres tempo, aprende machine learning... é exactamente aquilo que tu queres... o algoritmo proposto penso que seja o chamado unsupervised learning, em que o jogo vai aprendendo com o tempo.
     
  5. Bem, tens várias maneiras de dar inteligência ao teu jogo, mas eu explico duas:
    • Usando Java:
      • Como só estás familiarizado com Java, se calhar é mais fácil.
      • O teu jogo está por turnos, certo? Sempre que começa um novo turno, chamas a função que joga a carta, que em princípio, faz uma jogada manual. Que tal "clonares" essa função, e fazer uma que escolhe uma carta aleatória?
      • Como é que meterias isto a funcionar em prática? Fácil. Basta quando correres o programa, dar ao utilizador modos de jogo, em que por exemplo, 1 é Player vs Player, e 2 é Player vs CPU. Depois, onde chamas a função que faz a jogada, basta meteres um switch com dois cases, onde 1 é PvP e 2 é PvC.
      • Na "clonagem" da função, tenta ser o mais simples possível. Podes até criar modos de dificuldade, onde fácil ele faz uma jogada possível e aleatória, ou então crias uma máquina de estados que te permita escolher a carta que é mais indicada nessa jogada. Mete Design Patterns, Minimax ou Decision Algorithms no Google, e tenta ver o que mais se adequa à tua sitaução.
      • Se quiseres facilitar os turnos, podes usar sockets para fazeres as tuas jogadas. No entanto, isto pode não ser preciso, porque java é Object Oriented. Deves ter um objecto Player prai criado, basta na classe dizeres que o Player é AI com um booleano ou assim, e aquando da sua criação, dizes se é humano ou AI.
    • Usando Prolog:
      • Primeiro, precisas de aprender prolog. Mas prolog é algo que facilita a criação de seres inteligentes, visto ser uma linguagem que usa lógica. Eu gosto bastante de prolog, e tenho a dizer que é super fácil de aprender. Prepara-te para recursividade.
      • No ficheiro .pl apenas crias regras de jogo, e pesquisas, árvores de decisão. Isto porque depois basta ligares o teu código Java ao código de prolog através de communication sockets, coisa que encontras na net a pacotes.
      • No Java, efectuas as jogadas, as cartas, e etc. No prolog, processas qual a jogada que deve ser feita. Ou seja, imagina o Java como a tua "interface" e o prolog como a tua "lógica".
    Espero ter ajudado. ;)
     
  6. carvaljo2707

    carvaljo2707 Power Member

  7. Nada

    Nada Power Member

    Com Prolog seria a maneira mais fácil, pelo menos eu acho.. Prolog é fácil de aprender a sua logica, para quem aprendeu java sozinho Prolog não sera nada de outro mundo..
    Vai dando noticias do projeto, eu nunca fiz copas gostava de ver como vais por "vs Pc" ;)
     
  8. carvaljo2707

    carvaljo2707 Power Member

    o jogo so vai ter modo vs PC xd ainda nao sei nada sobre como por com outros jogadores, nas proximas ferias talvez, natal xd

    pelo que li na diagonal prolog envolve inteligencia artificial e logica, cadeiras que vou ter este semestre na faculdade..

    eu vou dando noticias, se nao descobri uma maneira facil envolvendo java vou pensar eu num algoritmo e faço :p
     
    Última edição: 24 de Agosto de 2012

Partilhar esta Página