Jump to content

Jogo do Galo em Java


Ribamar
 Share

Recommended Posts

Boas pessoal.

Para o projecto final da cadeira de Programação II tenho de implementar o Jogo do Galo.

Enunciado:

Implementar o Jogo do Galo com interface gráfica. O jogador deve identificar-se e caso já tenha jogado alguma vez o jogo deve ser indicado o número de jogos efectuados e o número de vezes que ganhou (caso existam níveis, o número de vezes que ganhou em cada nível).

Valoriza-se:

- As facilidades da interface com o utilizador.

- A existência de vários níveis de jogadas do computador.

- A existência de um nível em que o computador não perca.

A minha dúvida neste momento é como hei-de fazer com que o início do programa seja um menu para escolher "Novo Jogo", "Recordes", etc. Depois de seleccionada a opção "Novo Jogo" o programa muda de "estado" e vai para o menu onde se joga. A minha dúvida é como se implementam dois "estados" do programa e como se muda de um para o outro...  ?

Toda a ajuda é bem vinda.

Cumps []  :P

Link to comment
Share on other sites

  • Replies 59
  • Created
  • Last Reply

Top Posters In This Topic

  • saramgsilva

    6

  • freesumo

    3

  • Ribamar

    24

  • Knitter

    21

Top Posters In This Topic

saramgsilva

Como diz no enunciado, claro que é

Implementar o Jogo do Galo com interface gráfica.

Cumps

isso é muito bago!!!  :P

bem eu implementei recentemente o jogo do galo em C++ / Opengl ( ve aqui )

Conselhos:

1º Defenir variaveis: ( podem ter que ser vectores... depende!! ou estruturas!!! )

  jogador A

  jogador B

  jogos[MAX] -para guardar nivel de cada jogo, para saber quantas vezes jogou akele jogo... ( usa ponteiros )

  tipo de jogo - pc x jog ou jog x jog ...

  nivel de jogo

  numero de jogadas

  numero de victorias

  numero de empates

  numero de derrotas

 

  (...)

2º Criar uma matriz 3x3 para guardar a jogada de cada jogador

  - iniciar a matriz

  - mudar a matriz consoante a jogada do jogador em causa

e consoante o valor da matriz vais visualizar o galo no ecra!!!

3º ..... Toca a trabalhar que tens muito para fazer, para obteres uma coisa fantastica, no meu jogo tenho + de 100h de trabalho  ( ?  ) e ainda quero melhorar umas cenas!!! mas ja entreguei para avaliação...

Link to comment
Share on other sites

O jogo é so User vs PC...

O que me faz confusão é como tenho 1 menu onde estão opções ("Novo Jogo", etc) e depois vou po menu do jogo, e depois se volta para o menu principal de novo...

Ponteiros... qué isso?

O que dei que posso usar são Arrays, vectores, estruturas de dados (linked lists, grafos), awt e swing, excepções, IO (ficheiros de texto e binários) e claro, conceito de classes e heranças que caracterizam a linguagem java.

cumps

Link to comment
Share on other sites

saramgsilva

eu percebo pouco de java...ja estudei umas coisas...mas não me lembro mto bem disso pq nao pratico....

é assim:

declaras a variavel mostrar ( ou outro nome...)

se mostrar = 0

  desenhas menu de entrada

se mostar =1

  desenhas jogo nivel 1

se mostrar = 2

  desenhas jogo nivel 1

...

se mostrar=-1

  desenhas menu de saida e fechas o programa

No menu de entrada:

tens 1 texto de opçoes, para o utilizador escolher...e tens que ter algo k leia a escolha do jogador....

e por ai fora....

Link to comment
Share on other sites

Em relacao aos estados a tofas esteve quase la', isto e', se for importante a componete de programacao orientada a objectos convem nao fazeres isso com um switch ou if, nao e' muito POO, mas se quiseres ver jogos com interface grafica e menus e com estados podes dar uma vista de olhos 'a minha pagina pessoal em www.student.estg.ipleiria.pt/~ei10635, vai 'a seccao de downloads e na parte de trabalhos estao la' jogos feitos em java. Saliento o J2Gether, o Fury of the Furries e o Puzzle de 8, este e' o ultimo link.

