//If this doesn't work in browser, try running in processing
PImage end;
float mainx= 100;
float mainy= 950;
float enemyx=100;
float enemyy=100;
float eviewx=100;
float eviewy=100;
float enemyx2=400;
float enemyy2=250;
float eviewx2=400;
float eviewy2=250;
boolean left, right, up, down;
boolean win;
void setup() {
size(1000, 500);
end = loadImage ("http://fc02.deviantart.net/fs70/f/2013/082/e/6/crown_sprite_by_ghostxpro-d5z0sfs.png");
imageMode(CENTER);
}
float angle=0;
float angle2=20 % (2*PI);
int drawcount=0;
int spotteddraw=0;
float rSpeed=0.01;
float rSpeed2 = 0.03;
boolean ded;
void draw() {
background(200, 200, 200);
drawcount++;
if (drawcount>=600) drawcount=0;
if (drawcount<200) {
angle+=rSpeed;
enemyx+=0.5;
eviewx+=0.5;
}
if (drawcount>=300&& drawcount<500){
angle -=rSpeed;
enemyx-=0.5;
eviewx-=0.5;
}
if (drawcount<250&&drawcount>=50) {
angle2+=rSpeed;
enemyy2+=0.5;
eviewy2+=0.5;
}
if (drawcount>=350&& drawcount<550){
angle2 -=rSpeed;
enemyy2-=0.5;
eviewy2-=0.5;
}
ellipseMode(CENTER);
fill(200, 0, 0);
ellipse(mainx, mainy, 25, 25);
rectMode(CENTER);
fill(0, 0, 200);
rect(enemyx, enemyy, 25, 25);
rect(enemyx2, enemyy2, 25, 25);
fill(255, 255, 0);
if (left) mainx -=1.5;
if (right) mainx +=1.5;
if (up) mainy -= 1.5;
if (down) mainy += 1.5;
if (mainx <= 0) mainx =0;
if (mainx >= 1000) mainx =1000;
if (mainy <= 0) mainy =0;
if (mainy >= 500) mainy =500;
pushMatrix();
translate(eviewx, eviewy);
rotate(angle);
fill(225, 225, 0, 50);
arc(0, 0, 300, 300, 0, QUARTER_PI, PIE);
popMatrix();
pushMatrix();
translate(eviewx2, eviewy2);
rotate(angle2);
fill(225, 225, 0, 50);
arc(0, 0, 300, 300, 0, QUARTER_PI, PIE);
popMatrix();
if (isTouchingArc()||isTouchingArc2()) {
fill(255, 0, 0, 100);
rect(500, 250, 1000, 500);
text("ESCAPE", 500, 250);
spotteddraw++;
}
rect(250, 300, 30, 420);
if (mainx >= 230 && mainx <= 250 && mainy >= 80) {
mainx=230;
}
if (mainx >= 250 && mainx <= 270 && mainy >= 80) {
mainx=270;
}
rect(500, 200, 30, 420);
if (mainx >= 480 && mainx <= 500 && mainy <= 420) {
mainx=480;
}
if (mainx >= 500 && mainx <= 520 && mainy <= 420) {
mainx=520;
}
rect(750, 300, 30, 420);
if (mainx >= 730 && mainx <= 750 && mainy >= 80) {
mainx=730;
}
if (mainx >= 750 && mainx <= 770 && mainy >= 80) {
mainx=770;
}
image(end, 980, 450);
if (spotteddraw>=45) {
background(255, 0, 0);
fill(0);
text("YOU HAVE DIED", 500, 250);
}
if(mainx > 970 && mainx < 990 && mainy > 440 && mainy < 460){
win = true;
}
if(win == true){
background(0, 255, 0);
fill(0);
text("YOU HAVE WON", 500, 250);
}
}
void keyPressed() {
if (key==CODED && keyCode==LEFT) left =true;
if (key==CODED && keyCode==RIGHT) right = true;
if (key==CODED && keyCode==UP) up=true;
if (key==CODED && keyCode==DOWN) down=true;
}
void keyReleased() {
if (key==CODED && keyCode==LEFT) left =false;
if (key==CODED && keyCode==RIGHT) right = false;
if (key==CODED && keyCode==UP) up=false;
if (key==CODED && keyCode==DOWN) down=false;
}
boolean isTouchingArc() {
float distance = dist(mainx, mainy, eviewx, eviewy);
float squareToCircleAngle = atan2(mainy - eviewy, mainx - eviewx);
fill(0, 0, 0);
fill(0, 0, 0);
return distance < 300 / 2 && angle <= squareToCircleAngle && squareToCircleAngle <= angle + QUARTER_PI;
}
boolean isTouchingArc2() {
float distance2 = dist(mainx, mainy, eviewx2, eviewy2);
float squareToCircleAngle2 = atan2(mainy - eviewy2, mainx - eviewx2);
fill(0, 0, 0);
return distance2 < 300 / 2 && angle2 <= squareToCircleAngle2 && squareToCircleAngle2 <= angle2 + QUARTER_PI;
}