engine <- (2D engine I'm working on)
package rand.LearningJava.Lagaan;
import java.awt.Graphics;
import java.awt.Graphics2D;
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.JComponent;
import javax.swing.JFrame;
public class engine {
public static void start(Game game) {
JFrame frame = new JFrame(game.getTitle());
frame.setSize(game.width(), game.height());
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
GameCanvas canvas = new GameCanvas(game);
frame.add(canvas);
frame.setVisible(true);
GameLoop loop = new GameLoop(game, canvas);
loop.start();
}
}
abstract class Game implements KeyListener, MouseListener, MouseMotionListener {
protected String title = "GameEngine";
protected int width = 640, height = 480, delay = 30;
protected boolean over;
public abstract void init();
public abstract void update();
public abstract void draw(Graphics2D g);
public String getTitle() {
return title;
}
public int width() {
return width;
}
public int height() {
return height;
}
public int getDelay() {
return delay;
}
public boolean isOver() {
return over;
}
@Override
public void keyPressed(KeyEvent e) {
}
@Override
public void keyTyped(KeyEvent e) {
}
@Override
public void keyReleased(KeyEvent e) {
}
@Override
public void mouseClicked(MouseEvent e) {
}
@Override
public void mousePressed(MouseEvent e) {
}
@Override
public void mouseReleased(MouseEvent e) {
}
@Override
public void mouseEntered(MouseEvent e) {
}
@Override
public void mouseExited(MouseEvent e) {
}
@Override
public void mouseDragged(MouseEvent e) {
}
@Override
public void mouseMoved(MouseEvent e) {
}
}
class GameCanvas extends JComponent {
private static final long serialVersionUID = 1L;
private final Game game;
public GameCanvas(Game game) {
this.game = game;
addKeyListener(this.game);
addMouseListener(this.game);
addMouseMotionListener(this.game);
requestFocus();
}
public void paintComponent(Graphics g) {
game.draw((Graphics2D) g);
}
}
class GameLoop extends Thread {
private final Game game;
private final GameCanvas canvas;
public GameLoop(Game game, GameCanvas canvas) {
this.game = game;
this.canvas = canvas;
}
public void run() {
game.init();
while (!game.isOver()) {
game.update();
canvas.repaint();
try {
Thread.sleep(game.getDelay());
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
gameTest <- (Actual game)
package rand.LearningJava.Lagaan;
import java.awt.Graphics2D;
import java.awt.event.KeyEvent;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
public class gameTest extends Game {
public static final void main(String[] args) {
engine.start(new gameTest());
}
public BufferedImage player;
final int STEP = 1;
int frame, x = 100, y = 100, dir;
public gameTest() {
title = "gameTest";
frame = 0;
dir = KeyEvent.VK_DOWN;
try {
player = ImageIO.read(new File("images/FinalFantasy3BlueKnight.png"));
} catch (IOException e) {
e.printStackTrace();
}
}
@Override
public void init() {
}
@Override
public void keyPressed(KeyEvent e) {
dir = e.getKeyCode();
}
@Override
public void update() {
frame++;
if (frame > 1) {
frame = 0;
}
switch (dir) {
case KeyEvent.KEY_RELEASED:
x += 0;
y += 0;
break;
case KeyEvent.VK_A: //LEFT
x -= STEP;
break;
case KeyEvent.VK_RIGHT: //RIGHT
x += STEP;
break;
case KeyEvent.VK_UP: //UP
y -= STEP;
break;
case KeyEvent.VK_DOWN: //DOWN
y += STEP;
}
}
@Override
public void draw(Graphics2D g) {
g.drawImage(player.getSubimage(frame*16, 32, 16, 16), x, y, null);
}
}

New Topic/Question
Reply



MultiQuote





|