Reputation: 9040
I'm attempting to make a sort of Space Invaders game in Java, starting with making a PNG spaceship move across the screen. It appears where it's supposed to, only it refuses to move. The program compiles fine and eclipse gives me no errors/warnings. Can anyone tell me what I'm doing wrong?
Here is my code:
import java.awt.*;
import java.net.*;
import java.awt.geom.*;
import java.applet.*;
import java.awt.event.*;
public class DrawImage extends Applet implements KeyListener{
private static final long serialVersionUID = 1L;
private Image image;
private int keycode;
AffineTransform identity = new AffineTransform();
private boolean keyleft = false;
private boolean keyright = false;
private URL getURL(String filename){
URL url = null;
try
{
url = this.getClass().getResource(filename);
}
catch(Exception e)
{
e.printStackTrace();
}
return url;
}
public void init()
{
image = getImage(getURL("spaceship.png"));
addKeyListener(this);
}
public void paint(Graphics g)
{
Graphics2D g2d = (Graphics2D)g;
//fill background with black
AffineTransform trans = new AffineTransform();
g2d.setColor(Color.GREEN);
g2d.fillRect(0,0,getSize().width,getSize().height);
g2d.drawImage(image,320,240,this);
trans.setTransform(identity);
if(keyright == true)
{
trans.translate(-10,0);
keyleft = false;
}
else if(keyleft == true)
{
trans.translate(10,0);
keyright = false;
}
}
public void keyPressed(KeyEvent e)
{
keycode = e.getKeyCode();
if(keycode == KeyEvent.VK_LEFT)
{
keyleft = true;
}
else if(keycode == KeyEvent.VK_RIGHT)
{
keyright = true;
}
repaint();
}
public void keyTyped(KeyEvent e){}
public void keyReleased(KeyEvent e){}
}
Upvotes: 0
Views: 485
Reputation: 4022
You should set the transform to your g2d in your paint() method:
g2d.setTransform(trans);
So the whole method then is:
public void paint(Graphics g)
{
Graphics2D g2d = (Graphics2D)g;
//fill background with black
AffineTransform trans = new AffineTransform();
g2d.setColor(Color.GREEN);
g2d.fillRect(0,0,getSize().width,getSize().height);
trans.setTransform(identity);
if(keyright == true)
{
trans.translate(-10,0);
keyleft = false;
}
else if(keyleft == true)
{
trans.translate(10,0);
keyright = false;
}
g2d.setTransform(trans);
g2d.drawImage(image,320,240,this);
}
Upvotes: 1