[Aberto] Grade 2D em Java - como fazer?  XML
Índice dos Fóruns » Interface Gráfica
Autor Mensagem
GustavoBorba
JavaChild

Membro desde: 23/11/2009 19:23:23
Mensagens: 110
Offline

Olá, comunidade do GUJ.

Estou enfrentando um problema. Eu estou tentando criar uma grade. Uma simples grade, onde um jogo se basearia, em que o personagem pudesse se movimentar em cada quadrado da grade. a parte do movimento eu sei fazer. Mas o meu problema realmente é a grade. Pensei em usar GridLayout, mas isso iria sobrecarregar o aplicativo com tantos paineis ou botões para cada quadrado (pois estou pensando em uma grade 100x100). Pensei em uma tabela mas isso seria estranho e logo desisti da ideia. Ao meu ver a melhor opção seria desenhar linhas com um objeto Graphics, mas isso seria um pouco trabalhoso e não sei como recuperar a posição do jogador, porém não prejudicaria meu desempenho. Gostaria de saber se alguém poderia me confirmar se eu devo usar o modo de desenhar linhas com o objeto Graphics. E, se há alguma maneira mais fácil do que as que comentei aqui sobre como desenhar uma grade 2D em java.


Grato desde já, Gustavo Borba.

This message was edited 2 times. Last update was at 12/01/2011 16:26:38

Daniels
JavaGuru

Membro desde: 25/07/2008 14:19:39
Mensagens: 218
Offline

GustavoBorba wrote: Pensei em uma tabela mas isso seria estranho e logo desisti da ideia


Podes usar JTable tranquilamente. Fiz um jogo de ludo no terceiro semestre da faculdade usando JTable e não tive problemas. O que terias que ver era a complexidade e tal, porque são várias classes para se manipular, não é só a JTable em si.

Se não se importares de ver um código da minha época de iniciante, eu posto o jogo aqui
GustavoBorba
JavaChild

Membro desde: 23/11/2009 19:23:23
Mensagens: 110
Offline

Opa, cara! Seria ótimo se você postasse o código aqui ou me passase por mensagem privado, como tu achares melhor. Se possível, passe somente a parte em que você cria a grade. É possível saber em que célula o usuário clicou?

This message was edited 1 time. Last update was at 11/01/2011 23:12:34

HumbertoJr
JavaBaby
[Avatar]
Membro desde: 17/01/2004 20:15:38
Mensagens: 77
Offline

Daniels wrote:
GustavoBorba wrote: Pensei em uma tabela mas isso seria estranho e logo desisti da ideia


Podes usar JTable tranquilamente. Fiz um jogo de ludo no terceiro semestre da faculdade usando JTable e não tive problemas. O que terias que ver era a complexidade e tal, porque são várias classes para se manipular, não é só a JTable em si.

Se não se importares de ver um código da minha época de iniciante, eu posto o jogo aqui


Por favor disponibilize sim o código.
Até eu fiquei curioso , vai servir pra quem tiver iniciando e puder usar tua solução em outros problemas...
Daniels
JavaGuru

Membro desde: 25/07/2008 14:19:39
Mensagens: 218
Offline

Segue o jogo em anexo
 Nome do arquivo JLudo.rar [Disk] Download
 Descrição
 Tamanho 101 Kbytes
 Baixado:  48 vez(es)

This message was edited 2 times. Last update was at 12/01/2011 06:50:53

GustavoBorba
JavaChild

Membro desde: 23/11/2009 19:23:23
Mensagens: 110
Offline

Não sei se isso ajuda, mas eu criei minha própria versão, se alguém quiser. É uma classe bem simples, coloquei até os imports:



Eu estou instanciando essa classe no meu JFrame assim (lembrando que esta minha classe é uma subclasse de um JFrame):



Só tenho um problema, eu queria que uma matriz bidimensional de booleanos se referissem as posições na grade. como por exemplo grade[0][0] = true; significa que ela está ocupada, e por isso no método paintComponent, a célula 0, 0 fosse pintada de branco. em como fazer isso?

This message was edited 1 time. Last update was at 12/01/2011 16:29:32

Marky.Vasconcelos
Moderador
[Avatar]

Membro desde: 11/04/2007 18:18:20
Mensagens: 5932
Localização: São Paulo/SP
Offline

Duas coisas.
1° - Não desenhe nesse Graphics diretamente, crie uma copia.

2° - Sempre chame super.paintComponent, ele é responsavel por limpar a area e ainda pintar a borda e essas coisas.

Seu código seria o seguinte:



Facebook @MarkyHitchhiker +Mark WP: MarkyTech's

Projects:
Android Roadmap - Aprenda Android do inicio (Java é o unico pre-requisito)
Towel ( ObjectTableModel & Swing & Utils )
Tower Defense Game - Java2D [Open-Source] [How-to-play]
EVGD: Programação de jogos (links) Ponto V! - Desenvolvimento de jogos para indies, curiosos e profissionais

DefaultTableModel?! PARE! Não faça isso! Faça melhor!

Dicas: Faça perguntas inteligentes! ; MigLayout ; GridBagLayout (Joke)

Develop games is fantastic, with words you can make worlds!!!

DON'T PANIC!
MarkyHitchhiker's Blog!
[WWW] [MSN]
GustavoBorba
JavaChild

Membro desde: 23/11/2009 19:23:23
Mensagens: 110
Offline

Opa, valeu Marky!

Mas, você tem alguma ideia de como eu poderia relacionar uma matriz de booleanos que armazena a condição da célula (se ela está ocupado ou não) com essa grade feita com o objeto Graphics2D?

Grato desde já, Gustavo Borba.
Marky.Vasconcelos
Moderador
[Avatar]

Membro desde: 11/04/2007 18:18:20
Mensagens: 5932
Localização: São Paulo/SP
Offline

Um pouco de lógica, uma matriz booleana tem o mesmo formato que sua grade, basta pensar um pouco.

Facebook @MarkyHitchhiker +Mark WP: MarkyTech's

Projects:
Android Roadmap - Aprenda Android do inicio (Java é o unico pre-requisito)
Towel ( ObjectTableModel & Swing & Utils )
Tower Defense Game - Java2D [Open-Source] [How-to-play]
EVGD: Programação de jogos (links) Ponto V! - Desenvolvimento de jogos para indies, curiosos e profissionais

DefaultTableModel?! PARE! Não faça isso! Faça melhor!

Dicas: Faça perguntas inteligentes! ; MigLayout ; GridBagLayout (Joke)

Develop games is fantastic, with words you can make worlds!!!

DON'T PANIC!
MarkyHitchhiker's Blog!
[WWW] [MSN]
 
Índice dos Fóruns » Interface Gráfica
Ir para:   
Powered by JForum 2.1.8 © JForum Team