Jump to content
Sign in to follow this  
tawny_alexa

Jogo inspirado no Bad Apples IOS

Recommended Posts

tawny_alexa

Boa tarde, sou estudante universitária e tenho Programação em Java à cerca de 2 meses. Tenho neste momento que realizar um projecto para a disciplina e o objectivo do mesmo é desenvolver, utilizando a linguagem Java e a metodologia de Programação Orientada por Objectos, um programa que será uma implementação de uma versão de jogos do tipo “3 em linha”. O jogo a implementar será uma versão simplificada do jogo Bad Apples disponível para iOS (http://www.metaversa...ames/badapples/).

O jogo é baseado num tabuleiro constituído por um conjunto de linhas (10 por omissão) e colunas (5 por omissão), onde são colocadas, pelo computador, peças a partir do topo. Existem 3 famílias de peças com cores distintas: Amarela, Azul e Vermelho. Pretende-se colocar, pelo menos 3, peças da mesma cor em sequência (em linha ou coluna). Quando existe uma sequência de 3, ou mais peças, da mesma cor, estas são removidas do tabuleiro (contando um ponto por cada peça) e as peças que se encontram em cima destas, são deslocadas, automaticamente, para ocupar as casas vazias. O jogo evolui jogando o computador e o utilizador à vez: quando o computador joga introduz uma nova peça em cada coluna; quando o utilizador joga move, sempre, UMA peça, tentando criar uma sequência ou preparando caminho para o conseguir numa jogada subsequente (no topo do tabuleiro estão indicadas as peças que serão introduzidas na próxima jogada do computador).

Após cada jogada são retiradas as eventuais peças que façam sequência, de 3 ou mais da mesma cor, antes de o oponente realizar a sua jogada. Se com a movimentação das peças devido às casas deixadas vazias se obtiverem novas sequências o processo repete-se: removem-se essas novas peças em sequência e deslocam-se as que se encontram acima delas.

Na vez do utilizador este deve SEMPRE mexer uma peça. O movimento poderá ser trocar duas peças de posição, ou mover uma peça para uma zona vazia.

Caso a movimentação da peça, por parte do utilizador, a coloque numa posição sem peças abaixo, esta será deslocada, automaticamente, passando por todas as linhas vazias, até uma posição com peças abaixo ou ficando na base do tabuleiro. Se, após a jogada do computador (introdução de uma nova peça em cada coluna) não existir nenhuma peça no tabuleiro para o utilizador mover (porque foram todas removidas devido a terem sido efectuadas sequências), este perde a vez e o computador volta a introduzir um conjunto de novas peças.

O jogo termina quando, pelo menos, uma coluna fica completamente preenchida, não sendo possível, ao computador, a introdução de novas peças.

Para não começar com um tabuleiro vazio, o jogo inícia-se com o computador a introduzir um número de peças (10 por omissão, equivalente a duas linhas), com cores escolhidas aleatoriamente em colunas aleatórias.

Não venho aqui pedir que me façam o projecto mas sim que me possam dar dicas de como o iniciar, uma vez que nunca fiz nada parecido. Já pesquisei alguns jogos em Java, mas nenhum deles se relacionou com este.

Peço portanto a ajuda de quem me possa dar indicações.

E antes de mais obrigado. Cumps.


Tânia Sardão - Estudante de Engenharia Electrotécnica e de Computadores

Share this post


Link to post
Share on other sites
KTachyon

Eu diria para começares pelo início. Faz uns rabiscos numa folha de papel par tentar estruturar o programa. Por exemplo, qual é a flow do programa e dos algoritmos mais importantes, que objectos precisas de implementar, como vais representar os dados,...

Se começares com um diagrama geral e depois começares a detalhar as diversas componentes, mais tarde ou mais cedo vais chegar a um ponto em que tens uma ideia desenvolvida e pronta a ser implementada.


“There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult.”

-- Tony Hoare

Share this post


Link to post
Share on other sites
tawny_alexa

Boas,

Antes de mais, brigado pelas dicas para iniciação do projecto. Estou na fase da interface em modo consola e surgiu-me uma dúvidas, a de como implementar a troca de posição entre duas peças.

Agradeço desde já qualquer ajuda,

Cumps.


Tânia Sardão - Estudante de Engenharia Electrotécnica e de Computadores

Share this post


Link to post
Share on other sites
KTachyon

Com um swap, mas isso depende de como estiveres a representar o tabuleiro.

Object holder = tabuleiro[x1][y1];
tabuleiro[x1][y1] = tabuleiro[x2][y2];
tabuleiro[x2][y2] = holder;

  • Vote 1

“There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult.”

-- Tony Hoare

Share this post


Link to post
Share on other sites
tawny_alexa

Muito obrigado, o código sugerido penso enquadrar-se no modo como representei o tabuleiro.

public class Quadrado {
//contém a coordenada do quadrado
int lin;
int col;
.....}

public class Tabuleiro {
//contém o tamanho do tabuleiro
int linhas;
int colunas;
//contém a matriz de quadrados do tabuleiro
Quadrado tabuleiro[][];
...}

public class Jogo {
//contem o tabuleiro do jogo
Tabuleiro tabuleiro = new Tabuleiro(10,5);...}

Edited by Rui Carlos

Tânia Sardão - Estudante de Engenharia Electrotécnica e de Computadores

Share this post


Link to post
Share on other sites
_7_up_

Conforme pediste aqui deixo as minhas "dicas de como iniciar". Era por aqui que eu começava. O tabuleiro não está feito nem nada mas o jogo já funciona virtualmente só com o que eu fiz aqui por baixo! Só falta o mais fácil que fica para outro dia lol.

t = construir tabuleiro vazio(nLinhas,nColunas);
jh = novo jogador humano;
jm = novo jogador máquina;
pontos = 0;

jm.executarJogadaInicial(t,nPeças);  
pontos = pontos + t.limparSequencias();

enquanto(!t.fimJogo()){
  jogadaMaquinaSeguinte = jm.estudarJogadaSeguinte();  
  t.mostrarTabuleiro(jogadaMaquinaSeguinte);		
  jh.executarJogada(t);							
  pontos = pontos + t.limparSequencias();
  t.mostrarTabuleiro();
  jm.executarJogadaEstudada(t);
  pontos = pontos + t.limparSequencias();
}

Share this post


Link to post
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
Sign in to follow this  

×
×
  • 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.