1. java
  2. android
  3. c#
  4. .net
  5. javascript
  6. php
  7. jquery
  8. html
  9. sql

dúvida de POO em um jogo

Olá, eu estou tentando programar um joguinho de guerra de tanks (parecido com batle city). Para entender meu problema por favor deem uma rápida olhada na classe a seguir, que presenta os tiros dos tanks:

(retirei as partes irrelevantes do código)


public class Bullet {

    //RED BULLETS
    BufferedImage imgUpRed;
    BufferedImage imgLeftRed;
    BufferedImage imgDownRed;
    BufferedImage imgRightRed;
    BufferedImage imgUpLeftRed;
    BufferedImage imgUpRightRed;
    BufferedImage imgDownLeftRed;
    BufferedImage imgDownRightRed;
    //BLUE BULLETS
    BufferedImage imgUpBlue;
    BufferedImage imgLeftBlue;
    BufferedImage imgDownBlue;
    BufferedImage imgRightBlue;
    BufferedImage imgUpLeftBlue;
    BufferedImage imgUpRightBlue;
    BufferedImage imgDownLeftBlue;
    BufferedImage imgDownRightBlue;



    public Bullet(int x, int y, int speed, int direction) {

        load();
        this.direction = direction;
        setImgByDir();

    }

    public void load() {
        try {
            //BLUE BULLETS
            URL img = getClass().getResource("res/bullets/bullet1blue/imgUp.png");
            if (img == null) {
                System.out.println("erro em: imgUpBlue");
                System.exit(0);
            } else {
                imgUpBlue = ImageIO.read(img);
            }

            img = getClass().getResource("res/bullets/bullet1blue/imgLeft.png");
            if (img == null) {
                System.out.println("erro em: imgLeftBlue");
                System.exit(0);
            } else {
                imgLeftBlue = ImageIO.read(img);
            }

            img = getClass().getResource("res/bullets/bullet1blue/imgDown.png");
            if (img == null) {
                System.out.println("erro em: imgDownBlue");
                System.exit(0);
            } else {
                imgDownBlue = ImageIO.read(img);
            }


            ... assim respectivamente com as 16 imagens ...

        } catch (IOException ioe) {
            throw new RuntimeException(ioe);
        }
    }


}

Essa classe é instanciada toda vez que o jogador da um tiro, o objeto dela é jogado pra dentro de um ArrayList que é atributo da classe World que representa o mundo jogável. A classe World, a Player e a classe Bullet tem BufferedImages que são usadas para fazer a representação gráfica de objetos no jogo. Nessas 3 classes eu tenho um método chamado load(), onde eu carrego as imagens do projeto para os atributos das classes.

Porém a classe Bullet se difere das outras duas por não ser instanciada uma vez só e também porque suas instancias são deletadas assim que a bala saí do campo de visão. Isso faz com que toda vez que eu dê um tiro eu tenha que dar load nas imagens em vez de o fazer apenas um vez e esse load() a cada tiro está causando uma queda de fps.

A solução que eu encontrei foi carregar as imagens das balas no load do player e ao instanciar uma bala passar como parametro uma imagem, porém isso me pareceu muito enjambrado e desorganizado, espero que alguém possa me explicar qual seria maneira correta de dar load nas imagens das balas apenas uma vez. Agradeço desde já.

  • Porque não adotar outro paradigma, A certificação de metodologias ágeis como Scrum e em Java que nos auxiliam a lidar com a contínua expansão de nossa atividade faz parte de um processo de gerenciamento das posturas dos programadores lideres com relação às suas hierarquias. Porque você não baixa cocos2d ou Unity e tenta resolver Todas estas questões, devidamente ponderadas sobre os paradigmas, as dúvidas sobre se o julgamento imparcial das eventualidades afeta positivamente a correta previsão do levantamento das variáveis envolvidas.

    Tohka   12 de mar de 2015
  • Desculpa, não entendi nem 10% do que você escreveu.

    Tael Galli   12 de mar de 2015
  • esse cara bebe...

    Thomas Teixeira   12 de mar de 2015
  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do GUJ!

1 resposta

Não é a resposta que estava procurando? Procure outras perguntas com as tags java jogos orientação-a-objetos ou faça a sua própria pergunta.