Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.applet.Applet;
- import java.awt.AWTEvent;
- import java.awt.AlphaComposite;
- import java.awt.Color;
- import java.awt.Composite;
- import java.awt.Graphics;
- import java.awt.Graphics2D;
- import java.awt.Image;
- import java.awt.Rectangle;
- import java.awt.TexturePaint;
- import java.awt.event.MouseEvent;
- import java.awt.image.BufferedImage;
- import java.awt.image.BufferedImageOp;
- import java.awt.image.ConvolveOp;
- import java.awt.image.Kernel;
- import javax.imageio.ImageIO;
- public class x extends Applet implements Runnable {
- private static final float AVERAGE = 1.0f / 12.0f;
- private static final float CENTER = 1.0f - (AVERAGE * 8.0f);
- private static final float FALL = 0.3f;
- private static final int DATA_ITEMS = 5;
- private float vy = 0;
- public void start() {
- enableEvents(MouseEvent.MOUSE_EVENT_MASK);
- new Thread(this).start();
- }
- public void run() {
- try {
- Color SKY = new Color(0xDDDDDD);
- Color LAYER1 = new Color(0xCCCCCC);
- Color LAYER2 = new Color(0xBBBBBB);
- Color ITEMS = new Color(0x888888);
- Color FOREGROUND = new Color(0x000000);
- long lastFrame = System.nanoTime();
- int p;
- int frame = 0;
- int[] h1 = new int[] {2,23,0,24,10,-2,12,25,2,13};
- int[] h2 = new int[] {10,-2,12,25,2,13,2,23,0,24};
- int[] buildings = new int[5000 * DATA_ITEMS];
- int next;
- float offset = 0;
- int offset2;
- int offset3;
- boolean atStart = true;
- float[] blurMatrix = { AVERAGE, AVERAGE, AVERAGE, AVERAGE, CENTER, AVERAGE, AVERAGE, AVERAGE, AVERAGE};
- BufferedImageOp blurFilter = new ConvolveOp(new Kernel(3, 3,
- blurMatrix), ConvolveOp.EDGE_NO_OP, null);
- Image[] frames = new Image[8];
- BufferedImage runner = ImageIO.read(Thread.currentThread()
- .getContextClassLoader().getResourceAsStream("r.png"));
- for (int i = 0; i < 8; i++) {
- frames[i] = blurFilter.filter(runner.getSubimage(i * 8, 0, 8, 15), null);
- }
- BufferedImage logo = new BufferedImage(135, 40, BufferedImage.TYPE_INT_ARGB);
- Graphics2D g = (Graphics2D) logo.getGraphics();
- g.setFont(g.getFont().deriveFont(20.0f));
- g.setColor(Color.black);
- g.drawString("4KANABALT",7,25);
- g.setColor(new Color(0xEEEEEE));
- g.drawString("4KANABALT",6,24);
- BufferedImage message = new BufferedImage(200, 40, BufferedImage.TYPE_INT_ARGB);
- g = (Graphics2D) message.getGraphics();
- g.setColor(Color.white);
- g.drawString("Click Mouse to Jump/Start", 0, 30);
- BufferedImage building = new BufferedImage(20, 20, BufferedImage.TYPE_INT_ARGB);
- g = (Graphics2D) building.getGraphics();
- g.setColor(Color.black);
- g.fillRect(0,0,20,20);
- g.setColor(new Color(0xCCCCCC));
- g.fillRect(10,5,10,10);
- TexturePaint buildingPaint = new TexturePaint(building, new Rectangle(20,20));
- BufferedImage state = new BufferedImage(300, 20, BufferedImage.TYPE_INT_ARGB);
- BufferedImage bg = new BufferedImage(400, 200, BufferedImage.TYPE_INT_ARGB);
- g = (Graphics2D) bg.getGraphics();
- Graphics2D appletGraphics = (Graphics2D) getGraphics();
- float ypos = 0;
- int distance = 0;
- float speed = 1;
- while (true) {
- // move the game along
- offset += 1+speed;
- offset2 = (int) (offset * 1.5f);
- offset3 = (int) (offset * 3f);
- if (vy == 0) {
- frame++;
- } else {
- frame = 9;
- }
- // sky
- g.setColor(SKY);
- g.fillRect(0, 0, 400, 200);
- // background buildings
- g.setColor(LAYER1);
- for (p=0;p<13;p++) {
- g.fillRect((p*35)-(int) (offset%35),(int) (50+(h1[(p+ ((int) (offset/35.0f)))% 10])),35,400);
- }
- g.setColor(LAYER2);
- for (p=0;p<10;p++) {
- g.fillRect((p*60)-(offset2%60),75+(h2[(p+ (offset2/60))% 10]),60,400);
- }
- if (atStart) {
- if (vy < 0) {
- speed = 1;
- atStart = false;
- for (p=0;p<buildings.length;p+=DATA_ITEMS) {
- buildings[p] = 130 + (((int) (Math.random() * 15)) * 20);
- buildings[p+1] = 110 + (int) (Math.random() * 50);
- buildings[p+2] = 100 + (int) (Math.random() * 20);
- buildings[p+3] = (int) (Math.random() * (buildings[p] - 130));
- buildings[p+4] = (int) (Math.random() * 10);
- }
- buildings[0] = 710;
- ypos = buildings[1];
- vy = 0;
- offset = 0;
- frame = 0;
- }
- g.drawImage(logo,15,0,400,200,null);
- g.drawImage(message,52,100,400,80,null);
- } else {
- distance = ((int) (offset/5));
- speed += 0.0005f;
- // handle falling
- ypos += vy * speed;
- vy += FALL;
- next = -offset3;
- int px = 100;
- if (vy >= 0) {
- for (p=0;p<buildings.length;p+=DATA_ITEMS) {
- if (next+buildings[p] > -20) {
- if ((next-5 < px) && (next+buildings[p]+15 > px)) {
- int height = buildings[p+1] + 3;
- if (Math.abs(ypos-height) < 5) {
- ypos = buildings[p+1];
- vy = 0;
- }
- break;
- }
- }
- next += buildings[p] + buildings[p+2];
- if (next > 600) {
- break;
- }
- }
- }
- if (ypos > 220) {
- atStart = true;
- vy = 0;
- }
- // foreground buildings
- next = -offset3;
- for (p=0;p<buildings.length;p+=DATA_ITEMS) {
- if (next+buildings[p] > -20) {
- g.setColor(ITEMS);
- if (buildings[p+4] != 0) {
- g.fillRect(40+next+buildings[p+3],buildings[p+1]-50,40,40);
- g.fillRect(45+next+buildings[p+3],buildings[p+1]-10,5,10);
- g.fillRect(70+next+buildings[p+3],buildings[p+1]-10,5,10);
- }
- g.setColor(FOREGROUND);
- g.fillRect(next-5,buildings[p+1],buildings[p]+10,5);
- g.translate(next,buildings[p+1]+6);
- g.setPaint(buildingPaint);
- g.fillRect(0,0,buildings[p],100);
- g.setPaint(null);
- g.translate(-next,-(buildings[p+1]+6));
- }
- next += buildings[p] + buildings[p+2];
- if (next > 600) {
- break;
- }
- }
- g.drawImage(frames[7 - (((int) (frame / 1.5f)) % 8)], 100, (int) ypos-15, null);
- }
- Graphics2D gx = (Graphics2D) state.getGraphics();
- Composite pre = gx.getComposite();
- gx.setComposite(AlphaComposite.getInstance(AlphaComposite.CLEAR, 0.0f));
- gx.fillRect(0,0,300,30);
- gx.setComposite(pre);
- gx.setFont(gx.getFont().deriveFont(9.0f));
- gx.setColor(FOREGROUND);
- gx.drawString(distance+"m",3,11);
- for (int i=0;i<20;i++) {
- if (speed*3 < i) {
- gx.setColor(LAYER2);
- }
- gx.drawLine(160+(i*2),2,160+(i*2),12);
- }
- g.drawImage(state,0,0,600,30,null);
- appletGraphics.drawImage(bg, 0, 0, null);
- do
- {
- Thread.yield();
- }
- while (System.nanoTime() - lastFrame < 0);
- lastFrame += (1000000000 / 40);
- if (!isActive())
- return;
- }
- } catch (Throwable e) {
- e.printStackTrace();
- }
- }
- public void processEvent(AWTEvent e) {
- if (e.getID() == MouseEvent.MOUSE_PRESSED) {
- if (vy == 0) {
- vy = -5;
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement