Ajuda com Cenário para criação de jogos 2d em Java

Fala galera,
Gostaria de saber como que eu faço pra programar um cenário em java. Quero fazer usando um .txt, ou .scn onde cada numero que eu colocar seja um “Tile” na tela. Exemplo:
3 3 3 3 3 3 3 3 3 3
3 3 3 3 3 3 3 3 3 3
1 1 1 1 1 1 1 1 1 1
1 2 2 2 1 1 2 2 2 1
1 1 1 1 1 1 1 1 1 1
3 3 3 3 3 3 3 3 3 3
3 3 3 3 3 3 3 3 3 3
Onde: 0 = nada | 1 = Pista | 2 = Linha da pista | 3 = Grama | …

O que eu queria saber é como transformar isso em código para que pinte na tela de acordo com o que eu escrever nesse txt…

O que você quer envolve uma série de etapas, o que dificulta uma resposta completa.

Qual a sua dificuldade em específico? Ler o arquivo? Armazenar o que foi lido? Converter esses números em tiles?

Abraço.

O pior é que é que essas etapas que vc falou são justamente o que eu nao sei fazer, eu consigo desenvolver jogos em 2d, mas é com o java.awt.Graphics, porém dessa maneira que coloquei no tópico eu só sei que vou precisar das imagens dos tiles e de um arquivo de texto com a posição dos tiles… fora isso não sei como fazer… Eu nao sei como ler o arquivo, nao sei como armazenar o que foi lido, nem sei converter esses números em tiles. Se puder ajudar, ou puder me dizer alguma coisa que possa estudar pra que entenda como fazer, ficaria grato. Abraço.

Vou te dar uma resposta superficial, pra você pesquisar e tentar implementar por conta própria.

Ler arquivos de texto em Java: Arquivo File

Quando você ler uma linha, terá algo como:

variavelString = " 3 3 3 3 3 3 3 3 3 3";

Como você precisa de cada número individualmente, pode usar o método split da classe String e separa por espaço. Pra armazenar esses números, você pode usar um List/ArrayList.

A “conversão” de números em “tiles” fica por sua conta. Mas inicialmente: o que é um tile no seu programa? É um retângulo de AxB pixels? (sendo A e B números inteiros). Se sim, você pode criar uma classe Tile e uma subclasse para cada tipo de tile, herdando dessa classe pai. Adicione um método desenhar (por exemplo) nessa classe e passe um objeto Graphics (ou Graphics2D) para desenhar o tile.

Para transformar um número (1, 2 ou 3, por exemplo) num tile, pode fazer um laço sobre o seu List e adicionar o elemento correspondente num segundo List, que conterá os tiles. Não precisa ser nada complexo, pode ser uma sequência de ifs ou um switch.

Quando for desenhar a tela, você vai percorrer esse List de Tiles, chamando o método desenhar de cada Tile.

Recomendo usar Java2D ao invés de awt.graphics. Leia também: http://www.pontov.com.br/site/java/48-java2d

Abraço.

1 curtida