My first project trying to improve (game of domino)

Good guys, I’m new to programming in Java trying to evolve
Until then, in my project, a game of domino
I not move forward difficult for me
I hope someone experienced can take at least one look
Sorry for the English
and finally here is my project link


EDIT

Ainda estou aprendendo o java e estou tentando melhorar
tentando obter ajuda com este projeto.
tentando fazer um jogo de domino 4x4
cada um por si
final x valor combinado
la e lo 2 pontos
(carroça - bucha ect) 2 pontos
la e lo de (carroça - bucha ect) 4 pontos
pedras normal 1 ponto
jogo fechado conta pontos
todos os auxílios e dicas são bem-vindos

aqui esta versão br

Por que você está escrevendo em inglês num fórum brasileiro em língua portuguesa?

Qual sua dúvida exatamente?

verdade esqueci de ver q era br kkk copiei de um fórum inglês e colei aqui
na verdade não consigo avançar no meu projeto q é pra ser um jogo de domino 3d
a parte gráfica q complica fui orientado deixa código inglês pelo menos maior parte e deixa no github to tentando melhorar em java

First of all, why did you write in english? Are you from outside Brazil?
Second, Never say “sorry for the english”.
Well, first thing, if you are new to java development, i think you’re trying to get a bigger step than you’re able.
What do you know about the java basics?
Why am i asking about it? I need to understand what is your knowledgement about java, to direct what will be the best way to follow.

escrevi inglês pq tava em sites inglês acabei copiando pra ca
meu conhecimento não sei o certo deve ser intermediário
meu código esta escrito em orientação objeto e com 5 class
e arraylist aqui esta meu projeto do github

se quiser q eu posto código sem as mudanças q fiz pra deixa maior parte em inglês

Não, o inglês aqui é desnecessário.
Eu só preciso entender qual é o teu nível de conhecimento java, pois, entendo que, o que está tentando fazer não é tão simples quanto parece.

Se você está iniciando em Java, recomendo tentar coisas mais simples. Mas se quer fazer um jogo, tente algo mais fácil como jogo da memória, ou mesmo algum jogo de adivinhação (um número entre 1 e 10 é sorteado, e o jogador tem que clicar em um botão ou imagem pra dar seu palpite).

Olhei um pouco do seu código e você parece precisar revisar alguns conceitos básicos. Seu jogo não tem nada de 3D, é todo 2D. Nenhum problema com isso, mas é bom ser realista. Aplicar 3D de verdade é beeem mais complicado, ainda mais em Java.

Sua classe Player contém todos os jogadores. Faria mais sentido eles serem atributos (ou mesmo uma lista de jogadores) dentro de uma classe Jogo ou Partida, por exemplo. Os jogadores poderiam ter dentro de si as suas pedras numa lista. A classe Jogo poderia ter todas as pedras sobre a mesa, controlada como uma lista de duas pontas, assim ficaria fácil saber qual é a pedra em cada ponta da mesa.

No seu JFrame que exibe o jogo, é preferencial que você sobrescreva o método paintComponent, não paint, como você fez.

Pra simplificar, cada pedra poderia ter um método draw, que poderia receber um Graphics2D como parâmetro e desenhar sobre ele, conforme seus valores. As imagens poderiam ser carregadas numa classe à parte e as pedras teriam apenas uma referências para essas imagens, assim você precisaria carregar apenas 1 vez cada imagem, e desenhá-las quantas vezes necessário.

Você também fica alternando entre usar a interface (com Java2D) e ficar exibindo mensagens no console, o que pode deixar as coisas mais confusas quanto mais você avançar nesse projeto. Se quer algo visual, use o console só pra mensagens de debug.

Não vou me estender muito. A recomendação geral é a mesma do começo: tente coisas mais simples.

Como é um projeto para aprendizado, não se apegue à escrever em inglês. Primeiro concentre-se em fazer funcionar e criar algo que faça sentido. Nomes podem ser trocados e refatorados com facilidade, ainda mais num projeto pequeno como esse.

Abraço.

1 curtida

Se você está tentando criar um jogo 2D/3D, cara começa a estudar OpenGL mais especificamente uma biblioteca chamada LWJGL.

Criar um jogo nao é fácil, ainda mais para iniciantes eu estou trabalhando em uma game engine atualmente ainda não fiz upload pro github mais assim que eu o fizer você pode dar uma olhada no código pra sentir um pouco como tudo funciona :wink:

muito obg por ter olhado o meu código e pelas dicas ,
e sim vou fazer 2d passar para 3d no futuro quando melhorar em java
vou seguir seus concelhos para melhorar esse projeto
já esses outros joguinhos não acho q seja muito desafiador
números aleatório seria facil facil teria q usar
Random num = new Random();
e um while e comparar os numero foi positivo ou negativo etc…
eu seria capaz de fazer sem problema :slight_smile:
jogo da memória to sem ideia agora de como seria feito agora não deve ser algo tão dificil
quem sabe faço ele tbm

vlw vou dar uma olhada biblioteca Lwjgl quando tiver um tempo

Outra coisa que percebi no seu repositório é que você não usa nenhum sistema de build, como Gradle e Maven. Eu recomendo fortemente você aprender a usar um desses, o mais fácil é o Maven.

Você precisa de um sistema de build para facilitar outros usuários a compilar, desenvolver, distribuir e testar seu software. Vi que o projeto é do NetBeans pelos arquivos de projeto, porém nem todo mundo usa o NetBeans, eu uso o IntelliJ IDEA, o que dificulta na hora de abrir dependencias e compilar o projeto.

O Maven e o Gradle tornam a build independente da IDE sendo assim o projeto pode ser construido em qualquer IDE sem precisar ficar advinhando como compilar, como importar bibliotecas e etc.

1 curtida

Ah outra coisa, você já tem conhecimento sobre game engines e como os jogos funcionam? Por exemplo, Sincronização de FPS usando timer, Game Loop, Input Handling etc?

Minha sugestão não é pela dificuldade do projeto, mas sim porque você parece precisar rever alguns conceitos básicos. Seu código está confuso, e se beneficiaria de muitas alterações. Para o que você quer fazer, está dando um passo maior do que parece estar preparado para dar.

Você diz que é iniciante e quer tentar fazer algo que pode ser razoavelmente complexo, e isso que você nem está trabalhando num de um jogo que funciona em tempo real, o que exigiria os conceitos que o Mint citou (game loop, timer, etc).

Abraço.

tenho conhecido básico em game engines, isso são pra jogos grandes
eu já usei unity 3d e game maker studio.
achei bem fácil game maker studio aceita vários tipos de linguagem tudo misturado mesmo assim funciona no game maker studio já no unity 3d achei difícil e usei outros game engines q não precisa programa só pra olhar msm

Não entendi o problema. StackOverflow só tem americano ou pessoas de um país com inglês nativo?
Aproveite a oportunidade pra exercitar hehehe

O problema nao é com nacionalidade mas sim com idiomas.

Da mesma forma como você deve usar inglês no StackOverflow, nao faz sentido usar outros idiomas que nao o português no GUJ.
Como diz no artigo, quem pergunta deve fazer esforço para ser entendido e nao jogar esse esforço para quem está disposto a ajudar.

De qualquer jeito, o autor do tópico já respondeu que foi apenas um engano, entao imagino nao ter problema nenhum com isso.

Não necessariamente, é uma questão de disponibilidade. Normalmente não existe suporte disponível para isso na linguagem, então as pessoas usam uma game engine que obviamente tem que suportar jogos grandes.

Hahaha não deste jeito eu digo. A teoria por tras da game engine! Como o processo de renderização ocorre, callbacks e etc