Ir ao conteúdo

Posts recomendados

Postado

Estou tendo um erro nesse código após fazer um segundo mapa para a próxima fase do jogo ele da erro após eu matar os inimigos da primeira fase para a cena atualizar para o novo jogo.

 

 

 

<>

package com.sunnystudios.main;
    import java.awt.Canvas;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.image.BufferStrategy;
import java.awt.image.BufferedImage;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;

import javax.swing.JFrame;

import com.sunnystudios.entities.BulletShoot;
import com.sunnystudios.entities.Enemy;
import com.sunnystudios.entities.Entity;
import com.sunnystudios.entities.Player;
import com.sunnystudios.graficos.Spritesheet;
import com.sunnystudios.graficos.UI;
import com.sunnystudios.world.Camera;
import com.sunnystudios.world.World;

    public class Game extends Canvas implements Runnable, KeyListener, MouseListener{
        
        private static final long serialVersionUID = 1L;
        public static JFrame frame;
        private Thread thread;
        private boolean isRunning = true;
        public static final int WIDHT = 320;
        public static final int HEIGHT = 160;
        public final int SCALE = 3;
        
        private int CUR_LEVEL = 1, MAX_LEVEL = 2;
        private BufferedImage image;
        
        public static List<Entity> entities;
        public static List<Enemy> enemies;
        public static List<BulletShoot> bullets;
        public static Spritesheet spritesheet;
        
        public static  World world;
        
        public static Player player;
        
        public static Random rand;
        
        public UI ui;
        
        public Game(){
            rand = new Random();
            addKeyListener(this);
            addMouseListener(this);
            setPreferredSize( new Dimension(WIDHT*SCALE, HEIGHT*SCALE));
            initFrame();
            //Inicializando objetos
            ui = new UI();
            image = new BufferedImage(WIDHT, HEIGHT, BufferedImage.TYPE_INT_RGB);
            entities = new ArrayList<Entity>();
            enemies = new ArrayList<Enemy>();
            bullets = new ArrayList<BulletShoot>();
            
            spritesheet = new Spritesheet("/spritesheet.png");
            player = new Player(0,0,16,16,spritesheet.getSprite(32, 0,16,16));
            entities.add(player);
            world = new World("/level1.png");
        }
        
            
        public void initFrame(){    
            
            frame = new JFrame("My First Game");
            frame.add(this);
            frame.setResizable(false);
            frame.pack();
            frame.setLocationRelativeTo(null);
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            frame.setVisible(true);
        }
        
        public synchronized void start(){
            thread = new Thread(this);
            isRunning = true;
            thread.start();
        }
        
        public synchronized void stop(){
            
            isRunning = false;
            try {
                thread.join();
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        
        }
        
        public static void main(String[] args){
            Game game = new Game();
            game.start();
        }
        
        public void tick(){
            
            for(int i = 0; i < entities.size(); i++) {
                Entity e = entities.get(i);
                if(e instanceof Player) {
                    //Estou dando tick no player
                }
                e.tick();
            }
            
            for(int i = 0; i < bullets.size(); i++){
                bullets.get(i).tick();
            }
            
            
            if(enemies.size() == 0) {
                //Avançar para o próximo level
                CUR_LEVEL++;
                if(CUR_LEVEL > MAX_LEVEL) {
                    CUR_LEVEL = 1;
                }
                String newWorld = "level"+CUR_LEVEL+".png";
                World.restartGame(newWorld);
            }
        }
        public void render(){
            BufferStrategy bs = this.getBufferStrategy();
            if(bs == null) {
                this.createBufferStrategy(3);
                return;
            }
            Graphics g = image.getGraphics();
            g.setColor(new Color(0, 0, 0));
            g.fillRect(0, 0, WIDHT, HEIGHT);
            
            /*Renderização do Jogo*/
            //Graphics2D g2 = (Graphics2D) g;
            world.render(g);
            for(int i = 0; i < entities.size(); i++) {
                Entity e = entities.get(i);
                e.render(g);
            }
            
            for(int i = 0; i < bullets.size(); i++){
                bullets.get(i).render(g);
            }
            
            ui.render(g);
            /***/
            g.dispose();
            g.setFont(new Font("Arial",Font.BOLD, 20));
            g.setColor(Color.WHITE);
            g.drawString("One Piece", 19, 19);
            g = bs.getDrawGraphics();
            g.drawImage(image, 0, 0, WIDHT*SCALE, HEIGHT*SCALE, null);
            g.setFont(new Font("arial", Font.BOLD,18));
            g.setColor(Color.white);
            g.drawString("Munição:"+ player.ammo, 800, 20);
            bs.show();
        }
        
        @Override
        public void run() {
            long lastTime = System.nanoTime();
            double amountOfTicks = 60.0;
            double ns = 1000000000 / amountOfTicks;
            double delta = 0;
            int frames = 0;
            double timer = System.currentTimeMillis();
            requestFocus();        
            while(isRunning){
                long now = System.nanoTime();
                delta+= (now - lastTime) / ns;
                lastTime = now;
                if(delta >= 1){
                    tick();
                    render();
                    frames ++;
                    delta --;
                }
                if(System.currentTimeMillis() - timer >= 1000){
                    System.out.println("FPS: "+ frames);
                    frames = 0;
                    timer+= 1000;
                }
            //stop();
            }
    }


        @Override
        public void keyPressed(KeyEvent e) {
            if(e.getKeyCode() == KeyEvent.VK_RIGHT ||
                    e.getKeyCode() == KeyEvent.VK_D) {
                player.right = true;
                
            }else if(e.getKeyCode() == KeyEvent.VK_LEFT ||
                    e.getKeyCode() == KeyEvent.VK_A){
                player.left = true;
            }
            
            if(e.getKeyCode() == KeyEvent.VK_UP ||
                    e.getKeyCode() == KeyEvent.VK_W){
                player.up = true;
                
            }else if(e.getKeyCode() == KeyEvent.VK_DOWN ||
                    e.getKeyCode() == KeyEvent.VK_S) {
                player.down = true;
            }
            
            if(e.getKeyCode() == KeyEvent.VK_X) {
                player.shoot = true;
            }
            
        }


        @Override
        public void keyTyped(KeyEvent e) {
            
        }


        @Override
        public void keyReleased(KeyEvent e) {
            if(e.getKeyCode() == KeyEvent.VK_RIGHT ||
                    e.getKeyCode() == KeyEvent.VK_D) {
                player.right = false;
                
            }else if(e.getKeyCode() == KeyEvent.VK_LEFT ||
                    e.getKeyCode() == KeyEvent.VK_A){
                player.left = false;
            }
            
            if(e.getKeyCode() == KeyEvent.VK_UP ||
                    e.getKeyCode() == KeyEvent.VK_W){
                player.up = false;
                
            }else if(e.getKeyCode() == KeyEvent.VK_DOWN ||
                    e.getKeyCode() == KeyEvent.VK_S) {
                player.down = false;
            }
        }


        @Override
        public void mouseClicked(MouseEvent arg0) {
            // TODO Auto-generated method stub
            
        }


        @Override
        public void mousePressed(MouseEvent e) {
           player.mouseShoot = true;
           player.mx = (e.getX() / 3);
           player.my = (e.getY() / 3);            
        }


        @Override
        public void mouseReleased(MouseEvent e) {
            // TODO Auto-generated method stub
            
        }


        @Override
        public void mouseEntered(MouseEvent arg0) {
            // TODO Auto-generated method stub
            
        }


        @Override
        public void mouseExited(MouseEvent arg0) {
            // TODO Auto-generated method stub
            
        }
        }

 

<>


 

  • 2 semanas depois...
Postado

Cara, infelizmente é muita pouca informação, pelo visto existe várias outras classes, apenas com essa classe não da pra saber ao certo. Precisaria debugar o código, qual mensagem de erro que aparece?

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!