Hallo, ik heb nadat ik alle code naar verschillende classes(Voor players etc) heb gedaan,
krijg ik een NullException error
Ik heb gezocht waar het kon zijn maar heb het echt niet kunnen vinden.
Wie vind de fout? :|
Het spel werkt verder wel op me PC, maar ik vindt de fout niet, en voordat anderen het niet kunnen spelen, wil ik de fout wel oplossen :/
De images laden btw ook, dus dat is niet de fout
De error(Ik ben ook al naar de lines geweest waar hij die error geeft, maar zag niks vreemds)
In de GameEngine class heb ik voor jullie ff neergezet waar die line 49 is!
GameEngine.java:
Player.java:
Loader.java:
Groeten Bas
krijg ik een NullException error

Ik heb gezocht waar het kon zijn maar heb het echt niet kunnen vinden.
Wie vind de fout? :|
Het spel werkt verder wel op me PC, maar ik vindt de fout niet, en voordat anderen het niet kunnen spelen, wil ik de fout wel oplossen :/
De images laden btw ook, dus dat is niet de fout

De error(Ik ben ook al naar de lines geweest waar hij die error geeft, maar zag niks vreemds)
In de GameEngine class heb ik voor jullie ff neergezet waar die line 49 is!
Code:
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at Topdown.GameEngine.paint(GameEngine.java:49)
at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:751)
at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:696)
at javax.swing.RepaintManager.prePaintDirtyRegions(RepaintManager.java:676)
at javax.swing.RepaintManager.access$700(RepaintManager.java:57)
at javax.swing.RepaintManager$ProcessingRunnable.run(RepaintManager.java:1550)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:226)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:602)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:275)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:200)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:190)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:185)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:177)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:138)
GameEngine.java:
Code:
package Topdown;
import java.applet.AudioClip;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;
import javax.swing.JFrame;
public class GameEngine extends JFrame implements KeyListener, MouseListener, MouseMotionListener{
private static final long serialVersionUID = 1L;
private Graphics graphics;
private Image image;
private Image background;
private AudioClip shoot;
private Player OPlayer;
public int mouseX = 0;
public int mouseY = 0;
private Image character;
public GameEngine(){
setTitle("Topdown Zombie Shooter");
setDefaultCloseOperation(EXIT_ON_CLOSE);
setSize(640, 480);
setResizable(false);
setBackground(Color.BLACK);
setVisible(true);
addKeyListener(this);
addMouseListener(this);
addMouseMotionListener(this);
background = Loader.LoadImage("Grass.png");
shoot = Loader.LoadSound("Shoot.wav");
character = Loader.LoadImage("Player.png");
OPlayer = new Player(character);
}
public void paint(Graphics g){
image = createImage(640, 480);
graphics = image.getGraphics();
graphics.drawImage(background, 0, 0, null);
/*----------> LINE 49!!!*/OPlayer.DrawPlayer(graphics);
OPlayer.Update(mouseY, mouseX);
g.drawImage(image, 1, 29, null);
repaint();
}
public static void main(String[] args){
new GameEngine();
}
@Override
public void keyPressed(KeyEvent e) {
if(e.getKeyCode() == KeyEvent.VK_W){
OPlayer.moveUp = true;
}
if(e.getKeyCode() == KeyEvent.VK_S){
OPlayer.moveDown = true;
}
if(e.getKeyCode() == KeyEvent.VK_A){
OPlayer.moveLeft = true;
}
if(e.getKeyCode() == KeyEvent.VK_D){
OPlayer.moveRight = true;
}
}
@Override
public void keyReleased(KeyEvent e) {
if(e.getKeyCode() == KeyEvent.VK_W){
OPlayer.moveUp = false;
}
if(e.getKeyCode() == KeyEvent.VK_S){
OPlayer.moveDown = false;
}
if(e.getKeyCode() == KeyEvent.VK_A){
OPlayer.moveLeft = false;
}
if(e.getKeyCode() == KeyEvent.VK_D){
OPlayer.moveRight = false;
}
}
@Override
public void keyTyped(KeyEvent e) {
;
}
@Override
public void mouseClicked(MouseEvent m) {
;
}
@Override
public void mouseEntered(MouseEvent m) {
;
}
@Override
public void mouseExited(MouseEvent m) {
;
}
@Override
public void mousePressed(MouseEvent m) {
if (m.getButton() == MouseEvent.BUTTON1){
shoot.play();
}
}
@Override
public void mouseReleased(MouseEvent m) {
;
}
@Override
public void mouseDragged(MouseEvent e) {
mouseX = e.getX();
mouseY = e.getY();
}
@Override
public void mouseMoved(MouseEvent e) {
mouseX = e.getX();
mouseY = e.getY();
}
}
Player.java:
Code:
package Topdown;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.geom.AffineTransform;
import java.awt.image.*;
public class Player {
private double direction = 0;
private Image image;
private BufferedImage playerdirection;
public boolean moveLeft;
public boolean moveRight;
public boolean moveUp;
public boolean moveDown;
private double x = 320-16;
private double y = 240-16;
public Player(Image fil){
image = fil;
}
public void Update(int my, int mx){
direction = 180+Math.atan2(y+64-my,x+32-mx)*180.0/Math.PI;
if(moveDown == true){
y += 0.5;
}
if(moveRight == true){
x += 0.5;
}
if(moveLeft == true){
x -= 0.5;
}
if(moveUp == true){
y -= 0.5;
}
}
public void DrawPlayer(Graphics g){
playerdirection = new BufferedImage(64, 64, BufferedImage.TYPE_INT_ARGB);
Graphics p = playerdirection.getGraphics();
p.drawImage(image, 16, 16, null);
AffineTransform rot = new AffineTransform();
rot.rotate(Math.toRadians(direction), 32, 32);
AffineTransformOp fix = new AffineTransformOp(rot, AffineTransformOp.TYPE_NEAREST_NEIGHBOR);
playerdirection = fix.filter(playerdirection, null);
g.drawImage(playerdirection, (int) x, (int) y, null);
}
public int CenterX(){
return (int) x+32;
}
public int CenterY(){
return (int) y+64;
}
}
Loader.java:
Code:
package Topdown;
import java.applet.AudioClip;
import java.awt.Image;
import java.awt.Toolkit;
final class Loader {
static Image LoadImage(String img){
return Toolkit.getDefaultToolkit().getImage(Thread.currentThread().getContextClassLoader().getResource(img));
}
static AudioClip LoadSound(String snd){
return java.applet.Applet.newAudioClip(Thread.currentThread().getContextClassLoader().getResource(snd));
}
}
Groeten Bas

Laatst bewerkt: