User talk:Techno936
From GPWiki
The wiki is now hosted by GameDev.NET at wiki.gamedev.net. All gpwiki.org content has been moved to the new server. However, the GPWiki forums are still active! Come say hello.
import java.awt.*;
import java.awt.event.*;
import javax.swing.ImageIcon;
import javax.swing.*;
import java.awt.geom.AffineTransform;
public class PacTest2 extends JFrame implements KeyListener
{
public static void main(String args[])
{
PacTest2 test = new PacTest2();
test.run();
}
private ScreenManager screen;
private Image bgImage;
private Sprite sprite;
boolean playing;
byte facing;
public PacTest2()
{
facing=1;
playing=true;
}
public void loadImages()
{
// load images
bgImage = loadImage("C:/Documents and Settings/Josh Jach/Desktop/allsrc/MyProjects/PacTest/src/Images/background.jpg");
Image player1 = loadImage("C:/Documents and Settings/Josh Jach/Desktop/allsrc/MyProjects/PacTest/src/Images/man1.png");
Image player2 = loadImage("C:/Documents and Settings/Josh Jach/Desktop/allsrc/MyProjects/PacTest/src/Images/man2.png");
// create sprite
Animation anim = new Animation();
anim.addFrame(player1, 500);
anim.addFrame(player2, 150);
anim.addFrame(player1, 150);
anim.addFrame(player2, 150);
anim.addFrame(player2, 150);
sprite = new Sprite(anim);
}
private Image loadImage(String fileName)
{
return new ImageIcon(fileName).getImage();
}
public void run()
{
screen = new ScreenManager();
try {
DisplayMode displayMode=new DisplayMode(1024,768,32,85);
screen.setFullScreen(displayMode);
Window window=screen.getFullScreenWindow();
window.setFocusTraversalKeysEnabled(false);
window.addKeyListener(this);
loadImages();
long startTime = System.currentTimeMillis();
long currTime = startTime;
while(playing)
{
long elapsedTime = System.currentTimeMillis() - currTime;
currTime += elapsedTime;
// update the sprites
update(elapsedTime);
Graphics2D g = screen.getGraphics();
draw(g);
g.dispose();
screen.update();
}
}
finally {
screen.restoreScreen();
}
}
public void update(long elapsedTime)
{
// check sprite bounds
if (sprite.getX() < 0) {
sprite.setVelocityX(Math.abs(sprite.getVelocityX()));
}
else if (sprite.getX() + sprite.getWidth() >= screen.getWidth())
{
sprite.setVelocityX(-Math.abs(sprite.getVelocityX()));
}
if (sprite.getY() < 0) {
sprite.setVelocityY(Math.abs(sprite.getVelocityY()));
}
else if (sprite.getY() + sprite.getHeight() >= screen.getHeight())
{
sprite.setVelocityY(-Math.abs(sprite.getVelocityY()));
}
// update sprite
sprite.update(elapsedTime);
}
public void draw(Graphics2D g)
{
//draw background
for(int i=0;i<screen.getWidth()/bgImage.getWidth(null);i++)
for(int j=0;j<screen.getHeight()/bgImage.getHeight(null);j++)
g.drawImage(bgImage, bgImage.getWidth(null)*i, bgImage.getHeight(null)*j, null);
// draw sprite
AffineTransform transform=new AffineTransform();
switch(facing)
{
case 1:transform.translate(Math.round(sprite.getX()),Math.round(sprite.getY()));
break;
case 2:transform.translate(Math.round(sprite.getX()),Math.round(sprite.getY()));
transform.rotate(-90*Math.PI/180,sprite.getWidth()/2,sprite.getHeight()/2);
break;
case 3:transform.translate(Math.round(sprite.getX())+sprite.getWidth(),Math.round(sprite.getY()));
transform.scale(-1,1);
break;
case 4:transform.translate(Math.round(sprite.getX()),Math.round(sprite.getY()));
transform.rotate(90*Math.PI/180,sprite.getWidth()/2,sprite.getHeight()/2);
break;
default:break;
}
g.drawImage(sprite.getImage(), transform, null);
}
public void keyTyped(KeyEvent e)
{e.consume();}
//** Handle the key pressed event from the text field. *
public synchronized void keyPressed(KeyEvent e)
{
int keycode=e.getKeyCode();
screen = new ScreenManager();
if(keycode==KeyEvent.VK_Q)//exit fullscreen when Q is pressed
{
screen.restoreScreen();
playing=false;
}
else if(keycode==KeyEvent.VK_UP)
{
sprite.setVelocityY(-0.2f);
facing=2;
}
else if(keycode==KeyEvent.VK_DOWN)
{
sprite.setVelocityY(0.2f);
facing=4;
}
else if(keycode==KeyEvent.VK_LEFT)
{
sprite.setVelocityX(-0.2f);
facing=3;
}
else if(keycode==KeyEvent.VK_RIGHT)
{
sprite.setVelocityX(0.2f);
facing=1;
}
e.consume();
}
//** Handle the key released event from the text field. *
public synchronized void keyReleased(KeyEvent e)
{
int keycode=e.getKeyCode();
if(keycode==KeyEvent.VK_UP)
{
sprite.setVelocityY(0.0f);
}
else if(keycode==KeyEvent.VK_DOWN)
{
sprite.setVelocityY(0.0f);
}
else if(keycode==KeyEvent.VK_LEFT)
{
sprite.setVelocityX(0.0f);
}
else if(keycode==KeyEvent.VK_RIGHT)
{
sprite.setVelocityX(0.0f);
}
e.consume();
}
}
<\pre>
|


