int playerSpeed = 4; int playerY = 10; int playerX = 10; int playerXmove = 0; int playerYmove = 0; boolean menu = true; boolean rules = false; boolean game = false; boolean isFinished = false; //setup void setup() { size(400, 400); noStroke(); frameRate(60); rectMode(CORNERS); ellipseMode(CENTER); textAlign(CENTER, CENTER); } void finish() { game = false; isFinished = true; } //Main Draw void draw() { if (game) { background (0); fill(16, 27, 6); ellipse(playerX, playerY, 150, 150); drawMap(); drawPlayer(); updatePlayer(); } if (menu) { background(200); drawMenu(); } if (rules) { background(50); drawRules(); } if (isFinished) { background(25); drawFinish(); } } //Finish screen void drawFinish(){ fill(66); ellipse(200, 200, 300, 300); fill(255, 0, 0); textSize(70); text("YOU WON!", 200, 100); fill(255); textSize(30); text("Good waste of time", 200, 180); text("Isn't it?", 200, 220); text("Press X to suffer again", 200, 340); } //Rules screen void drawRules() { background(25); fill(66, 66, 66); ellipse(200, 200, 300, 300); textSize(60); fill(255); text("Rules", 200, 60); textSize(30); text("-Avoid walls-", 200, 160); text("-Find a portal-", 200, 200); text("-Don't rage-", 200, 240); text("Press X for Menu", 200, 350); text("-WASD to Move-", 200, 280); } //Menu screen void drawMenu() { background(25); fill(66); ellipse(200, 250, 270, 270); fill(255); textSize(100); fill(255, 255, 95); text("L", 100, 60); text("ST", 260, 60); fill(155, 155, 30); ellipse(160, 70, 80, 80); fill(255, 255, 95); ellipse(160, 70, 10, 10); fill(255); textSize(50); text("R for Rules", 200, 230); text("G to Start", 200, 280); text("X for Menu", 200, 330); textSize(60); text("Press", 200, 160); fill(255, 0, 0); rotate(-PI/6); textSize(15); text("Don't rage please", 200, 220); rotate(PI/6); } //Player void drawPlayer() { fill(255, 170, 0, 90); ellipse(playerX, playerY, 150, 150); fill(250, 250, 30); ellipse(playerX, playerY, 8, 8); } void drawMap() { //Map fill(0); rect(20, 20, 380, 40); rect(20, 20, 40, 280); rect(20, 300, 40, 380); rect(20, 360, 380, 380); rect(360, 20, 380, 280); rect(360, 300, 380, 380); rect(60, 60, 80, 340); rect(60, 60, 160, 80); rect(60, 320, 160, 340); rect(180, 20, 200, 120); rect(100, 100, 180, 120); rect(100, 140, 120, 220); rect(220, 180, 360, 200); rect(220, 180, 240, 300); rect(100, 280, 200, 300); rect(180, 280, 200, 340); rect(180, 320, 340, 340); rect(60, 240, 200, 260); rect(100, 200, 220, 220); rect(320, 220, 340, 340); rect(260, 220, 340, 240); rect(260, 260, 280, 320); rect(300, 260, 320, 280); rect(140, 140, 240, 160); rect(140, 140, 160, 180); rect(220, 60, 240, 160); rect(260, 20, 280, 160); rect(260, 140, 340, 160); rect(320, 60, 340, 120); rect(280, 80, 320, 100); rect(20, 20, 40, 360); //Finish portal fill(255, 255, 255, 50 - 255*( sqrt( pow(300 - playerX, 2) + pow(120 - playerY, 2) )/400 ) ); ellipse(300, 120, 20, 20); } //Movement and Navigation void keyPressed() { if (menu) { if (key == 'g') { game = true; menu = false; } if (key == 'r') { rules = true; menu = false; } } if (rules) { if (key == 'x') { rules = false; menu = true; } if (key == 's') { game = true; rules = false; } } if (game) { if (key == 'w') { playerYmove = -1; } if (key == 'a') { playerXmove = -1; } if (key == 's') { playerYmove = 1; } if (key == 'd') { playerXmove = 1; } if (key == 'x') { game = false; menu = true; //playerX = 10; //playerY = 10; } } if (isFinished) { if (key == 'x') { menu = true; isFinished = false; playerX = 10; playerY = 10; } } } void keyReleased() { if (key == 'w') { playerYmove = 0; } else if (key == 'a') { playerXmove = 0; } else if (key == 's') { playerYmove = 0; } else if (key == 'd') { playerXmove = 0; } } //Updating void updatePlayer() { playerX +=playerSpeed * playerXmove; playerY +=playerSpeed * playerYmove; if( get(playerX+4, playerY+4) == color(90, 60, 0) || get(playerX+4, playerY-4) == color(90, 60, 0) || get(playerX-4, playerY+4) == color(90, 60, 0) || get(playerX-4, playerY-4) == color(90, 60, 0) ) { playerX = 10; playerY = 10; } if( get(playerX+4, playerY+4) == 0 || get(playerX+4, playerY-4) == 0 || get(playerX-4, playerY+4) == 0 || get(playerX-4, playerY-4) == 0 ) { playerX = 10; playerY = 10; } if (playerX < 310 && playerX > 290 && playerY < 130 && playerY > 110) { finish(); } }