//define global variables (center coords for player and target, as well as a score count and variable to determine whether to make a new target)
int playX = 200;
int playY = 200;
int tarX = 0;
int tarY = 0;
boolean doesExist;
int score = 0;
void setup(){
size (400,400);
//noCursor(); later realized this didn't benefit or detract from the game
doesExist = false;
}
void draw(){
background(25,0,25);
//setup walls
rectMode (CORNERS);
fill(100,0,100);
//borders
rect(0,0,400,10);
rect(0,0,10,400);
rect(390,0,400,400);
rect(0,390,400,400);
//maze
rect(300,40,400,50);
rect(0,110,100,120);
rect(90,40,100,120);
rect(290,40,300,130);
rect(240,120,300,130);
rect(270,120,280,270);
rect(270,260,350,270);
rect(340,180,350,270);
rect(330,180,370,190);
rect(120,60,170,70);
rect(150,60,160,300);
rect(100,190,160,200);
rect(150,290,230,300);
rect(220,290,230,400);
rect(0,230,70,240);
rect(60,230,70,370);
rect(60,360,190,370);
//activate player and target
player();
target();
//positioning debug
//println(doesExist);
//println(tarX, tarY);
//println(playX, playY);
//display score
text(score, 15,25);
}
void player(){
rectMode(CENTER);
fill(150,150,255);
rect(playX, playY, 20, 20, 7);
//previously contained boundary collisions, but was moved to keyPressed with the others
}
void target(){
if (doesExist == false){
tarX = ((int)random(10,391));
tarY = ((int)random(10,391));
doesExist = true;
}
if (doesExist ==true){
rectMode(CENTER);
fill((int)random(100, 250),(int)random(100, 250),(int)random(100, 250));
rect(tarX, tarY, 20, 20);
}
if (playX >= (tarX-17) && playY >= (tarY-17) && playX <= (tarX+17) && playY <= (tarY+17)){
score++;
doesExist = false;
}
}
void keyPressed(){
//this allows player movement. unfortunately, it is a bit janky with holding inputs or multiple input, but it's functional.
//each input checks the position of the player in relation to each 'wall', preventing input when colliding. Unfortunately I couldn't think of a function to streamline this...
//amount of calculations is reduces by walls sharing sides
if (key == 'W' || key == 'w'){
if (playY==20 || playY==60 && playX>=295 || playY==130 && playX<=105 || playY==140 && playX>=235 && playX<=305 || playY==280 && playX>=265 && playX<=355 || playY==200 && playX>=325 && playX<=375 || playY==80 && playX>=115 && playX<=175 ||
playY==210 && playX>=95 && playX<=165 || playY==310 && playX>=145 && playX<=235 || playY==250 && playX<=75 || playY==380 && playX>=55 && playX<=195){
}else{
playY -= 5;
}
}
if (key == 'A' || key == 'a'){
if (playX==20 || playX==110 && playY>=35 && playY<=125 || playX==310 && playY>=40 && playY<=135 || playX==290 && playY>=115 && playY<=275 || playX==360 && playY>=175 && playY<=275 || playX==370 && playY>=175 && playY<=195 ||
playX==180 && playY>=55 && playY<=75 || playX==170 && playY>=55 && playY<=305 || playX==240 && playY>=285 || playX==80 && playY>=225 && playY<=375 || playX==200 && playY>=355 && playY<=375){
}else{
playX -= 5;
}
}
if (key == 'S' || key == 's'){
if (playY==380 || playY==30 && playX>=285 || playY==100 && playX<=100 || playY==30 && playX>=85 && playX<=105 || playY==110 && playX>=235 && playX<=300 || playY==250 && playX>=265 && playX<=355 || playY==170 && playX>=325 && playX<=375 ||
playY==50 && playX>=115 && playX<=175 || playY==180 && playX>=95 && playX<=165 || playY==280 && playX>=145 && playX<=235 || playY==220 && playX<=75 || playY==350 && playX>=55 && playX<=195){
}else{
playY += 5;
}
}
if (key == 'D' || key == 'd'){
if (playX==380 || playX==280 && playY>=35 && playY<=125 || playX==80 && playY>=35 && playY<=110 || playX==230 && playY>=115 && playY<=135 || playX==260 && playY>=117 && playY<=275 || playX==330 && playY>=175 && playY<=275 ||
playX==320 && playY>=175 && playY<=195 || playX==110 && playY>=55 && playY<=75 || playX==140 && playY>=55 && playY<=305 || playX==90 && playY>=185 && playY<=205 || playX==210 && playY>=285 || playX==50 && playY>=225 && playY<=375){
}else{
playX += 5;
}
}
}