Ir ao conteúdo
  • Cadastre-se

Nicolas Ryan Oliveira Da S

Membro Júnior
  • Posts

    3
  • Cadastrado em

  • Última visita

Tudo que Nicolas Ryan Oliveira Da S postou

  1. 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. Este meu código está me dando erro em 3 linhas mas não consigo resolvé-lo se algúem puder me ajudar agradeço muito. Estes são os erros que estão me dando: at com.sunnystudios.main.Game.tick(Game.java:93) at com.sunnystudios.main.Game.run(Game.java:139) at java.base/java.lang.Thread.run(Thread.java:832) package com.sunnystudios.world; import java.awt.Graphics; import java.awt.image.BufferedImage; import java.io.IOException; import javax.imageio.ImageIO; import com.sunnystudios.entities.*; import com.sunnystudios.main.Game; public class World { public static Tile[] tiles; public static int WIDTH, HEIGHT; public static final int TILE_SIZE = 16; public World(String path) { try { BufferedImage map = ImageIO.read(getClass().getResource(path)); int[] pixels = new int[map.getWidth() * map.getHeight()]; WIDTH = map.getWidth(); HEIGHT = map.getHeight(); tiles = new Tile[map.getWidth() * map.getHeight()]; map.getRGB(0, 0,map.getWidth(), map.getHeight(), pixels, 0, map.getWidth()); for(int xx = 0; xx < map.getWidth(); xx++){ for(int yy = 0; yy < map.getHeight(); yy++){ int pixelAtual = pixels[xx + (yy * map.getWidth())]; tiles[xx +(yy * WIDTH)] = new FloorTile(xx*16,yy*16,Tile.TILE_FLOOR); if(pixelAtual == 0xFF000000){ //Floor tiles[xx +(yy * WIDTH)] = new FloorTile(xx*16,yy*16,Tile.TILE_FLOOR); }else if( pixelAtual == 0xFFFFFFFF) { //Parede tiles[xx +(yy * WIDTH)] = new WallTile(xx*16,yy*16,Tile.TILE_WALL); }else if(pixelAtual == 0xFF382DFF) { //Player Game.player.setX(xx*16); Game.player.setY(yy*16); }else if(pixelAtual == 0xFFFF0000){ //Enemy Game.entities.add(new Enemy(xx*16, yy*16, 16, 16, Entity.ENEMY_EN)); }else if(pixelAtual == 0xFF57007F) { //Weapon Game.entities.add(new Weapon(xx*16, yy*16, 16, 16, Entity.WEAPON_EN)); }else if(pixelAtual == 0xFF00FF21) { //Life Pack Game.entities.add(new Lifepack(xx*16, yy*16, 16, 16, Entity.LIFEPACK_EN)); }else if(pixelAtual == 0xFFFF6A00) { //Bullet Game.entities.add(new Bullet(xx*16, yy*16, 16, 16, Entity.BULLET_EN)); } } } } catch (IOException e) { e.printStackTrace(); } } public static boolean isFree(int xnext, int ynext) { int x1 = xnext / TILE_SIZE; int y1 = ynext / TILE_SIZE; int x2 = (xnext+ TILE_SIZE) - 1 / TILE_SIZE; int y2 = ynext / TILE_SIZE; int x3 = xnext/ TILE_SIZE; int y3 = (ynext + TILE_SIZE) - 1 / TILE_SIZE; int x4 = (xnext + TILE_SIZE) - 1 / TILE_SIZE; int y4 = (ynext + TILE_SIZE) - 1 / TILE_SIZE; return !((tiles[x1 +(y1*World.WIDTH)] instanceof WallTile) || (tiles[x2 +(y2*World.WIDTH)] instanceof WallTile) || (tiles[x3 +(y3*World.WIDTH)] instanceof WallTile) || (tiles[x4 +(y4*World.WIDTH)] instanceof WallTile)); } public void render(Graphics g) { int xstart = Camera.x >> 4; int ystart = Camera.y >> 4; int xfinal = xstart + (Game.WIDHT >> 4); int yfinal = ystart + (Game.HEIGHT >> 4); for(int xx = xstart; xx <= xfinal; xx++) { for(int yy = ystart; yy <= yfinal; yy++) { if(xx < 0 || yy < 0 || xx >= WIDTH || yy >= HEIGHT) continue; Tile tile = tiles[xx +(yy*WIDTH)]; tile.render(g); } } } }

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!