Use space to jump over the triangles. When you die, you start over. You know that you are at the end when there is no more spikes or blocks. See this project on my website! www.warhover.com/games/bpg
game
description
playthegame
colorful
unique
funtoplay
easy
concept
sad
emotional
funny
The showcase player uses a modified version of Processing.js in combination with jsweet to let students program their apps in Java code while still allowing for browser support.
Content created by students is scaled to fit the showcase frame while maintaining aspect ratio and cursor position. This is why some projects may appear blurry in fullscreen, or why some small details may not be visible on a small screen
<iframe width='500px' height='400px' src='https://nest.ktbyte.com/nest#597' allowfullscreen></iframe>
float x = 70, y = 200, vy = 0, angle, vangle = .1; float blockHeight = 50; float floor = 450 + blockHeight/2; boolean jump = false; float gravity = 1; ArrayList<Obstacle> obstacles = new ArrayList<Obstacle>(); //ArrayList<Triangle> triangles = new ArrayList<Triangle>(); int state = 0; void setup() { size(700, 500); // trangles.add(new Triangle(4600,190,4575,175,4625,175)); rectMode(CENTER); textAlign(CENTER); } void restart() { state = 1; obstacles.clear(); for (int i = 0; i < 10000; i++) { add(50*i, 475, 1); } add(2500, 425, 2); add(3350, 425, 2); add(3400, 425, 2); add(4200, 425, 2); add(4250, 425, 2); add(4300, 425, 1); add(4350, 425, 2); add(4400, 425, 2); add(4450, 425, 2); add(4500, 425, 2); add(4550, 425, 1); add(4550, 375, 1); add(4600, 425, 2); add(4650, 425, 2); add(4700, 425, 2); add(4750, 425, 2); add(4800, 425, 1); add(4800, 375, 1); add(4800, 325, 1); add(5950, 425, 2); add(6000, 425, 2); add(6250, 425, 1); add(6250, 425, 1); add(6300, 425, 1); add(6350, 425, 1); add(6400, 425, 1); add(6450, 425, 1); add(6500, 425, 2); add(6550, 425, 2); add(6600, 425, 1); add(6650, 425, 1); add(6700, 425, 1); add(6750, 425, 1); add(6800, 425, 1); add(6850, 425, 1); add(6850, 375, 2); add(6900, 425, 1); add(6950, 425, 1); add(7000, 425, 1); add(7050, 425, 1); add(7100, 425, 1); add(7150, 425, 2); add(7200, 425, 2); add(7250, 425, 2); for (int i = 145; i <= 157; i++) { add(50*i, 375, 1); } add(7500, 325, 2); add(7250, 425, 2); for (int i = 158; i <= 187; i++) { add(50*i, 425, 2); } add(8050, 325, 1); add(8300, 275, 1); add(8550, 225, 1); add(8800, 175, 1); add(9050, 125, 1); //end of 5 jumps //6 4 4 4 4 for (int i = 184; i <= 208; i++) { add(50*i, 275, 1); } add(9500, 225, 2); add(9550, 225, 2); add(9600, 225, 2); add(9650, 225, 2); add(9550, 200, 1); add(9600, 200, 1); add(9900, 225, 2); add(9950, 225, 2); add(10000, 225, 2); add(10050, 225, 2); add(9950, 200, 1); add(10000, 200, 1); for (int i = 209; i <= 219; i++) { add(50*i, 325, 1); } add(10600, 200, 1); add(10650, 200, 1); add(10700, 200, 1); add(10750, 200, 1); add(10600, 175, 2); add(10650, 175, 2); add(10700, 175, 2); add(10750, 175, 2); add(11000, 275, 1); add(11050, 275, 1); add(11100, 275, 1); add(11150, 275, 1); add(11200, 275, 1); add(11200, 225, 2); add(11250, 325, 2); add(11250, 375, 1); add(11300, 375, 1); add(11350, 375, 1); add(11400, 375, 1); add(11450, 375, 1); add(11500, 375, 1); add(11550, 375, 1); add(11600, 375, 1); add(11650, 375, 1); add(11700, 375, 1); //the long platforms //249 for (int i = 237; i <= 249; i++) { add(50*i, 425, 2); } for (int i = 255; i <= 385; i++) { add(50*i, 425, 2); } add(11850, 325, 1); add(11900, 325, 1); add(11950, 325, 1); add(12000, 325, 1); add(12000, 275, 2); add(12100, 375, 1); add(12150, 375, 1) ; add(12200, 375, 1); add(12250, 375, 1); add(12300, 375, 1); add(12350, 375, 1); add(12400, 375, 1); add(12400, 325, 2); add(12400, 375, 1); add(12500, 425, 1); add(12550, 425, 1); add(12600, 425, 1); add(12650, 425, 1); add(12700, 425, 1); add(12950, 375, 1); add(13200, 325, 1); add(13450, 275, 1); add(13700, 225, 1); add(13950, 175, 1); add(14200, 125, 1); add(14200, 75, 2); add(14250, 325, 1); add(14200, 325, 1); add(14250, 325, 1); add(14300, 325, 1); add(14350, 325, 1); add(14400, 325, 1); add(14450, 325, 1); add(14500, 325, 1); add(14550, 325, 1); add(14600, 325, 1); add(14650, 325, 1); add(14700, 325, 1); add(14750, 325, 1); add(14800, 325, 1); add(14850, 375, 1); add(14900, 375, 1); add(14950, 375, 1); add(15000, 375, 1); add(15050, 375, 1); add(15300, 375, 1); add(15300, 325, 1); add(15550, 375, 1); add(15550, 325, 1); add(15550, 275, 1); add(15800, 375, 1); add(15800, 325, 1); add(15800, 275, 1); add(15800, 225, 1); add(16050, 375, 1); add(16050, 325, 1); add(16050, 275, 1); add(16050, 225, 1); add(16050, 175, 1); add(16050, 375, 1); add(16100, 375, 1); add(16150, 375, 1); add(16200, 375, 1); add(16250, 375, 1); add(16300, 375, 1); add(16350, 375, 1); add(16100, 25, 1); add(16150, 25, 1); add(16200, 25, 1); //long stacks add(16600, 375, 1); add(16600, 325, 1); add(16850, 375, 1); add(16850, 325, 1); add(16850, 275, 1); add(17100, 375, 1); add(17100, 325, 1); add(17100, 275, 1); add(17100, 225, 1); add(17350, 375, 1); add(17350, 325, 1); add(17350, 275, 1); add(17350, 225, 1); add(17350, 175, 1); add(17600, 375, 1); add(17600, 325, 1); add(17600, 275, 1); add(17600, 225, 1); add(17600, 175, 1); add(17600, 125, 1); add(17850, 375, 1); add(17850, 325, 1); add(17850, 275, 1); add(17850, 225, 1); add(17850, 175, 1); add(17850, 125, 1); add(17850, 75, 1); add(17900, 75, 1); add(18000, 125, 1); add(18050, 125, 1); add(18150, 175, 1); add(18200, 175, 1); add(18300, 225, 1); add(18350, 225, 1); add(18400, 225, 1); add(18650, 275, 1); add(18700, 275, 1); add(18800, 325, 1); add(18850, 325, 1); add(18900, 325, 1); add(19150, 375, 1); add(19200, 375, 1); add(19250, 375, 1); add(19350, 425, 1); //DO NOT RECODE add(19650, 425, 2); add(19700, 425, 2); add(19750, 425, 1); add(19800, 425, 2); add(19850, 425, 2); add(19900, 375, 1); add(19950, 375, 1); add(20000, 425, 2); add(20050, 425, 1); add(20100, 425, 1); add(20150, 425, 1); add(20200, 425, 2); add(20250, 425, 2); add(20300, 425, 2); add(20350, 425, 2); add(20400, 425, 2); add(20450, 425, 2); add(20500, 425, 2); add(20550, 425, 2); add(20600, 425, 2); add(20650, 425, 2); add(20700, 425, 2); add(20750, 425, 2); add(20350, 375, 1); add(20400, 375, 1); add(20650, 325, 1); add(20700, 325, 1); add(20800, 425, 1); add(20850, 425, 1); add(20900, 425, 1); add(20950, 425, 2); add(21000, 425, 2); //END DO NOT RECODE add(21350, 425, 2); add(21400, 425, 2); add(21750, 425, 2); add(21800, 425, 2); add(21850, 425, 2); add(22200, 425, 2); add(22550, 425, 2); add(22950, 425, 2); add(23000, 425, 2); add(23050, 425, 1); add(23100, 425, 2); add(23150, 425, 2); add(23200, 425, 2); add(23250, 425, 2); add(23300, 425, 1); add(23300, 375, 1); add(23350, 425, 2); add(23400, 425, 2); add(23450, 425, 2); add(23500, 425, 2); add(23550, 425, 1); add(23550, 375, 1); add(23550, 325, 1); add(23600, 425, 2); add(23650, 425, 2); add(23700, 425, 2); add(23750, 425, 2); add(23800, 425, 1); add(23800, 375, 1); add(23800, 325, 1); add(23800, 275, 1); add(23850, 275, 1); add(23950, 325, 1); add(24050, 375, 1); add(24150, 425, 1); add(23850, 425, 2); add(23900, 425, 2); add(23950, 425, 2); add(24000, 425, 2); add(24050, 425, 2); add(24100, 425, 2); add(24450, 425, 2); add(24500, 425, 2); add(24800, 375, 1); add(24850, 375, 1); add(24900, 375, 1); add(24950, 375, 1); add(24800, 325, 1); add(24850, 325, 1); add(24900, 325, 1); add(24950, 325, 1); add(25200, 425, 2); add(25250, 425, 1); add(25600, 425, 1); add(25650, 425, 1); add(25700, 425, 1); add(25750, 425, 1); //29 for (int i = 516; i <= 547; i++) { add(50*i, 425, 2); } add(26000, 375, 1); add(26250, 325, 1); add(26500, 275, 1); add(26750, 225, 1); add(26800, 225, 1); add(26850, 225, 1); add(26950, 275, 1); add(27100, 325, 1); add(27250, 375, 1); add(27400, 425, 1); for (int i = 549; i <= 569; i++) { add(50*i, 425, 2); } add(27700, 375, 1); add(27800, 375, 1); add(27800, 325, 2); add(27950, 375, 1); add(28200, 325, 1); add(28250, 325, 1); add(28300, 325, 1); add(28400, 375, 1); add(28500, 425, 1); add(28550, 425, 1); add(28600, 425, 1); add(28650, 425, 2); add(28700, 425, 2); add(29050, 425, 2); add(29100, 425, 2); add(29150, 425, 2); add(29650, 425, 1); add(29700, 425, 1); add(29750, 425, 1); add(29800, 425, 2); add(29850, 425, 2); add(29900, 425, 2); add(29950, 425, 2); add(30000, 425, 1); add(30050, 425, 1); add(30100, 425, 1); add(30150, 425, 1); add(30200, 425, 1); add(30250, 425, 1); add(30300, 425, 1); add(30350, 425, 1); add(30400, 425, 1); add(30400, 375, 1); add(30450, 375, 1); add(30500, 375, 1); add(30750, 325, 1); add(30850, 375, 1); //618 for (int i = 609; i <= 618; i++) { add(50*i, 425, 2); } add(30950, 425, 1); add(31000, 425, 1); add(31050, 425, 1); add(31300, 375, 1); add(31400, 375, 1); add(31400, 325, 2); add(31500, 375, 1); add(31550, 375, 1); add(31600, 375, 1); add(31650, 375, 1); add(31750, 375, 1); add(31750, 325, 2); add(31850, 375, 1); add(32100, 325, 1); add(32150, 325, 1); add(32200, 325, 1); add(32200, 275, 2); add(32350, 375, 1); add(32400, 375, 1); add(32450, 375, 1); for (int i = 622; i <= 649; i++) { add(50*i, 425, 2); } x = 70; y = 200; } void add(float x, float y, int type) { obstacles.add(new Obstacle(x, y, type)); } void draw() { if (state == 1) { if (keyPressed && key == 'r') restart(); } if (state == 0) { background(0, 255, 0); fill(255, 0, 0); rect(width/2, height/2, 300, 50); fill(0); textSize(30); text("START", width/2, height/2+10); textSize(50); text("BARELY POSSIBLE GAME", width/2, height/2-100); if (mousePressed && abs(mouseX-width/2)<=150 && abs(mouseY-height/2)<=25) restart(); // if (keyPressed) restart(); } else if (state ==1 ) { // if(frameCount % 60 == 0) { // obstacles.add(new Obstacle(width,floor-blockHeight/2)); // } background(255); } boolean flat = false; for (int i = 0; i < obstacles.size (); i++) { Obstacle ob = obstacles.get(i); ob.move(); ob.display(); if (ob.canJump(x, y)) { if (vy > 0) vy = 0; flat = true; } else if (ob.sideCollision(y, x, ob.type)) { state = 2; } } for (int i = 0; i < obstacles.size (); i++) { Obstacle obs = obstacles.get(i); if (obs.canJump(x, y)) { } if (obs.canJump(x, y) && jump == true) { vy = -14; } } if (y + blockHeight/2 >= floor ) { flat = true; y = floor - blockHeight/2; if (vy > 0) vy = 0; if (jump) { vy = -14; } } if (flat) { angle = 0; vangle = 0; } else { vangle = .1; } rectMode(CENTER); fill (255, 155, 0); pushMatrix(); translate(x, y); rotate(angle); rect(0, 0, 50, 50); popMatrix(); angle += vangle; y += vy; vy += gravity; if (state == 2) { background(255, 0, 0); fill(0, 0, 255); rect(width/2, height/2, 300, 50); fill(0); textSize(30); text("RESTART", width/2, height/2+10); textSize(60); text("YOU DIED", width/2, height/2-100); if (mousePressed && abs(mouseX-width/2)<=150 && abs(mouseY-height/2)<=25) restart(); } } class Obstacle { float x, y, vx, d = 50; int type; Obstacle(float x, float y, int type) { this.x = x; this.y = y; this.type = type; if (type==2) d = 50; vx = -10; } boolean canJump(float playerX, float playerY) { if (type==2) return false; return abs(abs(this.y - playerY) - 50) < max((abs(vy) + 2), 5) && abs(this.x - playerX) < 50; } void move() { x += vx; } void display() { if ( x > width + 30) return; if (type==1) { fill(0, 0, 75); rect(x, y, d, d); } else if (type==2) { pushMatrix(); translate(x, y); fill(222, 60, 0); triangle(d/2, d/2, -d/2, d/2, 0, -d/2); popMatrix(); } } boolean sideCollision(float y, float x, int type) { if (type == 1) { if (abs(this.y - y) < 50 && abs(this.x - x) < 49) { return true; } } else if (type == 2) { if (abs(y-(this.y+25)) < 30 && abs(x-(this.x+25)) < 25 || abs(y-(this.y+25)) < 30 && abs(x-(this.x-25)) < 25 || abs(y-(this.y-25)) < 30 && abs(x-(this.x)) < 25 ) { return true; } } return false; } } //void add(float x, float y, int type) { // obstacles.add(new Obstacle(x,y,type)); //} void keyPressed() { if (key==' ')jump = true; } void keyReleased() { if (key==' ')jump = false; }