Python CYOA: The Heroic Princess?

Game Project: Hero Trial

Home Screen Inplay Screen

Try out the game!

Description of the Game

The purpose of the game is to eliminate as many monsters as you can
while trying to stay alive. Initially, there were supposed to be two
classes; however, we ran into some complications so the only class that
is currently available is the mage. The scoring system is based off of
how many monsters you've attacked and eliminated. The usage of random-
ness occurs in the script of the monster, in which their time to spawn is
random. The game gets difficult when the player reaches a total of 15
points. At that moment, a message will appear, notifying the player that
the game will get harder; specifically, the monsters will appear more fast
and often. When the player reaches a total of 30 points, a message will appear,
notifying the player that they have won the game. Since the player has a total
of three lives, the game ends whenever the player gets hit by a monster three times.

Reflection Piece

The inspiration behind the game was behind my partner Clement's childhood
dream of always wanting to be a hero, hence the title "Hero Trial". Also
the majority of the design of the game was based off of a mobile game
"Will Hero". One successful point within the development of the game was
how we managed to create our own pixelated sprites. Another successful
point of the game was the movement of the sprite, which made it possible
to avoid the monsters. However, as we spent the majority of our time creating
the sprites and the aesthetic of the game, we were left with little time to
program our actual game and ended up only being able to complete the mage
route. Another obstable that occured was the movement of the character, which
was eventually resolved after at least two days and again, left us with
insufficient time to develop the actual game. If we had more time, we would
definitely complete the warrior route as well as making more stages and a
boss stage, which we have the sprite for but never got to implement it as
there were too many complications to handle last minute.

Important Algorithm

algorithm

This is an essential algorithm to our game because without it, the user
wouldn't be able to move and it would be difficult to beat the game. It consists
of if-else commands that allow the player to move throughout the map freely.

Usage of More Blocks

moreblocks

The Heroic Princess?

The story is about a princess who one day wakes up in an unfamiliar castle,
unconscious of what happened or how she got there. A knight arrives through the
window to try and rescue her from the beast that is outside of their room.
The princess knows that the knight will not be able to fulfill his duties by
examining his cowardly personality and rusty armor, coming to the decision that
she must be the one to rescue them both.

Follow-up Reflection:

Within our CYOA, one iterative process that could be seen from our CYOA was
the decision points. Users were able to choose their own path and basically given
instructions on how to move on to their selected choice such as entering in the
letter 'Y' or even numbers like '1'. If the player was to type in something that
was not recognizable by the program, an error message would appear over and over
until they inputted in the correct choice. The incremental process behind this
program was basically just adding in functions, which are defined as separate scenes,
in order to fully establish the story and have it run from beginning to the end.
A minor difficulty that we encountered was figuring out how to let the user move
on if they were to type in a correct letter. At first, our program didn't move on
even if the user was to type in the desired input. We quickly resolved this problem
by making every choice as either '1' for this, or '2' for that instead of using letters.
Once we figured that out, the rest of the coding and storytelling was a breeze.

Organizing our scenes into separate functions made it easier to navigate through
the story. Because each function had its own name, we were able to know which part of
the story the functioned defined just by looking at the name of the function. This also
made it easy to call the function after a certain scene has ended. Overall, it allows
for more efficiency when it comes to choosing the next scene, fixing its errors, or even
adjusting the function in the future.

One of the stories that I've read was the Friendly Neighborhood Robber. I thought that
this story was well thought-out due to the various choices you were given and the possible
outcomes of each choice. I also enjoyed the twist at the end which made the story even
more interesting.