Sérgio Martins Posted October 18, 2016 at 04:52 AM Report #599680 Posted October 18, 2016 at 04:52 AM Bom dia pessoal, Estou com um problema em fazer um jogo básico em Java. O projecto contém dois ficheiros, 1 MainClass: import java.awt.*; import java.applet.*; //import java.awt.Graphics; public class MainClass extends Applet implements Runnable{ Thread thread = new Thread(this); boolean running=true; Player p; @Override public void init() { setSize(400,400); p = new Player(this); } @Override public void start(){thread.start();} @Override public void destroy(){running=false;} @Override public void stop(){running=false;} @Override public void run() { while(running) { repaint(); p.update(this); try { Thread.sleep(19); } catch (InterruptedException e) { System.out.print("ERROR HAS OCCURRED"); } } } @Override public void paint(Graphics g){ p.paint(g,this); } } E depois tenho outro ficheiro com o nome de Player que é onde está o meu problema: import java.awt.*; import java.awt.event.KeyEvent; import java.awt.event.KeyListener; import java.net.URL; import javax.imageio.ImageIO; import javax.rmi.CORBA.Util; public class Player implements KeyListener{ private int x=200; private int y=200; private int radius=20; private int velX=0; private int velY=0; private URL url; private Image Player; public Player (MainClass mc){ url=mc.getDocumentBase(); Player = mc.getImage(url,"Smiley-upset-3-icon.png");//importar a imagem que adicionei ao projecto } public void update(MainClass mc){ mc.addKeyListener(this); x+=velX; y+=velY; } public void paint(Graphics g, MainClass mc){ g.drawImage(Player, x, y, mc); g.drawImage(Player, x, y, mc); //declarar a variável referente à imagem com as variáveis dedirecção e a da class } @Override public void keyTyped(KeyEvent ke) { // throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. } @Override public void keyPressed(KeyEvent ke) { switch(ke.getKeyCode()){ case KeyEvent.VK_RIGHT:{ velX=5; break; } case KeyEvent.VK_LEFT:{ velX=-5; break; } case KeyEvent.VK_UP:{ velY=-5; break; } case KeyEvent.VK_DOWN:{ velY=5; break; } } } @Override public void keyReleased(KeyEvent ke) { switch(ke.getKeyCode()){ case KeyEvent.VK_RIGHT:{ velX=0; break; } case KeyEvent.VK_LEFT:{ velX=0; break; } case KeyEvent.VK_UP:{ velY=0; break; } case KeyEvent.VK_DOWN:{ velY=0; break; } } } } Ou seja, quando corro a MainClass deveria de me aparecer a imagem que declaro no ficheiro Player mas não aparece nada. Já exprime te com g.filloval (**,**,**) e funciona só que eu queria fazer tipo um packman ou coisa assim do género. Ok pessoal se alguém tiver ideias fico a aguardar. Grande abraço.
Andre Aguiar Posted November 7, 2016 at 01:27 PM Report #600216 Posted November 7, 2016 at 01:27 PM Em 18/10/2016 às 04:52, Sérgio Martins disse: Bom dia pessoal, Estou com um problema em fazer um jogo básico em Java. O projecto contém dois ficheiros, 1 MainClass: import java.awt.*; import java.applet.*; //import java.awt.Graphics; public class MainClass extends Applet implements Runnable{ Thread thread = new Thread(this); boolean running=true; Player p; @Override public void init() { setSize(400,400); p = new Player(this); } @Override public void start(){thread.start();} @Override public void destroy(){running=false;} @Override public void stop(){running=false;} @Override public void run() { while(running) { repaint(); p.update(this); try { Thread.sleep(19); } catch (InterruptedException e) { System.out.print("ERROR HAS OCCURRED"); } } } @Override public void paint(Graphics g){ p.paint(g,this); } } E depois tenho outro ficheiro com o nome de Player que é onde está o meu problema: import java.awt.*; import java.awt.event.KeyEvent; import java.awt.event.KeyListener; import java.net.URL; import javax.imageio.ImageIO; import javax.rmi.CORBA.Util; public class Player implements KeyListener{ private int x=200; private int y=200; private int radius=20; private int velX=0; private int velY=0; private URL url; private Image Player; public Player (MainClass mc){ url=mc.getDocumentBase(); Player = mc.getImage(url,"Smiley-upset-3-icon.png");//importar a imagem que adicionei ao projecto } public void update(MainClass mc){ mc.addKeyListener(this); x+=velX; y+=velY; } public void paint(Graphics g, MainClass mc){ g.drawImage(Player, x, y, mc); g.drawImage(Player, x, y, mc); //declarar a variável referente à imagem com as variáveis dedirecção e a da class } @Override public void keyTyped(KeyEvent ke) { // throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. } @Override public void keyPressed(KeyEvent ke) { switch(ke.getKeyCode()){ case KeyEvent.VK_RIGHT:{ velX=5; break; } case KeyEvent.VK_LEFT:{ velX=-5; break; } case KeyEvent.VK_UP:{ velY=-5; break; } case KeyEvent.VK_DOWN:{ velY=5; break; } } } @Override public void keyReleased(KeyEvent ke) { switch(ke.getKeyCode()){ case KeyEvent.VK_RIGHT:{ velX=0; break; } case KeyEvent.VK_LEFT:{ velX=0; break; } case KeyEvent.VK_UP:{ velY=0; break; } case KeyEvent.VK_DOWN:{ velY=0; break; } } } } Ou seja, quando corro a MainClass deveria de me aparecer a imagem que declaro no ficheiro Player mas não aparece nada. Já exprime te com g.filloval (**,**,**) e funciona só que eu queria fazer tipo um packman ou coisa assim do género. Ok pessoal se alguém tiver ideias fico a aguardar. Grande abraço. Boas sou novo em java e não sei se vou ajudar, mas aqui vai acho que o Player devia passar a player e certifica se a localização do ficheiro de imagem está certa
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now