• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

anagnorisis

[Ajuda] Abalone

3 mensagens neste tópico

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros 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...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

ola anagnorisis,

o teu codigo se calhar ate podia vir a ajudar-me para o meu projecto. é muito semilhar. será que o ainda tens por aí?

agradecia imenso! ;)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora