arrow keys to move. press space to jump, and get to end of island to win.
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#572921' allowfullscreen></iframe>
//GLOBAL VARIABLES int endOfIsland = 7500; int sec = 0; int time = 60; int level = 1; boolean gameOver = false; boolean gameWon = false; int numberOfEnemies = 7; Sprite player = new Sprite("https://emojigraph.org/media/emojidex/black-large-square_2b1b.png", 300, 100, 40, 40); boolean heldRight = false; boolean heldUp = false; boolean heldLeft = false; Sprite[] enemies = new Sprite[numberOfEnemies]; Sprite[] walls = new Sprite[17]; int floor = 300; int ySpeed = 0; float GRAV = 0.3; boolean airborne = true; //Setting things up void setup(){ textMode(CENTER); textSize(40); size(600, 600); noStroke(); rectMode(CORNERS); colorMode(HSB); generateEnemies(); generateLandscape(); } //Drawing!! (And calling some functions) void draw(){ moveScreen(); background(140, 255, 255); timer(); showLandscape(); controllingEnemies(); movingWalls(); playerController(); player.display(); touchingEnemies(); gameLost(); gameWon(); } //adding the timer boolean bigText = false; void timer(){ sec++; if(sec == 60){ time--; sec = 0; } if(time > 9){ textSize(25); }else{ if(sec == 0){ if(bigText){ textSize(33); bigText = false; }else{ textSize(27); bigText = true; } }else{ if(bigText){ textSize(33); }else{ textSize(27); } } } if(time < 0){ gameOver = true; } text( "time: " + time, player.getX() + 180, player.getY() - 250); } //moving the screen void moveScreen(){ translate(-player.getX(), -player.getY()); translate(width/2, height/2); } //Making Landscape void generateLandscape(){ //making platforms walls[0] = new Sprite("http://www.clker.com/cliparts/F/x/C/T/d/f/green-square-hi.png", 500, 250, 40, 40); walls[1] = new Sprite("http://www.clker.com/cliparts/F/x/C/T/d/f/green-square-hi.png", 700, 150, 100, 40); walls[2] = new Sprite("http://www.clker.com/cliparts/F/x/C/T/d/f/green-square-hi.png", 1000, 130, 200, 40); walls[3] = new Sprite("http://www.clker.com/cliparts/F/x/C/T/d/f/green-square-hi.png", 1300, 100, 100, 40); walls[4] = new Sprite("http://www.clker.com/cliparts/F/x/C/T/d/f/green-square-hi.png", 1800, 0, 600, 40); walls[5] = new Sprite("http://www.clker.com/cliparts/F/x/C/T/d/f/green-square-hi.png", 2400, 100, 300, 40); walls[6] = new Sprite("http://www.clker.com/cliparts/F/x/C/T/d/f/green-square-hi.png", 2600, 160, 150, 40); walls[7] = new Sprite("http://www.clker.com/cliparts/F/x/C/T/d/f/green-square-hi.png", 3000, 120, 150, 40); walls[8] = new Sprite("http://www.clker.com/cliparts/F/x/C/T/d/f/green-square-hi.png", 3400, 180, 150, 40); walls[9] = new Sprite("http://www.clker.com/cliparts/F/x/C/T/d/f/green-square-hi.png", 3600, 250, 150, 40); walls[10] = new Sprite("http://www.clker.com/cliparts/F/x/C/T/d/f/green-square-hi.png", 4470, 215, 150, 40); walls[11] = new Sprite("http://www.clker.com/cliparts/F/x/C/T/d/f/green-square-hi.png", 4600, 90, 150, 40); walls[12] = new Sprite("http://www.clker.com/cliparts/F/x/C/T/d/f/green-square-hi.png", 4800, 215, 150, 40); walls[13] = new Sprite("http://www.clker.com/cliparts/F/x/C/T/d/f/green-square-hi.png", 5400, 0, 150, 40); walls[14] = new Sprite("http://www.clker.com/cliparts/F/x/C/T/d/f/green-square-hi.png", 5700, 100, 150, 40); walls[15] = new Sprite("http://www.clker.com/cliparts/F/x/C/T/d/f/green-square-hi.png", 6000, 50, 150, 40); walls[16] = new Sprite("http://www.clker.com/cliparts/F/x/C/T/d/f/green-square-hi.png", 6400, 50, 150, 40); } //showing the landscape void showLandscape(){ //making ground fill(108, 180, 100); rect(0, 320, endOfIsland, 1000); //writing starting text textSize(20); text("Avoid red enemies & get to end", 50, 50); text("of island to survive.", 50, 80); text("Press space to jump, a/left arrow", 50, 110); text("to move left, and d/right arrow to", 50, 140); text("move right.", 50, 170); textSize(50); //showing platforms for(int i = 0;i<walls.length;i++){ walls[i].display(); } //showing enemies for(int i = 0;i<numberOfEnemies;i++){ enemies[i].display(); } } //moving the walls boolean right6 = false; boolean right7 = false; boolean right8 = false; boolean up12 = true; boolean right13 = false; boolean up15 = true; boolean up16 = false; void movingWalls(){ //making wall 6 move if(right6){ walls[6].moveX(1.5); }else{ walls[6].moveX(-1.5); } if(walls[6].getX() < 2500){ right6 = true; }else if(walls[6].getX() > 2800){ right6 = false; } //making wall 7 move if(right7){ walls[7].moveX(1.7); }else{ walls[7].moveX(-1.7); } if(walls[7].getX() < 2900){ right7 = true; }else if(walls[7].getX() > 3000){ right7 = false; } //making wall 8 move if(right8){ walls[8].moveX(1.6); }else{ walls[8].moveX(-1.6); } if(walls[8].getX() < 3100){ right8 = true; }else if(walls[8].getX() > 3400){ right8 = false; } //making wall 12 move if(up12){ walls[12].moveY(-1.8); walls[12].moveX(1.8); }else{ walls[12].moveY(1.8); walls[12].moveX(-1.8); } if(walls[12].getY() > 215){ up12 = true; }else if(walls[12].getY() < 0){ up12 = false; } //making wall 13 move if(right13){ walls[13].moveX(1.8); }else{ walls[13].moveX(-1.8); } if(walls[13].getX() > 5500){ right13 = false; }else if(walls[13].getX() < 5100){ right13 = true; } //making wall 15 move if(up15){ walls[15].moveY(-2.2); }else{ walls[15].moveY(2.2); } if(walls[15].getY() > 80){ up15 = true; }else if(walls[15].getY() < -160){ up15 = false; } //making wall 16 move if(up16){ walls[16].moveY(-2.2); }else{ walls[16].moveY(2.2); } if(walls[16].getY() > 100){ up16 = true; }else if(walls[16].getY() < -100){ up16 = false; } } //generate enemies void generateEnemies(){ for(int i = 0;i<numberOfEnemies;i++){ if(i == 0){ enemies[i] = new Sprite("https://upload.wikimedia.org/wikipedia/commons/thumb/6/62/Solid_red.svg/1024px-Solid_red.svg.png", 1100, 300, 800, 40); }else if(i == 1){ enemies[i] = new Sprite("https://upload.wikimedia.org/wikipedia/commons/f/f1/Ski_trail_rating_symbol_red_circle.png", 1180, 160, 40, 40); }else if(i == 2){ enemies[i] = new Sprite("https://upload.wikimedia.org/wikipedia/commons/f/f1/Ski_trail_rating_symbol_red_circle.png", 1650, -40, 40, 40); }else if(i == 3){ enemies[i] = new Sprite("https://upload.wikimedia.org/wikipedia/commons/f/f1/Ski_trail_rating_symbol_red_circle.png", 2000, -40, 40, 40); }else if(i == 4){ enemies[i] = new Sprite("https://upload.wikimedia.org/wikipedia/commons/thumb/6/62/Solid_red.svg/1024px-Solid_red.svg.png", 3000, 300, 800, 40); }else if(i == 5){ enemies[i] = new Sprite("https://upload.wikimedia.org/wikipedia/commons/f/f1/Ski_trail_rating_symbol_red_circle.png", 3750, 300, 40, 40); }else if(i == 6){ enemies[i] = new Sprite("https://upload.wikimedia.org/wikipedia/commons/thumb/6/62/Solid_red.svg/1024px-Solid_red.svg.png", 5500, 300, 2200, 40); } } } //moving the enemies boolean movingUp = true; boolean movingRightA = true; boolean movingRightB = true; boolean movingRightC = true; void controllingEnemies(){ //making enemy 1 move if(movingUp){ enemies[1].moveY(-1.3); }else{ enemies[1].moveY(1.3); } if(enemies[1].getY() < 20){ movingUp = false; }else if(enemies[1].getY() > 160){ movingUp = true; } //making enemy 2 move if(movingRightA){ enemies[2].moveX(2); }else{ enemies[2].moveX(-2); } if(enemies[2].getX() < 1650){ movingRightA = true; }else if(enemies[2].getX() > 2000){ movingRightA = false; } //making enemy 3 move if(movingRightB){ enemies[3].moveX(2); }else{ enemies[3].moveX(-2); } if(enemies[3].getX() < 1650){ movingRightB = true; }else if(enemies[3].getX() > 2000){ movingRightB = false; } //making enemy 5 move if(movingRightC){ enemies[5].moveX(2); }else{ enemies[5].moveX(-2); } if(enemies[5].getX() < 3750){ movingRightC = true; }else if(enemies[5].getX() > 4100){ movingRightC = false; } } //game won and game lost functions boolean playedDeadNote = false; void gameWon(){ text("Go past text to win", endOfIsland - 500, 150); if(player.getX() > endOfIsland - 300){ gameWon = true; } if(gameWon == true){ background(200, 200, 100); textSize(35); text("Congratulations!!!", player.getX() - 150, player.getY() - 50); text("You beat the game!!!", player.getX() - 150, player.getY() - 10); text(" :) ", player.getX() - 150, player.getY() + 30); } } void gameLost(){ if(player.getX() < -20){ gameOver = true; } if(gameOver == true){ if(playedDeadNote = false){ playedDeadNote = true; } background(255, 0, 0); text("Game Over", player.getX() - 150, player.getY()); } } //Collision detection void touchingEnemies(){ for(int i = 0;i<enemies.length;i++){ if(player.touchingSprite(enemies[i])){ gameOver = true; } } } //Function for Controlling Player void playerController(){ if(heldRight){ player.moveX(5.5); } if(heldLeft){ player.moveX(-5.5); } if(player.getY() > floor){ player.setY(floor); ySpeed = 0; airborne = false; } for(int i = 0;i < walls.length;i++){ if(player.touchingSprite(walls[i]) && player.getY() < walls[i].getY() - 20 && ySpeed > 0){ player.setY(walls[i].getY() - 40); ySpeed = 0; airborne = false; } } player.moveY(ySpeed); ySpeed += GRAV; } //function for jumping void jump(){ ySpeed = -8; player.moveY(-3); airborne = true; } //functions for key released and pressed void keyPressed(){ if(key=='d' || keyCode == RIGHT){ heldRight = true; } if(key==' ' && !airborne){ jump(); } if(key=='a' || keyCode == LEFT){ heldLeft = true; } } void keyReleased(){ if(key=='d' || keyCode == RIGHT){ heldRight = false; } if(key=='w'){ heldUp = false; } if(key=='a' || keyCode == LEFT){ heldLeft = false; } }