Skip to Main Content

Java Programming

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

Interested in getting your voice heard by members of the Developer Marketing team at Oracle? Check out this post for AppDev or this post for AI focus group information.

GetGraphics() in Java Application

PandaStyleSep 3 2017 — edited Sep 4 2017

Hey Guys,

I am trying to better myself in Java. So i basically porgrammed the snake game as an applet and transfered it to an application just to understand the differences between applets and applications. I manage now to do the change from applet to application but now i have a nullpointerexception at the line where I call getGraphics();

So you can see and understand better what i mean i have copied my come code here.

import java.awt.Color;

import java.awt.FlowLayout;

import java.awt.Frame;

import java.awt.Graphics;

import java.awt.Image;

import java.awt.event.KeyEvent;

import java.awt.event.KeyListener;

import java.awt.event.WindowEvent;

import java.awt.event.WindowListener;

public class SnakeGame extends Frame implements WindowListener, Runnable, KeyListener {

/**

*

*/

private static final long serialVersionUID = 1L;

Graphics gfx;

Image img;

Thread thread;

Snake snake;

Token token;

boolean gameOver;

public static void main(String[] args){

SnakeGame sg = new SnakeGame();

sg.setSize(400, 400);

sg.setVisible(true);

sg.setLayout(new FlowLayout());

sg.setResizable(false);

}

public SnakeGame() {

this.resize(400, 400);

gameOver = false;

img = createImage(400, 400);

gfx = img.getGraphics();

this.addKeyListener(this);

this.addWindowListener(this);

snake = new Snake();

token = new Token(snake);

thread = new Thread(this);

thread.start();

}

public void paint(Graphics g){

gfx.setColor(Color.black);

gfx.fillRect(0, 0, 400, 400);

if(!gameOver){

snake.draw(gfx);

token.draw(gfx);

gfx.drawString("Score " + token.getScore(), 2, 12);

}

else{

gfx.setColor(Color.red);

gfx.drawString("Game Over", 180, 150);

gfx.drawString("Score: " + token.getScore(), 180, 170);

}

g.drawImage(img, 0, 0, null);

}

public void update(Graphics g) {

paint(g);

}

public void repaint(Graphics g) {

paint(g);

}

public void run() {

for (;;) {

if (!gameOver) {

snake.move();

this.checkGameOver();

token.snakeCollision();

}

this.repaint();

try {

Thread.sleep(40);

} catch (InterruptedException e) {

e.printStackTrace();

}

}

}

public void checkGameOver() {

if (snake.getX() < 0 || snake.getX() > 396) {

gameOver = true;

}

if (snake.getY() < 0 || snake.getY() > 396) {

gameOver = true;

}

if (snake.snakeCollision()) {

gameOver = true;

}

}

public void keyTyped(KeyEvent e) {

}

public void keyPressed(KeyEvent e) {

if (!snake.isMoving()) {

if (e.getKeyCode() == KeyEvent.VK_UP || e.getKeyCode() == KeyEvent.VK_RIGHT

|| e.getKeyCode() == KeyEvent.VK_DOWN) {

snake.setIsMoving(true);

}

}

if (e.getKeyCode() == KeyEvent.VK_UP) {

if (snake.getYDir() != 1) {

snake.setYDir(-1);

snake.setXDir(0);

}

}

if (e.getKeyCode() == KeyEvent.VK_DOWN) {

if (snake.getYDir() != -1) {

snake.setYDir(1);

snake.setXDir(0);

}

}

if (e.getKeyCode() == KeyEvent.VK_LEFT) {

if (snake.getXDir() != 1) {

snake.setXDir(-1);

snake.setYDir(0);

}

}

if (e.getKeyCode() == KeyEvent.VK_RIGHT) {

if (snake.getXDir() != -1) {

snake.setXDir(1);

snake.setYDir(0);

}

}

}

public void keyReleased(KeyEvent e) {

}

@Override

public void windowOpened(WindowEvent e) {

// TODO Auto-generated method stub

}

@Override

public void windowClosing(WindowEvent e) {

dispose();

System.exit(0);

}

@Override

public void windowClosed(WindowEvent e) {

// TODO Auto-generated method stub

}

@Override

public void windowIconified(WindowEvent e) {

// TODO Auto-generated method stub

}

@Override

public void windowDeiconified(WindowEvent e) {

// TODO Auto-generated method stub

}

@Override

public void windowActivated(WindowEvent e) {

// TODO Auto-generated method stub

}

@Override

public void windowDeactivated(WindowEvent e) {

// TODO Auto-generated method stub

}

}

I hope you guys can help me and tell me where my error is.

Thanx in Advance,

Ricci

Comments

Locked Post
New comments cannot be posted to this locked post.

Post Details

Locked on Oct 2 2017
Added on Sep 3 2017
1 comment
731 views