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:
//The Screen is picked based on the screen number
} else if (screen === 1) {
} else if (screen === 11) {
} else if (screen === 12) {
} else if (screen === 111) {
} else if (screen === 112) {
} else if (screen === 121) {
} else if (screen === 122) {
} else if (screen === 1111 || screen === 1121 || screen === 1211 || screen === 1221) {
} else if (screen === 1112 || screen === 1122 || screen === 1212 || screen === 1222) {
} else if (screen === 11000 || screen === 12000 || screen === 21000 || screen === 22000) {
} else if (screen === 5000) {
} else if (screen === 5001) {
} else if (screen === 5002) {
} else if (screen === 5003) {
} else if (screen === 262626) {
function mousePressed() {
if (screen == 0 && isMouseOver(enterButton)) {
} else if (screen == 1) {
if (isMouseOver(suppliesButton)) {
} else if (isMouseOver(weaponButton)) {
} else if (screen === 11) {
if (isMouseOver(nightButton)) {
} else if (isMouseOver(morningButton)) {
} else if (screen === 12) {
if (isMouseOver(nightButton)) {
} else if (isMouseOver(morningButton)) {
} else if (screen === 111) {
if (isMouseOver(riverButton)) {
} else if (isMouseOver(forestButton)) {
} else if (screen === 112) {
if (isMouseOver(riverButton)) {
} else if (isMouseOver(forestButton)) {
} else if (screen === 121) {
if (isMouseOver(riverButton)) {
} else if (isMouseOver(forestButton)) {
} else if (screen === 122) {
if (isMouseOver(riverButton)) {
} else if (isMouseOver(forestButton)) {
} else if (screen === 1111 || screen === 1121 || screen === 1211 || screen === 1221) {
if (isMouseOver(fishButton)) {
} else if (isMouseOver(riverspiritsButton)) {
} else if (screen === 1112 || screen === 1122 || screen === 1212 || screen === 1222) {
if (isMouseOver(firefliesButton)) {
} else if (isMouseOver(forestspiritsButton)) {
} else if (screen === 11000 || screen === 12000 || screen === 21000 || screen === 22000) {
if (isMouseOver(next1Button)) {
} else if (screen === 5000) {
if (isMouseOver(insideButton)) {
} else if (isMouseOver(outsideButton)) {
} else if (isMouseOver(trapButton)) {
} else if (screen === 5001 || screen === 5002 || screen === 5003) {
if (isMouseOver(next2Button)) {
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: