Jump to content

Recommended Posts

Posted

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. 

  • 3 weeks later...
Posted
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

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.