Midterm Project Progress: Interactive Fantasy Game

For this project, I decided to transform a short fantasy story I wrote in primary school into an interactive game using p5.js. The game has multiple choices that affect the storyline, but in the end, all paths lead to the same outcome. There are a total of 5 key decision points and 14 different screens in the game.

One of my biggest challenges was implementing the buttons. I initially tried to create them using object-oriented programming (OOP), but it became too confusing because the button positions change so frequently from screen to screen so i just used the built-in function createButton().

Currently, the game has a pink background, but I plan to replace it with images that reflect the setting of each screen, adding to the immersive experience. I also intend to incorporate sound effects that correspond to the events in the story to further enhance the game’s atmosphere.

During this week, I’ll be focusing on:

**Using OOP for the buttons instead of builtin functions

**Adding some sounds and background images

The part I’m most proud of so far is the overall structure of the different screens and managing the transitions between them as it  took a lot of time to figure out how to switch between screens smoothly.

Here is the code snippet of the screens and buttons changing:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
function draw() {
background('pink');
//The Screen is picked based on the screen number
if (screen === 0) {
showStartScreen();
} else if (screen === 1) {
showBirthdayScreen();
} else if (screen === 11) {
showSuppliesScreen();
} else if (screen === 12) {
showWeaponScreen();
} else if (screen === 111) {
showNightScreen();
} else if (screen === 112) {
showMorningScreen();
} else if (screen === 121) {
showNightScreen();
} else if (screen === 122) {
showMorningScreen();
} else if (screen === 1111 || screen === 1121 || screen === 1211 || screen === 1221) {
showRiverScreen();
} else if (screen === 1112 || screen === 1122 || screen === 1212 || screen === 1222) {
showForestScreen();
} else if (screen === 11000 || screen === 12000 || screen === 21000 || screen === 22000) {
showNextScreen();
} else if (screen === 5000) {
showDragonCaveScreen();
} else if (screen === 5001) {
showInsideScreen();
} else if (screen === 5002) {
showOutsideScreen();
} else if (screen === 5003) {
showTrapScreen();
} else if (screen === 262626) {
showFinalScreen();
}
}
function mousePressed() {
if (screen == 0 && isMouseOver(enterButton)) {
screen = 1;
hideAllButtons();
showBirthdayScreen();
} else if (screen == 1) {
if (isMouseOver(suppliesButton)) {
screen = 11;
hideAllButtons();
showSuppliesScreen();
} else if (isMouseOver(weaponButton)) {
screen = 12;
hideAllButtons();
showWeaponScreen();
}
} else if (screen === 11) {
if (isMouseOver(nightButton)) {
screen = 111;
hideAllButtons();
showNightScreen();
} else if (isMouseOver(morningButton)) {
screen = 112;
hideAllButtons();
showMorningScreen();
}
} else if (screen === 12) {
if (isMouseOver(nightButton)) {
screen = 121;
hideAllButtons();
showNightScreen();
} else if (isMouseOver(morningButton)) {
screen = 122;
hideAllButtons();
showMorningScreen();
}
} else if (screen === 111) {
if (isMouseOver(riverButton)) {
screen = 1111;
hideAllButtons();
showRiverScreen();
} else if (isMouseOver(forestButton)) {
screen = 1112;
hideAllButtons();
showForestScreen();
}
} else if (screen === 112) {
if (isMouseOver(riverButton)) {
screen = 1121;
hideAllButtons();
showRiverScreen();
} else if (isMouseOver(forestButton)) {
screen = 1122;
hideAllButtons();
showForestScreen();
}
} else if (screen === 121) {
if (isMouseOver(riverButton)) {
screen = 1211;
hideAllButtons();
showRiverScreen();
} else if (isMouseOver(forestButton)) {
screen = 1212;
hideAllButtons();
showForestScreen();
}
} else if (screen === 122) {
if (isMouseOver(riverButton)) {
screen = 1221;
hideAllButtons();
showRiverScreen();
} else if (isMouseOver(forestButton)) {
screen = 1222;
hideAllButtons();
showForestScreen();
}
} else if (screen === 1111 || screen === 1121 || screen === 1211 || screen === 1221) {
if (isMouseOver(fishButton)) {
screen = 11000;
hideAllButtons();
showNextScreen();
} else if (isMouseOver(riverspiritsButton)) {
screen = 12000;
hideAllButtons();
showNextScreen();
}
} else if (screen === 1112 || screen === 1122 || screen === 1212 || screen === 1222) {
if (isMouseOver(firefliesButton)) {
screen = 21000;
hideAllButtons();
showNextScreen();
} else if (isMouseOver(forestspiritsButton)) {
screen = 22000;
hideAllButtons();
showNextScreen();
}
} else if (screen === 11000 || screen === 12000 || screen === 21000 || screen === 22000) {
if (isMouseOver(next1Button)) {
screen = 5000;
hideAllButtons();
showDragonCaveScreen();
}
} else if (screen === 5000) {
if (isMouseOver(insideButton)) {
screen = 5001;
hideAllButtons();
showInsideScreen();
} else if (isMouseOver(outsideButton)) {
screen = 5002;
hideAllButtons();
showOutsideScreen();
} else if (isMouseOver(trapButton)) {
screen = 5003;
hideAllButtons();
showTrapScreen();
}
} else if (screen === 5001 || screen === 5002 || screen === 5003) {
if (isMouseOver(next2Button)) {
screen = 262626;
hideAllButtons();
showFinalScreen();
}
}
}
function draw() { background('pink'); //The Screen is picked based on the screen number if (screen === 0) { showStartScreen(); } else if (screen === 1) { showBirthdayScreen(); } else if (screen === 11) { showSuppliesScreen(); } else if (screen === 12) { showWeaponScreen(); } else if (screen === 111) { showNightScreen(); } else if (screen === 112) { showMorningScreen(); } else if (screen === 121) { showNightScreen(); } else if (screen === 122) { showMorningScreen(); } else if (screen === 1111 || screen === 1121 || screen === 1211 || screen === 1221) { showRiverScreen(); } else if (screen === 1112 || screen === 1122 || screen === 1212 || screen === 1222) { showForestScreen(); } else if (screen === 11000 || screen === 12000 || screen === 21000 || screen === 22000) { showNextScreen(); } else if (screen === 5000) { showDragonCaveScreen(); } else if (screen === 5001) { showInsideScreen(); } else if (screen === 5002) { showOutsideScreen(); } else if (screen === 5003) { showTrapScreen(); } else if (screen === 262626) { showFinalScreen(); } } function mousePressed() { if (screen == 0 && isMouseOver(enterButton)) { screen = 1; hideAllButtons(); showBirthdayScreen(); } else if (screen == 1) { if (isMouseOver(suppliesButton)) { screen = 11; hideAllButtons(); showSuppliesScreen(); } else if (isMouseOver(weaponButton)) { screen = 12; hideAllButtons(); showWeaponScreen(); } } else if (screen === 11) { if (isMouseOver(nightButton)) { screen = 111; hideAllButtons(); showNightScreen(); } else if (isMouseOver(morningButton)) { screen = 112; hideAllButtons(); showMorningScreen(); } } else if (screen === 12) { if (isMouseOver(nightButton)) { screen = 121; hideAllButtons(); showNightScreen(); } else if (isMouseOver(morningButton)) { screen = 122; hideAllButtons(); showMorningScreen(); } } else if (screen === 111) { if (isMouseOver(riverButton)) { screen = 1111; hideAllButtons(); showRiverScreen(); } else if (isMouseOver(forestButton)) { screen = 1112; hideAllButtons(); showForestScreen(); } } else if (screen === 112) { if (isMouseOver(riverButton)) { screen = 1121; hideAllButtons(); showRiverScreen(); } else if (isMouseOver(forestButton)) { screen = 1122; hideAllButtons(); showForestScreen(); } } else if (screen === 121) { if (isMouseOver(riverButton)) { screen = 1211; hideAllButtons(); showRiverScreen(); } else if (isMouseOver(forestButton)) { screen = 1212; hideAllButtons(); showForestScreen(); } } else if (screen === 122) { if (isMouseOver(riverButton)) { screen = 1221; hideAllButtons(); showRiverScreen(); } else if (isMouseOver(forestButton)) { screen = 1222; hideAllButtons(); showForestScreen(); } } else if (screen === 1111 || screen === 1121 || screen === 1211 || screen === 1221) { if (isMouseOver(fishButton)) { screen = 11000; hideAllButtons(); showNextScreen(); } else if (isMouseOver(riverspiritsButton)) { screen = 12000; hideAllButtons(); showNextScreen(); } } else if (screen === 1112 || screen === 1122 || screen === 1212 || screen === 1222) { if (isMouseOver(firefliesButton)) { screen = 21000; hideAllButtons(); showNextScreen(); } else if (isMouseOver(forestspiritsButton)) { screen = 22000; hideAllButtons(); showNextScreen(); } } else if (screen === 11000 || screen === 12000 || screen === 21000 || screen === 22000) { if (isMouseOver(next1Button)) { screen = 5000; hideAllButtons(); showDragonCaveScreen(); } } else if (screen === 5000) { if (isMouseOver(insideButton)) { screen = 5001; hideAllButtons(); showInsideScreen(); } else if (isMouseOver(outsideButton)) { screen = 5002; hideAllButtons(); showOutsideScreen(); } else if (isMouseOver(trapButton)) { screen = 5003; hideAllButtons(); showTrapScreen(); } } else if (screen === 5001 || screen === 5002 || screen === 5003) { if (isMouseOver(next2Button)) { screen = 262626; hideAllButtons(); showFinalScreen(); } } }
function draw() {
  background('pink');
  //The Screen is picked based on the screen number
  if (screen === 0) {
    showStartScreen();
    } else if (screen === 1) {
    showBirthdayScreen();
  } else if (screen === 11) {
    showSuppliesScreen();
  } else if (screen === 12) {
    showWeaponScreen();
  } else if (screen === 111) {
    showNightScreen();
  } else if (screen === 112) {
    showMorningScreen();
  } else if (screen === 121) {
    showNightScreen();
  } else if (screen === 122) {
    showMorningScreen();
  } else if (screen === 1111 || screen === 1121 || screen === 1211 || screen === 1221) {
    showRiverScreen();
  } else if (screen === 1112 || screen === 1122 || screen === 1212 || screen === 1222) {
    showForestScreen();
  } else if (screen === 11000 || screen === 12000 || screen === 21000 || screen === 22000) {
    showNextScreen();
  } else if (screen === 5000) {
    showDragonCaveScreen();
  } else if (screen === 5001) {
    showInsideScreen();
  } else if (screen === 5002) {
    showOutsideScreen();
  } else if (screen === 5003) {
    showTrapScreen();
  } else if (screen === 262626) {
    showFinalScreen();
  }
}

function mousePressed() {
  if (screen == 0 && isMouseOver(enterButton)) {
    screen = 1;
    hideAllButtons();
    showBirthdayScreen();
  } else if (screen == 1) {
    if (isMouseOver(suppliesButton)) {
      screen = 11;
      hideAllButtons();
      showSuppliesScreen();
    } else if (isMouseOver(weaponButton)) {
      screen = 12;
      hideAllButtons();
      showWeaponScreen();
    }
  } else if (screen === 11) {
    if (isMouseOver(nightButton)) {
      screen = 111;
      hideAllButtons();
      showNightScreen();
    } else if (isMouseOver(morningButton)) {
      screen = 112;
      hideAllButtons();
      showMorningScreen();
    }
  } else if (screen === 12) {
    if (isMouseOver(nightButton)) {
      screen = 121;
      hideAllButtons();
      showNightScreen();
    } else if (isMouseOver(morningButton)) {
      screen = 122;
      hideAllButtons();
      showMorningScreen();
    }
  } else if (screen === 111) {
    if (isMouseOver(riverButton)) {
      screen = 1111;
      hideAllButtons();
      showRiverScreen();
    } else if (isMouseOver(forestButton)) {
      screen = 1112;
      hideAllButtons();
      showForestScreen();
    }
  } else if (screen === 112) {
    if (isMouseOver(riverButton)) {
      screen = 1121;
      hideAllButtons();
      showRiverScreen();
    } else if (isMouseOver(forestButton)) {
      screen = 1122;
      hideAllButtons();
      showForestScreen();
    }
  } else if (screen === 121) {
    if (isMouseOver(riverButton)) {
      screen = 1211;
      hideAllButtons();
      showRiverScreen();
    } else if (isMouseOver(forestButton)) {
      screen = 1212;
      hideAllButtons();
      showForestScreen();
    }
  } else if (screen === 122) {
    if (isMouseOver(riverButton)) {
      screen = 1221;
      hideAllButtons();
      showRiverScreen();
    } else if (isMouseOver(forestButton)) {
      screen = 1222;
      hideAllButtons();
      showForestScreen();
    }
  } else if (screen === 1111 || screen === 1121 || screen === 1211 || screen === 1221) {
    if (isMouseOver(fishButton)) {
      screen = 11000;
      hideAllButtons();
      showNextScreen();
    } else if (isMouseOver(riverspiritsButton)) {
      screen = 12000;
      hideAllButtons();
      showNextScreen();
    }
  } else if (screen === 1112 || screen === 1122 || screen === 1212 || screen === 1222) {
    if (isMouseOver(firefliesButton)) {
      screen = 21000;
      hideAllButtons();
      showNextScreen();
    } else if (isMouseOver(forestspiritsButton)) {
      screen = 22000;
      hideAllButtons();
      showNextScreen();
    }
  } else if (screen === 11000 || screen === 12000 || screen === 21000 || screen === 22000) {
    if (isMouseOver(next1Button)) {
      screen = 5000;
      hideAllButtons();
      showDragonCaveScreen();
    }
  } else if (screen === 5000) {
    if (isMouseOver(insideButton)) {
      screen = 5001;
      hideAllButtons();
      showInsideScreen();
    } else if (isMouseOver(outsideButton)) {
      screen = 5002;
      hideAllButtons();
      showOutsideScreen();
    } else if (isMouseOver(trapButton)) {
      screen = 5003;
      hideAllButtons();
      showTrapScreen();
    }
  } else if (screen === 5001 || screen === 5002 || screen === 5003) {
    if (isMouseOver(next2Button)) {
      screen = 262626;
      hideAllButtons();
      showFinalScreen();
    }
  }
}

Here is the game:

Leave a Reply