Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- * To change this template, choose Tools | Templates
- * and open the template in the editor.
- */
- package cubicsplines;
- import org.newdawn.slick.AppGameContainer;
- import org.newdawn.slick.BasicGame;
- import org.newdawn.slick.GameContainer;
- import org.newdawn.slick.Graphics;
- import org.newdawn.slick.Image;
- import org.newdawn.slick.Input;
- import org.newdawn.slick.SlickException;
- /**
- *
- * @author Adam
- */
- public class CubicSpline extends BasicGame {
- Image plane;
- Image planeMirror;
- public static double getTime()
- {
- double time = (double)System.nanoTime() / 1000000000.0; // convert to double
- return (time);
- }
- public CubicSpline()
- {
- super("Cubic Spline interpolator");
- }
- @Override
- public void init(GameContainer gc) throws SlickException
- {
- gc.setTargetFrameRate(60);
- plane = new Image("assets/block.png");
- planeMirror = plane.copy();
- }
- ObjectProperty p1 = new ObjectProperty();
- ObjectProperty p2 = new ObjectProperty();
- Cubic remote = new Cubic();
- int gameTick;
- @Override
- public void update(GameContainer gc, int delta) throws SlickException
- {
- double curTime = getTime();
- // Minic the proccess of obtaining a network network packet
- if(gameTick > 500)
- {
- gameTick = 0;
- remote.addNewPosition
- (
- p2.posx, // from pos x
- p2.posy, // from pos y
- p1.posx, // to pos x
- p1.posy, // to pos y
- p2.velocityX, // from velocity x
- p2.velocityY, // from velocity y
- p1.velocityX, // to velocity x
- p1.velocityY // to velocity y
- );
- p2.posx = p1.posx;
- p2.posy = p1.posy;
- p2.velocityX = p1.velocityX;
- p2.velocityY = p1.velocityY;
- }
- remote.lerpDebug = true;
- remote.follow();
- gameTick += delta;
- updateInput(gc, delta);
- }
- public void render(GameContainer gc, Graphics g) throws SlickException
- {
- plane.draw(p1.posx, p1.posy);
- planeMirror.draw(remote.xPos, remote.yPos);
- }
- public void updateInput(GameContainer gc, int delta)
- {
- Input input = gc.getInput();
- float rotation = this.plane.getRotation();
- float hip = p1.speed * delta;
- if(input.isKeyDown(Input.KEY_A))
- {
- this.plane.rotate(-0.2f * delta);
- }
- if(input.isKeyDown(Input.KEY_D))
- {
- this.plane.rotate(0.2f * delta);
- }
- if(input.isKeyDown(Input.KEY_S))
- {
- p1.velocityX += Math.sin(Math.toRadians(rotation));
- p1.velocityY -= Math.cos(Math.toRadians(rotation));
- }
- if(input.isKeyDown(Input.KEY_W))
- {
- p1.velocityX -= Math.sin(Math.toRadians(rotation));
- p1.velocityY += Math.cos(Math.toRadians(rotation));
- }
- // add drag
- p1.velocityX *= p1.drag;
- p1.velocityY *= p1.drag;
- p1.posx += p1.velocityX * hip;
- p1.posy += p1.velocityY * hip;
- }
- /**
- * @param args the command line arguments
- */
- public static void main(String[] args) throws SlickException
- {
- AppGameContainer app = new AppGameContainer(new CubicSpline());
- app.setDisplayMode(800, 600, false);
- app.start();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement