Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.awt.Canvas;
- import java.awt.Color;
- import java.awt.Dimension;
- import java.awt.Graphics;
- import java.awt.Graphics2D;
- import java.awt.GraphicsConfiguration;
- import java.awt.GraphicsEnvironment;
- import java.awt.Image;
- import java.awt.Toolkit;
- import java.awt.Transparency;
- import java.awt.event.KeyEvent;
- import java.awt.event.KeyListener;
- import java.awt.event.WindowAdapter;
- import java.awt.event.WindowEvent;
- import java.awt.image.BufferStrategy;
- import java.awt.image.BufferedImage;
- import java.awt.image.MemoryImageSource;
- import java.net.URL;
- import javax.swing.ImageIcon;
- import javax.swing.JFrame;
- import javax.swing.JPanel;
- //****************************************************************************
- //
- //
- //
- //****************************************************************************
- class Constants
- {
- public static final double FIXED_TIME_STEP = 1.0 / 60.0;
- public final static int SCREEN_WIDTH = 640;
- public final static int SCREEN_HEIGHT = 480;
- }
- //****************************************************************************
- //
- //
- //
- //****************************************************************************
- class Keyboard implements KeyListener
- {
- private static Keyboard instance = new Keyboard();
- private boolean[] keysPressed = new boolean[256];
- private boolean[] keysReleased = new boolean[256];
- private boolean anyKeyPressed = false;
- private Keyboard()
- {
- }
- public static Keyboard getInstance()
- {
- return instance;
- }
- @Override
- public void keyPressed( KeyEvent e )
- {
- int keyId = (e.getKeyCode() & 255);
- keysPressed[keyId] = true;
- keysReleased[keyId] = false;
- anyKeyPressed = true;
- }
- @Override
- public void keyReleased( KeyEvent e )
- {
- int keyId = (e.getKeyCode() & 255);
- keysPressed[keyId] = false;
- keysReleased[keyId] = true;
- anyKeyPressed = false;
- }
- @Override
- public void keyTyped( KeyEvent e )
- {
- }
- public boolean isKeyPressed( int key )
- {
- return keysPressed[key];
- }
- public boolean isKeyReleased( int key )
- {
- return keysReleased[key];
- }
- public boolean isAnyKeyPressed()
- {
- return anyKeyPressed;
- }
- public void resetKeys()
- {
- for( int i = 0; i < 256; i++ )
- {
- keysReleased[i]= false;
- }
- }
- }
- //****************************************************************************
- //
- //
- //
- //****************************************************************************
- class Game
- {
- private double accumulator = 0;
- private int fps = 0;
- private int framesPerSecond = 0;
- private double previousTime = 0;
- private double oldTime = 0;
- private double secondsElapsed = 0;
- int[] pixels = new int[ Constants.SCREEN_WIDTH * Constants.SCREEN_HEIGHT ];
- MemoryImageSource renderBufferSource = new MemoryImageSource( Constants.SCREEN_WIDTH,
- Constants.SCREEN_HEIGHT,
- pixels,
- 0,
- Constants.SCREEN_WIDTH );
- Image renderBuffer;
- public Game()
- {
- }
- public void init( BufferStrategy strategy, Screen screen )
- {
- Graphics2D g2D = (Graphics2D) strategy.getDrawGraphics();
- g2D.setColor(Color.BLACK);
- g2D.fillRect(0, 0, Constants.SCREEN_WIDTH, Constants.SCREEN_HEIGHT);
- Toolkit.getDefaultToolkit().sync();
- strategy.show();
- g2D.dispose();
- strategy.show();
- for( int y = 0; y < Constants.SCREEN_HEIGHT; y++ )
- {
- for( int x = 0; x < Constants.SCREEN_WIDTH; x++ )
- {
- pixels[x + y * Constants.SCREEN_WIDTH] = (x*x) ^ (y*y);
- }
- }
- renderBufferSource.setAnimated( true );
- renderBuffer = Toolkit.getDefaultToolkit().createImage(renderBufferSource);
- renderBufferSource.newPixels();
- }
- private void update()
- {
- Keyboard.getInstance().resetKeys();
- }
- private void render( Graphics2D g2D, Screen screen )
- {
- for( int y = 0; y < Constants.SCREEN_HEIGHT; y++ )
- {
- for( int x = 0; x < Constants.SCREEN_WIDTH; x++ )
- {
- pixels[x + y * Constants.SCREEN_WIDTH] = (x*x*x) ^ (y*y*y);
- }
- }
- renderBufferSource.newPixels();
- g2D.drawImage( renderBuffer,
- 0,
- 0,
- screen );
- }
- public void run( BufferStrategy strategy, Screen screen )
- {
- double dt = getDeltaTime(getSystemTime());
- init( strategy, screen );
- while (true)
- {
- dt = getDeltaTime(getSystemTime());
- if( dt > Constants.FIXED_TIME_STEP ) dt = Constants.FIXED_TIME_STEP;
- accumulator += dt;
- secondsElapsed += dt;
- while( accumulator >= Constants.FIXED_TIME_STEP )
- {
- accumulator -= Constants.FIXED_TIME_STEP;
- update();
- }
- Graphics2D g2D = (Graphics2D) strategy.getDrawGraphics();
- g2D.setColor(Color.BLACK);
- g2D.fillRect(0, 0, Constants.SCREEN_WIDTH, Constants.SCREEN_HEIGHT);
- render( g2D, screen );
- g2D.dispose();
- strategy.show();
- Toolkit.getDefaultToolkit().sync();
- if( Keyboard.getInstance().isKeyPressed( KeyEvent.VK_ESCAPE ) )
- {
- System.exit(0);
- }
- try
- {
- Thread.sleep(1);
- }
- catch (InterruptedException e)
- {
- System.out.println("interrupted");
- }
- }
- }
- public Keyboard getKeyHandler()
- {
- return Keyboard.getInstance();
- }
- public double getSystemTime()
- {
- return System.nanoTime() / 1000000000.0;
- }
- public double getDeltaTime( double timerInSeconds )
- {
- double currentTime = timerInSeconds;
- double elapsedTime = currentTime - oldTime;
- oldTime = currentTime;
- framesPerSecond++;
- if ((currentTime - previousTime) > 1.0)
- {
- previousTime = currentTime;
- fps = framesPerSecond;
- framesPerSecond = 0;
- }
- return elapsedTime;
- }
- } // end class
- //****************************************************************************
- //
- //
- //
- //****************************************************************************
- class Screen extends Canvas
- {
- private static final long serialVersionUID = 1L;
- private BufferStrategy strategy;
- Game engine = new Game();
- public Screen()
- {
- JFrame container = new JFrame("Java2D GFX Framework by Relminator");
- JPanel panel = (JPanel) container.getContentPane();
- panel.setPreferredSize(new Dimension(Constants.SCREEN_WIDTH,
- Constants.SCREEN_HEIGHT));
- panel.setLayout(null);
- setBounds(0, 0, Constants.SCREEN_WIDTH, Constants.SCREEN_HEIGHT);
- panel.add(this);
- setIgnoreRepaint(true);
- container.pack();
- container.setLocationRelativeTo(null);
- container.setResizable(false);
- container.setVisible(true);
- container.addWindowListener(new WindowAdapter()
- {
- public void windowClosing(WindowEvent e)
- {
- System.exit(0);
- }
- });
- addKeyListener( engine.getKeyHandler() );
- requestFocus();
- setFocusable(true);
- createBufferStrategy(2);
- strategy = getBufferStrategy();
- }
- public void playGame()
- {
- engine.run( strategy, this );
- }
- }
- //****************************************************************************
- //
- // Main Entry Point
- //
- //****************************************************************************
- public class XorTexture
- {
- public static void main(String[] args)
- {
- Screen screen = new Screen();
- screen.playGame();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement