I am creating a basic dungeon game where you spawn into a randomly generated dungeon and you need to fight monsters.
I just did a random generator where it will move a simulated character around the screen and draw a path of rectangles behind it. This is good and all but now that I am working on implimenting the character, I realise that I cannot detect collision with the background. I am attempting to use color collision. My current color detection is on line 94 and has a comment on 93. Here is my code so far (It is very long. Too lazy to trim it):
int rectNum = 0; int gx = 400; int gy = 400; int gr; int rx1 = -100; int rx2 = -100; int rx3 = -100; int rx4 = -100; int rx5 = -100; int rx6 = -100; int rx7 = -100; int rx8 = -100; int rx9 = -100; int rx10 = -100; int rx11 = -100; int rx12 = -100; int rx13 = -100; int rx14 = -100; int rx15 = -100; int rx16 = -100; int rx17 = -100; int rx18 = -100; int rx19 = -100; int rx20 = -100; int ry1; int ry2; int ry3; int ry4; int ry5; int ry6; int ry7; int ry8; int ry9; int ry10; int ry11; int ry12; int ry13; int ry14; int ry15; int ry16; int ry17; int ry18; int ry19; int ry20; int i = 0; int gc = 0; int whileCount = 0; int x; int y; int sx = 25; int sy = 25; int draw = 0; int right = 0; int left = 0; int up = 0; int down = 0; int speed = 3; void setup() { size(900, 900); } void draw() { background(0, 0, 0); fill(#696969); noStroke(); rect(rx1, ry1, 50, 50); rect(rx2, ry2, 50, 50); rect(rx3, ry3, 50, 50); rect(rx4, ry4, 50, 50); rect(rx5, ry5, 50, 50); rect(rx6, ry6, 50, 50); rect(rx7, ry7, 50, 50); rect(rx8, ry8, 50, 50); rect(rx9, ry9, 50, 50); rect(rx10, ry10, 50, 50); rect(rx11, ry11, 50, 50); rect(rx12, ry12, 50, 50); rect(rx13, ry13, 50, 50); rect(rx14, ry14, 50, 50); rect(rx15, ry15, 50, 50); rect(rx16, ry16, 50, 50); rect(rx17, ry17, 50, 50); rect(rx18, ry18, 50, 50); rect(rx19, ry19, 50, 50); rect(rx20, ry20, 50, 50); if (draw == 1) { fill(#FF00AA); ellipse(x, y, 20, 20); x += (right - left) * speed; y += (down - up) * speed; } //Current Color Collision if (get(x - 5, y) == color(0, 0, 0) || get(x + 5, y) == color(0, 0, 0) || get(x, y + 5) == color(0, 0, 0) || get(x, y - 5) == color(0, 0, 0)) { x += (left - right) * speed; y += (up - down) * speed; println("eeee"); } stroke(0); strokeWeight(20); noFill(); rect(0, 0, 900, 900); if (i < 21) { gc = 0; whileCount = 0; while (gc == 0) { whileCount ++; if (whileCount > 20) { reset(); } gr = int(random(1, 5)); println("While Stats: " + i + " " + gr + " " + whileCount); if (gr == 1) { if (gy + 50 < 900) { if (get(gx + 25, gy - 25) == color(0)) { gc = 1; gy -= 50; i++; } } } if (gr == 2) { if (gy - 50 > 0) { if (get(gx + 25, gy + 75) == color(0)) { gc = 1; gy += 50; i++; } } } if (gr == 3) { if (gx + 50 < 900) { if (get(gx + 75, gy + 25) == color(0)) { gc = 1; gx += 50; i++; } } } if (gr == 4) { if (gx - 50 > 0) { if (get(gx - 25, gy + 25) == color(0)) { gc = 1; gx -= 50; i++; } } } if (i == 1) { rx1 = gx; ry1 = gy; } if (i == 2) { rx2 = gx; ry2 = gy; } if (i == 3) { rx3 = gx; ry3 = gy; } if (i == 4) { rx4 = gx; ry4 = gy; } if (i == 5) { rx5 = gx; ry5 = gy; } if (i == 6) { rx6 = gx; ry6 = gy; } if (i == 7) { rx7 = gx; ry7 = gy; } if (i == 8) { rx8 = gx; ry8 = gy; } if (i == 9) { rx9 = gx; ry9 = gy; } if (i == 10) { rx10 = gx; ry10 = gy; } if (i == 11) { rx11 = gx; ry11 = gy; } if (i == 12) { rx12 = gx; ry12 = gy; } if (i == 13) { rx13 = gx; ry13 = gy; } if (i == 14) { rx14 = gx; ry14 = gy; } if (i == 15) { rx15 = gx; ry15 = gy; } if (i == 16) { rx16 = gx; ry16 = gy; } if (i == 17) { rx17 = gx; ry17 = gy; } if (i == 18) { rx18 = gx; ry18 = gy; } if (i == 19) { rx19 = gx; ry19 = gy; } if (i == 20) { rx20 = gx; ry20 = gy; } } } if (i > 20 && draw == 0) { if (get(sx, sy) == color(105, 105, 105)) { x = sx; y = sy; draw = 1; } else { if (sx > 875) { sx = 25; sy += 50; } else { sx += 50; } } } } void reset() { rectNum = 0; gx = 400; gy = 400; gr = 0; rx1 = -100; rx2 = -100; rx3 = -100; rx4 = -100; rx5 = -100; rx6 = -100; rx7 = -100; rx8 = -100; rx9 = -100; rx10 = -100; rx11 = -100; rx12 = -100; rx13 = -100; rx14 = -100; rx15 = -100; rx16 = -100; rx17 = -100; rx18 = -100; rx19 = -100; rx20 = -100; ry1 = 0; ry2 = 0; ry3 = 0; ry4 = 0; ry5 = 0; ry6 = 0; ry7 = 0; ry8 = 0; ry9 = 0; ry10 = 0; ry11 = 0; ry12 = 0; ry13 = 0; ry14 = 0; ry15 = 0; ry16 = 0; ry17 = 0; ry18 = 0; ry19 = 0; ry20 = 0; i = 0; gc = 0; whileCount = 0; x = -100; y = 0; sx = 25; sy = 25; draw = 0; } void keyPressed() { if (key == 'w') {up = 1;} if (key == 's') {down = 1;} if (key == 'a') {left = 1;} if (key == 'd') {right = 1;} } void keyReleased() { if (key == 'w') {up = 0;} if (key == 's') {down = 0;} if (key == 'a') {left = 0;} if (key == 'd') {right = 0;} }
If anyone knows how to detect collision with a background color that would be absolutely amazing! Anything helps!