Preview:
int playerX, playerY; // Player position
int targetX, targetY; // Winning posssition
int box1X, box1Y; // Box 1 posssition
int box2X, box2Y; // Box 2 posssition
int box3X, box3Y; // Box 3 posssition
int box4X, box4Y; // Box 4 posssition
int box5X, box5Y; // Box 5 posssition
int box6X, box6Y; // Box 6 posssition
int box7X, box7Y; // Box 7 posssition
int box8X, box8Y; // Box 8 posssition
int box9X, box9Y; // Box 8 posssition
int box10X, box10Y; // Box 8 posssition
int tileSize = 40; // Size of each box in the maze
color playerColor = color(255, 0, 0); // Initial player color (red)
color[] boxColors = {#FF0000, #0000FF, #FFFF00, #FFC0CB, #FFA500}; // colors

// Maze layout 
int[][] maze = {
  {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
  {1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1},
  {1, 0, 0, 0, 0, 1, 1, 1, 0, 1, 1, 1, 1},
  {1, 1, 1, 1, 0, 1, 0, 1, 0, 0, 0, 0, 1},
  {1, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1},
  {1, 0, 1, 1, 0, 1, 0, 0, 0, 1, 1, 1, 1},
  {1, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1},
  {1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1},
  {1, 0, 0, 1, 1, 1, 1, 0, 1, 1, 1, 0, 1},
  {1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1},
  {1, 0, 1, 0, 0, 0, 1, 1, 1, 0, 1, 1, 1},
  {1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1},
  {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}
};

boolean reachedBox1 = false;


void setup() {
  size(520, 520);
  playerX = 1 * tileSize + tileSize / 2; // Initial player X position
  playerY = 1 * tileSize + tileSize / 2; // Initial player Y position
  targetX = 11 * tileSize + tileSize / 2; // winning X position
  targetY = 11 * tileSize + tileSize / 2; // Winning Y position
  box1X = 2 * tileSize + tileSize / 2; // Yellow Box 1 X position
  box1Y = 4 * tileSize + tileSize / 2; // Yellow Box 1 Y position
  box2X = 9 * tileSize + tileSize / 2; // Yellow Box 2 X position
  box2Y = 5 * tileSize + tileSize / 2; // Yellow Box 2 Y position
  box3X = 9 * tileSize + tileSize / 2; // Pink Box 3 X position
  box3Y = 7 * tileSize + tileSize / 2; // Pink Box 3 Y position
  box4X = 11* tileSize + tileSize / 2; // Pink Box 4 X position
  box4Y = 1 * tileSize + tileSize / 2; // Pink Box 4 Y position
  box5X = 11 * tileSize + tileSize / 2; // Blue Box 5 X position
  box5Y = 4 * tileSize + tileSize / 2; // Blue Box 5 Y position
  box6X = 8 * tileSize + tileSize / 2; // Blue Box 6 X position
  box6Y = 11 * tileSize + tileSize / 2; // Blue Box 6 Y position
  box7X = 8 * tileSize + tileSize / 2; // Red Box 7 X position
  box7Y = 3 * tileSize + tileSize / 2; // Red Box 7 Y position
  box8X = 7 * tileSize + tileSize / 2; // Red Box 8 X position
  box8Y = 9 * tileSize + tileSize / 2; // Red Box 8 Y position
  box9X = 6 * tileSize + tileSize / 2; // Red Box 8 X position
  box9Y = 3 * tileSize + tileSize / 2; // Red Box 8 Y position
  box10X = 7 * tileSize + tileSize / 2; // Red Box 8 X position
  box10Y = 1 * tileSize + tileSize / 2; // Red Box 8 Y position
  
}

void draw() {
  background(255);
  drawMaze();
  drawPlayer();
  drawTarget();
  drawBox(box1X, box1Y, boxColors[2]); // Draw Box with yellow
  drawBox(box2X, box2Y, boxColors[2]); // Draw Box with yellow
  drawBox(box3X, box3Y, boxColors[3]); // Draw Box with pink
  drawBox(box4X, box4Y, boxColors[3]); // Draw Box with pink
  drawBox(box5X, box5Y, boxColors[1]); // Draw Box with blue
  drawBox(box6X, box6Y, boxColors[1]); // Draw Box with blue
  drawBox(box7X, box7Y, boxColors[0]); // Draw Box with red
  drawBox(box8X, box8Y, boxColors[0]); // Draw Box with red
  drawBox(box9X, box9Y, boxColors[4]); // Draw Box with red
  drawBox(box10X, box10Y, boxColors[4]); // Draw Box with red


  if (playerX == targetX && playerY == targetY) {
    fill(0);
    textSize(80);
    textAlign(CENTER, CENTER);
    text("You Win!", width / 2, height / 2); // win message
  }

  // Check if the player reaches Box 1
  if (playerX == box1X && playerY == box1Y) {
    playerX = box2X; // Respawn the player at Box 2 X position
    playerY = box2Y; // Respawn the player at Box 2 Y position
    reachedBox1 = true;
  }
  if (playerX == box4X && playerY == box4Y) {
    playerX = box3X; // Respawn the player at Box 3 X position
    playerY = box3Y; // Respawn the player at Box 3 Y position
    reachedBox1 = true;
  }
  if (playerX == box7X && playerY == box7Y) {
    playerX = box8X; // Respawn the player at Box 8 X position
    playerY = box8Y; // Respawn the player at Box 8Y position
    reachedBox1 = true;
  }
  if (playerX == box6X && playerY == box6Y) {
    playerX = box5X; // Respawn the player at Box 5 X position
    playerY = box5Y; // Respawn the player at Box 5 Y position
    reachedBox1 = true;
  }
  if (playerX == box9X && playerY == box9Y) {
    playerX = box10X; // Respawn the player at Box 5 X position
    playerY = box10Y; // Respawn the player at Box 5 Y position
    reachedBox1 = true;
  }
}

void drawMaze() {
  for (int i = 0; i < maze.length; i++) {
    for (int j = 0; j < maze[i].length; j++) {
      if (maze[i][j] == 1) {
        fill(100);
        rect(j * tileSize, i * tileSize, tileSize, tileSize);
      }
    }
  }
}

void drawPlayer() {
  fill(playerColor);
  ellipse(playerX, playerY, tileSize * 0.8, tileSize * 0.8);
}

void drawTarget() {
  fill(0, 255, 0);
  rect(targetX - tileSize / 2, targetY - tileSize / 2, tileSize, tileSize);
}

void drawBox(int x, int y, color boxColor) {
  fill(boxColor); // Use the color
  rect(x - tileSize / 2, y - tileSize / 2, tileSize, tileSize);
}

void keyPressed() {
  int nextX = playerX;
  int nextY = playerY;

  if (keyCode == LEFT && maze[playerY / tileSize][(playerX - tileSize) / tileSize] != 1) {
    nextX -= tileSize;
  } else if (keyCode == RIGHT && maze[playerY / tileSize][(playerX + tileSize) / tileSize] != 1) {
    nextX += tileSize;
  } else if (keyCode == UP && maze[(playerY - tileSize) / tileSize][playerX / tileSize] != 1) {
    nextY -= tileSize;
  } else if (keyCode == DOWN && maze[(playerY + tileSize) / tileSize][playerX / tileSize] != 1) {
    nextY += tileSize;
  }

  if (nextX >= 0 && nextX < width && nextY >= 0 && nextY < height) {
    playerX = nextX;
    playerY = nextY;
  }
}

void mouseClicked() {
  playerColor = color(random(255), random(255), random(255));
}
downloadDownload PNG downloadDownload JPEG downloadDownload SVG

Tip: You can change the style, width & colours of the snippet with the inspect tool before clicking Download!

Click to optimize width for Twitter