Main.java
Posted in Java, on September 3, 2010 at 11:34
import java.awt.*;
import java.awt.event.KeyEvent;
import java.awt.image.*;
import javax.swing.*;

public class Main
{
    public JFrame app;
    public Canvas canvas;
    public boolean running;
    public Graphics graphics;
    public Graphics2D g2d;
    public Color background;
    public BufferStrategy buffer;
    public BufferedImage bi;
    public GraphicsEnvironment ge;
    public GraphicsDevice gd;
    public GraphicsConfiguration gc;
    public Keyboard keyboard;
    public Mouse mouse;
    public Sprite blacktower, whitetower;
    public final int Speed = 1;
    public boolean isCollide=false;

    public void init()
    {
        app = new JFrame("CwBunny");
        canvas = new Canvas();
        keyboard = new Keyboard();
        mouse = new Mouse(canvas);

        app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        app.setUndecorated(false);
        app.setSize(800, 600);
        
        app.addKeyListener(keyboard);
        canvas.addKeyListener(keyboard);
        canvas.addMouseListener(mouse);
        canvas.addMouseMotionListener(mouse);
                
        canvas.setSize(800, 600);
        app.add(canvas);
        app.pack();
        app.setVisible(true);

        canvas.createBufferStrategy(2);
        buffer = canvas.getBufferStrategy();

        ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
        gd = ge.getDefaultScreenDevice();
        gc = gd.getDefaultConfiguration();

        bi = gc.createCompatibleImage(800, 600);

        graphics = null;
        g2d = null;
        background = Color.BLACK;

        blacktower = new Sprite("blacktower.png", new Point(0,0));
        whitetower = new Sprite("whitetower.png", new Point(800,600));

        whitetower.Move(-whitetower.getSize().x, -whitetower.getSize().y, canvas);

        running = true;
    }

    public void keyboardProccess()
    {
        keyboard.pool();
        running = !keyboard.iskeyPressed(KeyEvent.VK_ESCAPE);
        if(!isCollide)
        {
            if(keyboard.iskeyPressed(KeyEvent.VK_UP))
                blacktower.Move(0, -Speed, canvas);
            if(keyboard.iskeyPressed(KeyEvent.VK_W))
                whitetower.Move(0, -Speed, canvas);
            if(keyboard.iskeyPressed(KeyEvent.VK_DOWN))
                blacktower.Move(0, Speed, canvas);
            if(keyboard.iskeyPressed(KeyEvent.VK_S))
                whitetower.Move(0, Speed, canvas);
            if(keyboard.iskeyPressed(KeyEvent.VK_LEFT))
                blacktower.Move(-Speed, 0, canvas);
            if(keyboard.iskeyPressed(KeyEvent.VK_A))
                whitetower.Move(-Speed, 0, canvas);
            if(keyboard.iskeyPressed(KeyEvent.VK_RIGHT))
                blacktower.Move(Speed, 0, canvas);
            if(keyboard.iskeyPressed(KeyEvent.VK_D))
                whitetower.Move(Speed, 0, canvas);
        }
        if(keyboard.iskeyPressed(KeyEvent.VK_R))
            Restart();
        isCollide = whitetower.isCollide(blacktower);
    }

    public void Restart()
    {
        this.whitetower.setPosition(new Point(800,600));
        this.blacktower.setPosition(new Point(0,0));
        whitetower.Move(-whitetower.getSize().x, -whitetower.getSize().y, canvas);
        this.isCollide=false;
    }

    public void gameLoop()
    {
        int fps = 0;
        int frames = 0;
        long totalTime = 0;
    	long curTime = System.currentTimeMillis();
   	long lastTime = curTime;

        while(running)
        {
            lastTime = curTime;
            curTime = System.currentTimeMillis();
            totalTime += curTime-lastTime;
            if(totalTime>1000)
            {
                totalTime -= 1000;
                fps = frames;
                frames = 0;
            }
            frames++;

            g2d = bi.createGraphics();
            g2d.setColor(background);
            g2d.fillRect(0, 0, app.getWidth(), app.getHeight());

            keyboardProccess();

            if(!isCollide)
            {
                g2d.drawImage(whitetower.getImage(), whitetower.getPosition().x,
                        whitetower.getPosition().y, null);

                g2d.drawImage(blacktower.getImage(), blacktower.getPosition().x,
                        blacktower.getPosition().y, null);
            }
            else
            {
                Rectangle r = new Rectangle(whitetower.getPosition(),
                        new Dimension(whitetower.getSize().x, whitetower.getSize().y));
                g2d.setColor(Color.blue);
                g2d.fill(r);

                g2d.setColor(Color.red);
                r = new Rectangle(blacktower.getPosition(),
                        new Dimension(blacktower.getSize().x,
                            blacktower.getSize().y));
                g2d.fill(r);
            }

            g2d.setFont(new Font("Courier New", Font.PLAIN, 12));
            g2d.setColor(Color.GREEN);
            if(isCollide)
                g2d.drawString("Çarpışma tespit edildi yeniden oynamak için r" +
                        "ye basınız", 20, 50);
            g2d.drawString("Fps:" + fps, 20, 20);

            mouse.poll();
            g2d.drawImage(mouse.getCursor(), mouse.getPosition().x,
                    mouse.getPosition().y, null);

            graphics = buffer.getDrawGraphics();
            graphics.drawImage(bi, 0, 0, null);

            if(!buffer.contentsLost())
                buffer.show();
        }
    }

    public void stop()
    {
        if(graphics!=null)graphics.dispose();
        if(g2d!=null)g2d.dispose();
        if(app!=null)
        {
            app.setVisible(false);
            app.dispose();
        }
        System.exit(0);
    }

    public static void main(String [] args)
    {
        Main m = new Main();
        m.init();
        m.gameLoop();
        m.stop();
    }
}

Share this code

| More

Use the link below to share the code:
HTML
BBCode