Se precisares de mais ajuda nao hesites...

Link to comment
Share on other sites

Boas.

Pelo que percebi da última aula prática, o que tenho de usar é o java.awt.CardLayout, para modificar o layout da minha aplicação. Agora não faço a mínima como se usa isto, esta classe não é leccionada na cadeira, apenas tomei conhecimento dela porque coloquei a dúvida à Eng. como se podia alterar o layout da aplicação... por isso se açguém fizer ideia de como se usa diga algo sff.

Cumps

Link to comment
Share on other sites

Boas!

Supondo que a classe onde estás a implementar a interface descende de um qualquer 'Component', tipo 'Frame' ou 'JFrame' para alterares o layout basta teres uma linha de código no método que inicia a parte gráfica que diga:

setLayout(new CardLayout());

e voilá, tens o layout mudado para CardLayout!

Agora se não pretenderes usar as definições por defeito do layot, por exemplo, espaço entre os componetes, etc..., só tens de usar os métodos 'set' que a classe CardLayout te disponibiliza.

Agora um aviso de amigo, como um dos meus profs de programação me disse uma vez, "Todos nós temos de ler o Java Tutorial alguma vez nas nossas vidas!", eu digo-te que mais vale cedo que tarde!

Vai ao site da sun, http://java.sun.com e procura lá o java tutorial, podes sacar o zip de 14mb e ficas com isso no disco tem lá exemplos simples mas que ajudam muito, outra coisa que tb deves ter, não sei qual o ide que estás a usar, mas se estás a programar tens o sdk instalado e isso trás o código fonte do java e o javadoc, lê esse javadoc, tem muita informação, e se tiveres curiosidade vê o código, tem muito coisa interessante.

Espero ter ajudado, se não MSN ou PM ou Gtalk! Até....

Link to comment
Share on other sites

Pois, mas isso do Tic Tac Toe é implementado usando a classe Applet, eu vou ter de usar Swing e AWT. E espero fazer algo muito mais cativante em termos gráficos.

Knitter, eu uso Eclipse 3.2, mas não percebi isso do javadoc...

Link to comment
Share on other sites

saramgsilva

Pois, mas isso do Tic Tac Toe é implementado usando a classe Applet, eu vou ter de usar Swing e AWT. E espero fazer algo muito mais cativante em termos gráficos.

Knitter, eu uso Eclipse 3.2, mas não percebi isso do javadoc...

acho que fazes bem e tens miuito trabalho pela frente...isso do javadoc é fixe...mas eu não sei quase nada... 😁

Link to comment
Share on other sites

Ribamar quando dizes que não percebeste é porque não sabes o que são JavaDocs, ou não percebeste o que eu quis dizer?

Bem vou assumir que não me expliquei bem. O código java está comentado, todas as classes da framework de java possuiem no seu código comentários que explicam como é que determinada classe funciona.

Estás a usar o eclipse em windows ou em linux?, dependendo do sistema podes ou não ter o eclipse bem configurado, mas se estiveres em windows provavelmente já está configurado....

Ora no eclipse:

Nas propriedades do pojecto existe uma secção chamada "Java Build Path" nessa secção se fores ao separador "Libraries" encontras o o JRE incluído no teu projecto, se vires os jars que fazem parte do JRE encontras um que se chama rt.jar, nesse podes configurar o source do JRE e o Javadoc do JRE. Onde é que isto te ajuda?, bem, quando estiveres a programar e com a tecla "ctrl" pressionada carregares com o o rato em cima de uma classe da api do java saltas para o código, se colocares o cursor de edição numa classe da api do java e utilizares a combinação "shift+F2", se não me engano, saltas para o javadoc dessa classe e podes ver ai como toda a classe funciona.

Espero ter-me explicado e ter ajudado. Se por acaso não souberes o que são javadocs básicamente são comentários formatados de uma maneira especifica de forma a poderem ser apresentados, por exemplo, em html, isto não é uma defenição muito correcta, mas serve para explicar.

