So I’m making a escape room style game for a school class but i have no real idea how to make it work properly.
I have a ton of classes for different objects that i can place in different parts of the room, but i need to be able to have the character interact with them e.g. make it so when I go up to a desk a menu will pop up or when I go to the door with the key it will take you to a different room.
Here’s all of the code I’ve written. most of it is just the classes to make the different objects
var mmenu = true;
var menu=true;
var room1 = false;
var room2 = false;
var room3 = false;
var room4 = false;
function setup() {
createCanvas(400, 400);
bed = new Bed(130,75);
clo = new Closet();
chest = new Chest(50, 35);
kp = new Keypad(width / 2, height / 2, 16, 5);
kp2 = new Keypad2();
rug = new Rug(60, 90);
td = new Trapdoor(width / 2, height / 2, 60, 70, 15, 11);
step = new Step(width / 2, height / 2, 60, 70);
mir = new Mirror(width / 2, height / 2, 50, 6);
desk = new Desk(85, 47, 150, 75);
chair = new Chair(90, 95, 40, 35);
brb = new BIGREDBUTTON(width / 2, height / 2, 15, 15);
butt = new Button(width / 2, height / 2, 16,5);
pap= new Paper(width / 2, height / 2, 25,30);
ak= new Antiquekey(width / 2, height / 2,1,1);
nkey=new Key(width / 2, height / 2,1,1);
clock=new Clock(width / 2, height / 2,20,20);
walltb=new Wall(width/2,height-5,width/2,height-height+5,width,10);
walls=new Wall(width-5,height/2,width-width+5,height/2,10,height);
trash= new Trash(180,20,20,15);
flr=new Floor(0,200,10,height);
sprite= new Sprite();
}
function draw() {
background(220);
flr.display();
walltb.display();
walls.display();
bed.display();
clo.display();
//chest.display();
//kp.display();
//kp2.display();
//rug.display();
//td.display();
//step.display();
//mir.display();
chair.display();
desk.display();
//brb.display();
//butt.display();
//pap.display();
//ak.display();
//nkey.display();
//clock.display();
trash.display();
sprite.display();
sprite.move();
//this part was explained to me by another student and i kinda understand but not really
//if(mmenu){
//background();
//
//mousePressed(){
// if(user clicks start){
// mmenu=false
// room1=true
// }
// }
//}
//
//etc
//
}
//
//if(mmenu){
//background();
//
//mousePressed(){
// if(){
// mmenu=false
// room1=true
// }
// }
//}
//
//etc
//
class Bed {
constructor(l,w) {
this.x = 80
this.y = 200
this.w = w
this.l = l
this.d = 15
}
display() {
rectMode(CENTER);
fill(51, 31, 20);
stroke(33, 19, 11);
rect(this.x, this.y, this.l, this.w + 10);
fill(237, 214, 177);
rect(this.x, this.y, this.l, this.w);
fill(237, 224, 203);
rect(this.x - 42, this.y, this.l / 5, this.w / 2, 2);
fill(63, 0, 23);
rect(this.x + 15, this.y, this.l - 25, this.w);
fill(51, 31, 20);
rect(this.x - 63, this.y, this.l / 10, this.w);
rect(this.x + 63, this.y, this.l / 10, this.w);
ellipse(this.x - 63, this.y - 38, this.d);
ellipse(this.x + 63, this.y - 38, this.d);
ellipse(this.x + 63, this.y + 38, this.d);
ellipse(this.x - 63, this.y + 38, this.d);
}
interact() {
}
}
class Closet {
constructor() {
this.x = 365
this.y = 300
this.l = 50
this.w = 75
}
display() {
rectMode(CENTER);
//fill();
rect(this.x, this.y, this.l, this.w);
//fill();
rect(this.x, this.y, this.l / 1.2, this.w / 1.2);
rect(this.x, this.y - (this.w / 2.6), this.l / 1.2, this.w / 10);
rect(this.x, this.y - (this.w / 3.5), this.l / 1.2, this.w / 10);
rect(this.x, this.y - (this.w / 5.4), this.l / 1.2, this.w / 10);
rect(this.x, this.y - (this.w / 10), this.l / 1.2, this.w / 10);
rect(this.x, this.y + (this.w / 2.6), this.l / 1.2, this.w / 10);
rect(this.x, this.y + (this.w / 3.5), this.l / 1.2, this.w / 10);
rect(this.x, this.y + (this.w / 5.4), this.l / 1.2, this.w / 10);
rect(this.x, this.y + (this.w / 10), this.l / 1.2, this.w / 10);
}
interact() {
function keyPressed(){
if(key===32){
if(menu){
}
}
}
}
}
class Chest {
constructor(l, w) {
this.x = 200
this.y = 200
this.l = l
this.w = w
}
display() {
rectMode(CENTER);
//fill();
rect(this.x, this.y, this.l, this.w, 8, 8, 5, 5);
//fill();
rect(this.x - (this.l / 3), this.y, this.l / 10, this.w);
rect(this.x + (this.l / 3), this.y, this.l / 10, this.w);
}
interact() {
}
}
class Keypad {
constructor(x, y, l, w) {
this.x = x
this.y = y
this.l = l
this.w = w
}
display() {
rectMode(CENTER);
rect(this.x, this.y, this.l, this.w);
}
interact() {
}
}
class Keypad2 {
constructor() {
this.x = 200
this.y = 200
this.l = 225
this.w = 300
}
display() {
rectMode(CENTER);
//fill();
rect(this.x, this.y, this.l, this.w);
rect(this.x, this.y, this.l / 1.1, this.w / 1.08);
//fill
rect(this.x - 75, this.y, this.l / 5, this.w / 10);
rect(this.x - 25, this.y, this.l / 5, this.w / 10);
rect(this.x + 25, this.y, this.l / 5, this.w / 10);
rect(this.x + 75, this.y, this.l / 5, this.w / 10);
rect(this.x - 75, this.y + this.w / 5, this.l / 5, this.w / 10);
rect(this.x - 25, this.y + this.w / 5, this.l / 5, this.w / 10);
rect(this.x + 25, this.y + this.w / 5, this.l / 5, this.w / 10);
rect(this.x + 75, this.y + this.w / 5, this.l / 5, this.w / 10);
rect(this.x - 25, this.y + this.w / 2.55, this.l / 5, this.w / 10);
rect(this.x + 25, this.y + this.w / 2.55, this.l / 5, this.w / 10);
//fill();
rect(this.x, this.y - 85, this.l / 1.2, this.w / 3);
}
interact() {
}
}
class Rug {
constructor(l, w) {
this.x = width / 2
this.y = height / 2
this.l = l
this.w = w
}
display() {
rectMode(CENTER);
//fill();
rect(this.x, this.y, this.l, this.w);
//fill();
rect(this.x - this.l / 2.35, this.y, this.l / 6, this.w);
//fill();
rect(this.x - this.l / 3.8, this.y, this.l / 6, this.w);
//fill();
rect(this.x - this.l / 11, this.y, this.l / 6, this.w);
//fill();
rect(this.x + this.l / 2.35, this.y, this.l / 6, this.w);
//fill();
rect(this.x + this.l / 3.8, this.y, this.l / 6, this.w);
//fill();
rect(this.x + this.l / 11, this.y, this.l / 6, this.w);
}
interact() {
}
}
class Trapdoor {
constructor(x, y, l, w, hw, hl) {
this.x = x
this.y = y
this.l = l
this.w = w
this.hw = this.l / 4
this.hl = this.w / 6.1
}
display() {
rectMode(CENTER);
rect(this.x, this.y, this.l, this.w);
rect(this.x, this.y, this.l / 3, this.w);
rect(this.x, this.y - this.w / 2, this.l / 1.3, this.w / 10);
ellipse(this.x, this.y + this.w / 3, this.hw, this.hl)
ellipse(this.x, this.y + this.w / 3, this.hw / 1.3, this.hl / 2)
}
interact() {
}
}
class Step {
constructor(x, y, l, w) {
this.x = x
this.y = y
this.l = l
this.w = w
}
display() {
rectMode(CENTER);
fill(150);
rect(this.x, this.y, this.l, this.w);
fill(75);
rect(this.x, this.y, this.l, this.w / 3);
fill(25);
rect(this.x, this.y + this.w / 3, this.l, this.w / 3);
}
interact() {
}
}
class Mirror {
constructor(x, y, l, w) {
this.x = x
this.y = y
this.l = l
this.w = w
}
display() {
rectMode(CENTER);
fill(81, 51, 30);
rect(this.x, this.y, this.l, this.w);
}
interact() {
}
}
class Desk {
constructor(x, y, l, w) {
this.x = x
this.y = y
this.l = l
this.w = w
}
display() {
rectMode(CENTER);
fill(81, 51, 30);
stroke(40, 24, 12);
rect(this.x, this.y, this.l, this.w);
rect(this.x - (this.w / 1.04), this.y - 10, this.l / 30, this.w / 2);
rect(this.x + (this.w / 1.04), this.y - 10, this.l / 30, this.w / 2);
rect(this.x, this.y - (this.w / 3), this.l, this.w / 3);
fill(229, 222, 197);
ellipse(this.x - this.w / 2, this.y - this.w / 3, this.w / 6, this.w / 6);
noStroke();
fill(255, 244, 96);
ellipse(this.x + this.w / 1.2, this.y - this.w / 3, this.w / 5, this.w / 5);
fill(255, 244, 96, 150);
ellipse(this.x + this.w / 1.2, this.y - this.w / 3, this.w / 3, this.w / 3);
fill(72, 91, 56);
stroke(0);
rect(this.x, this.y + this.w / 6, this.l / 2, this.w / 1.7);
fill(237, 215, 201);
rect(this.x, this.y + this.w / 6, this.l / 2.4, this.w / 2.3);
rect(this.x + this.w / 2, this.y + this.w / 9, this.l / 8, this.w / 3);
}
interact() {
}
}
class Chair {
constructor(x, y, l, w) {
this.x = x
this.y = y
this.l = l
this.w = w
}
display() {
rectMode(CENTER);
fill(33, 28, 20);
rect(this.x, this.y, this.l, this.w, 10);
fill(48, 41, 29);
rect(this.x - this.l / 2.5, this.y, this.l / 5, this.w / 1.2, 3);
rect(this.x + this.l / 2.5, this.y, this.l / 5, this.w / 1.2, 3);
rect(this.x, this.y + this.w / 3, this.l, this.w / 3, 5);
}
interact() {
}
}
class BIGREDBUTTON {
constructor(x, y, l, w) {
this.x = x
this.y = y
this.l = l
this.w = w
}
display() {
rectMode(CENTER);
ellipseMode(CENTER);
rect(this.x, this.y, this.l, this.w);
ellipse(this.x, this.y, this.l * (2 / 3), this.w * (2 / 3));
}
interact() {
}
}
class Button {
constructor(x, y, l, w) {
this.x = x
this.y = y
this.l = l
this.w = w
}
display() {
rectMode(CENTER);
rect(this.x, this.y+this.w/1.5, this.l/2, this.w);
rect(this.x, this.y, this.l, this.w);
}
interact() {
}
}
class Paper {
constructor(x,y,l,w) {
this.x=x
this.y=y
this.l=l
this.w=w
}
display() {
rectMode(CENTER);
rect(this.x, this.y, this.l, this.w);
}
interact() {
}
}
class Antiquekey {
constructor(x,y,l,w) {
this.x=x
this.y=y
this.l=l
this.w=w
}
display() {
rectMode(CENTER);
ellipseMode(CENTER);
//noStroke();
fill(229, 192, 89);
rect(this.x,this.y,this.l*4,this.w*20);
rect(this.x-this.l*5.2,this.y-this.w*5,this.l*7,this.w*2);
rect(this.x-this.l*5.2,this.y-this.w,this.l*7,this.w*2);
ellipse(this.x-1,this.y+this.w*10,this.l*10,this.w*10);
}
interact() {
}
}
class Key {
constructor(x,y,l,w) {
this.x=x
this.y=y
this.l=l
this.w=w
}
display() {
rectMode(CENTER);
noStroke();
fill(229, 192, 89);
rect(this.x+1,this.y-6,this.l*3,this.w*12);
ellipse(this.x,this.y,this.l*7,this.w*7);
triangle(this.x,this.y-4,this.x-3,this.y-6,this.x,this.y-8);
triangle(this.x,this.y-8,this.x-3,this.y-10,this.x,this.y-12)
}
interact() {
}
}
class Clock {
constructor(x,y,l,w) {
this.x=x
this.y=y
this.l=l
this.w=w
}
display() {
rectMode(CENTER);
rect(this.x,this.y,this.l,this.w/1.5,0,0,3);
}
interact() {
}
}
class Wall{
constructor(x1,y1,x2,y2,l,w) {
this.x=x1
this.y=y1
this.x2=x2
this.y2=y2
this.l=l
this.w=w
}
display() {
rectMode(CENTER);
fill(51, 31, 20)
noStroke();
rect(this.x,this.y,this.l,this.w);
rect(this.x2,this.y2,this.l,this.w);
}
interact() {
}
}
class Door {
constructor() {
}
display() {
}
interact() {
}
}
class Trash {
constructor(x,y,l,w) {
this.x=x
this.y=y
this.l=l
this.w=w
}
display() {
rectMode(CENTER);
noStroke();
fill(255);
rect(this.x,this.y,this.l,this.w,10);
fill(200);
rect(this.x,this.y,this.l/1.2,this.w/1.2,10);
}
interact() {
}
}
class Floor{
constructor(x,y,l,w){
this.x=x
this.y=y
this.l=l
this.w=w
}
display(){
rectMode(CENTER);
for(this.x=0;this.x<=width;this.x+=10){
fill(155, 76, 27);
stroke(81, 35, 7);
rect(this.x,this.y,this.l,this.w);
}
}
}
class Sprite{
constructor(){
this.x=200
this.y=200
this.w=20
}
display(){
ellipse(this.x,this.y,this.w);
//rect(this.x,this.y,this.w*1.5,this.w/2,5);
}
move(){
if (keyIsDown(LEFT_ARROW)) {
this.x += -1.75
}
if (keyIsDown(RIGHT_ARROW)) {
this.x += 1.75
}
if (keyIsDown(UP_ARROW)) {
this.y += -1.75
}
if (keyIsDown(DOWN_ARROW)) {
this.y += 1.75
}
}
}