Jump to content

Abalone


anagnorisis
 Share

Recommended Posts

Boas, comunidade...

Sou novo por estas bandas e tenho uma ligeira duvida se estou a  meter isto na devida secção, mas continuando...

Venho pedir uma ajuda, mas espero poder ajudar no futuro...

Ora bem, foi-me proposto, para uma cadeira de programação, desenvolver o jogo Abalone em c++ com interface de texto... Dentro das particularidades do trabalho já desenvolvi um bocado, mas deparei-me com uma "parede" e agora nao consigo sair daqui...

Para os interessados, o código fonte até à data encontra aqui: ProjectoAbalone

Para facilitar a leitura do código e compreensão do mesmo, o que está implementado é:

    * Tabuleiro e sua devida representação no jogo em hexagono [classe Tabuleiro]

    * Rotinas para converter a jogada introduzida pelo jogador (p.ex.: a3) nas respectivas coordenadas reais da matriz (linha e coluna) [classe Indices]

    * A dinamica normal do jogo assim como uma rotina básica de movimento: [classe Jogo]

          -> apenas mexe a peça desejada para o destino desejado substituindo o que quer que lá esteja (sem validação) pela peça movida

    * Uma função para mudar de jogador assim como variáveis para guardar as informações de cada Jogador [classe Jogador]:

          -> Nome e a variavel tipo char PoB são as mais relevantes - PoB guarda ou P ou B consoante o tipo de peça do Jogador

                + De acordo com as regras do jogo o primeiro jogador é o que tem as peças Pretas, a variável PoB é atribuida automaticamente conforme esta regras

    * Inicializador em tabuleiro (inicializa o tabuleiro)

    * FUNÇOES (peço desculpa até mas como alguns nomes de funções sao obrigatorios, achei um bocado relevante e evita problemas na percepção):

          -> Jogo::trocaJogadores() troca de um jogador para o outro

          -> Jogo::executaJogada() função para a jogada

          -> Jogo::iniciaJogo() pede o nome a cada jogador e atribui a respectiva peça

          -> Indices::index() converte a jogada dada pelo jogador em coordenadas da matriz, só aceita coordenadas do tabuleiro disponiveis, as restantes são                                      mandadas como erro para MyExceptions

          o Tabuleiro::imprimeTabuleiro() função de mostra do tabuleiro com os devidos acertos para aspecto hexagonal

O que agora falta é:

    * Implementar regra básica de empurrar:

          -> O utilizador pode mexer 1, 2 ou um máximo de 3 peças por jogada que estejam em linha (diagonal ou horizontalmente)

          -> Ao defrontar-se com uma peça do utilizador, encontra-se a regra de PAC - só se pode "empurrar" peças com superioridade numerica  por exemplo:

                + 2 peças brancas empurram apenas 1 peça preta (em linha)

                + 3 peças brancas empurram apenas 2 peças pretas (em linha)

          -> Um numero igual de peças estao bloqueadas (nessa linha) - só se podem movimentar as peças num sentido em que nao haja peças do adversário em igual ou superior numero

    * Finalização do  jogo

          -> Ganha o primeiro  jogador que "empurrar" 6 peças do adversário para fora do tabuleiro

Obrigado por lerem... se tiverem alguma ideia ou até algum código em c++ sem interface gráfico disponivel, agradecia a ajuda...

Abraço

Link to comment
Share on other sites

Ora bem...

O problema já foi resolvido e o projecto entregue...

O programa agora cobre quase todas as regreas do jogo (só nao confirma uma regra)... Há algumas, bastantas, arestas que gostaria de limar... mas, para efeitos do projecto já está resolvido... um dia mais tarde, se calhar, dedico-me ao resto...

Devido ao ambiente de texto fica uma aplicação muito chata e pesada para a vista... este jogo deveria ser so implementado em ambiente gráfico com interface de rato!... mas bem, era-me pedido assim!...

Se alguem estiver interessado no codigo, contacte-me...

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.