Fiquem ...

Link to comment
Share on other sites

Quando vou às propriedades > java build path > libraries, o rt.jar tem dois sub-campos: "Source attachment" que se encontra vazio, e o Java Doc Location que tem 1 link para a api no site da sun (http://java.sun.com/j2se/1.5.0/docs/api/). Ora suponho que devo colocar um caminho qualquer no "Source Attachment", mas qual? E como funciona isto afinal? Onde posso ver documentação sobre isso?

cumps

Link to comment
Share on other sites

Em relação à documentação sobre isto não te posso ajudar, é algo que uso há bastante tempo e não me lembro onde aprendi, podes claro, tentar ajuda do eclipse ou uma pesquisa do google, desculpa mas de momento não te posso ajudar mais que isso.

Em relação ao source... o source do java já se encontra no teu pc... está a usar linux ou windows, se estás a usar windows isso já devia estar configurado, bem, seja como for o source do java é um zip que se encontra na raiz da pasta do jdk, isto é, no meu caso, C:\Program Files\Java\jdk1.5.0_06. Basta editares o campo source attachment e escolheres o zip. Não te preocupes por ser zip, até porque o eclipse gosta mais de zips e de jars do que de pastas 😁.

Se quiseres ter sempre a informação da api do java podes sacar a api no site que indiquei antes, a documentação da api não vem na instalação do jdk, e depois editas o campo Java Doc Location para usar, em vez da web, o ficheiro que sacaste.

Depois disso configurado o que passas a ter é que, como disse antes, se por exemplo, usares o atalho "shift + F2", com o cursor de edição em cima da class CardLayout o eclipse abre-te um browser com a documentação dessa classe.

Nota: se estiveres sempre ligado à web não precisas sacar a documentação da api do java, podes deixar o link.

P.S.: Se precisares de alguma ajuda, PM, MSN ou GTalk!

Link to comment
Share on other sites

Ora agora que eu peguei nisto a sério, fiz o seguinte:

Vou ter uma classe Game abstracta, da qual derivam por herança as classes Easy, Medium e Hard.

Tenho depois a classe Player, pois a classe Game contém objectos do tipo Player.

Agora para fazer o método play() na classe Game não estou a perceber como é que joga o pc e depois o jogador e vice-versa... e como fazer para começar primeiro ou o pc ou o jogador, e quando quem ganha começa primeiro... agradecia algum feedback.

cumps  ;)

Link to comment
Share on other sites

Normalmente o PC é também um jogador, a diferença é que implementa os métodos de uma forma muito particular, isto é, se tens uma classe Player, então podes ter duas subclasses, um AI e outra Human, por exemplo. Depois o controlador de jogo poderá dar a indicação aos jogadores de que é a sua vez, cabe ao jogador saber como jogar.

Nota que esta solução é dada um pouco às escuras, não sei que classes tens, nem como pretendes implementar o teu jogo.

Link to comment
Share on other sites

Boas.

Ontem dediquei-me a sério a este projecto, mas surgiram-me algumas dificuldades. Tive a ideia de usar um GridLayout no Container 3x3, ao qual adicionava os 9 labels ou buttons, com espaço vertical e horizontal 3 entre eles, ficando assim feito o tabuleiro do jogo, pois definia o background color a preto. A minha ideia é usar o ImageIcon para alterar os icones das labels ou buttons conforme este são premidos, mas tento adicionar um icon a 1 button ou label e não consigo! faço: JLabel label = new JLabel(new ImageIcon("icon.gif")) ou então Jlabel label = new JLabel(); ImageIcon icon = new ImageIcon("icon.gif") ; label.add(icon);  e também tento com butões e não consigo de maneira nenhuma!

Alguém me podia ajudar sff? Deixo aqui o link do codigo pa sacarem e verem como isto está implementado.

P.S.: o projecto está implementado usando package, se usarem linha comandos não se esqueçam de estar uma directoria atrás. Eu uso o Eclipse 3.2 como SDK.

link:

http://u2fly.com.sapo.pt/jogo_galo.rar

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.