Create a Monster Battle game where players select 3 monsters from a pool of 20, each with unique abilities and elemental types. Players and the computer opponent take turns using abilities to defeat each other's monsters. The game emphasizes strategy, with features like type effectiveness, AI opponents, and score tracking. Use any language you'd like.
A working agreement is essentially a promise to you or to your team on habits and processes you agree to follow while working on a project.
Tip: Try to incorporate as many of these habits as possible, as is they aim to reflect a real-world workflow vs just hacking away at something. They are designed to keep you organized and ensure you deliver a quality product.
As a developer, I agree to handle errors gracefully and provide feedback to the user.
As a developer, I agree to ensure each story is properly tested. (A lot of times it can be a pain to test a CLI's tool main function, you'll understand when you get there, try your best, 100% code coverage is not required)
As a developer, I agree to create a new git branch for each story I work on.
Initialize the game with basic setup tasks, including loading monsters and setting up the player's and computer's teams.
As a player, I want the game to start with a welcome message and instructions, so that I know how to play the game and what to expect.
As a player, I want the game to ask for my name at the start, so that I can personalize my game experience.
As a developer, I want the game to load monster data from a JSON file, so that the game can easily use and update the list of monsters.
As a player, I want the computer to have a randomly selected team of monsters, so that each game feels unique.
Allow the player to choose their team of monsters to prepare for battle.
As a player, I want to see a list of available monsters, so that I can make an informed decision about which monsters to choose.
As a player, I want to choose 3 monsters from the available list, so that I can form my battle team.
As a player, I want to confirm my selected team of monsters, so that I can proceed to battle with confidence.
Implement a simple turn-based battle system to allow players and the computer to take turns using direct attacks.
As a player, I want to choose which of my monsters will be the active monster at the start of the battle, so that I can begin the fight with my preferred strategy.
As a player, I want the battle to be turn-based, so that I have time to think and plan my moves strategically.
As a player, I want to choose which ability my monster will use during its turn, so that I can control the flow of the battle.
As a player, I want the computer opponent to select moves intelligently, so that the battle feels challenging and engaging.
As a player, I want to see the HP of my monsters and the opponent's monsters update in real-time, so that I can track the progress of the battle.
As a player, I want the game to clearly indicate when the battle has ended and who the winner is, so that I can feel the satisfaction of victory or learn from defeat.
Define the conditions under which a player or the AI wins or loses the battle, and provide appropriate feedback and options at the end of the game.
As a player, I want the game to clearly define how to win, so that I know what I am aiming for during the battle.
As a player, I want the game to display a victory message when I win, so that I can feel a sense of accomplishment.
As a player, I want the game to display a defeat message when I lose, so that I can understand the outcome and try again.
As a developer, I want to test all possible win and loss scenarios, so that the game correctly handles each outcome.
Enhance the game’s replayability by offering different game modes, encouraging players to play multiple times and experience varied challenges.
As a player, I want the game to offer options at the end of the battle, so that I can choose whether to play again or exit.
As a player, I want to be able to start a new battle with my team, so that I can skip the monster selection process
As a player, I want to be able to start a new battle with a new team, so that I play with new monsters.
Add complexity to the battle system by implementing type effectiveness, where the effectiveness of each attack is influenced by the types of the attacking and defending monsters.
As a player, I want the game to account for type advantages and disadvantages, so that my strategic decisions are rewarded.
As a player, I want the game to calculate damage modifiers based on type effectiveness, so that I can see how effective my attacks are.
As a player, I want to see feedback on the effectiveness of my attacks, so that I can adjust my strategy during the battle.
As a developer, I want to test and balance the type effectiveness system, so that the game remains fair and enjoyable.
Add complexity to the abilities that monsters can use during battle, including various effects like healing, status changes, and stat adjustments.
As a player, I want to use abilities that heal my monsters, so that I can prolong their survival during battles.
As a player, I want to use abilities that inflict status effects on the opponent's monsters, so that I can gain an advantage in battle.
As a player, I want to use abilities that temporarily boost my monsters' stats or weaken the opponent's stats, so that I can strategically alter the flow of battle.
Develop a more sophisticated AI system for the computer-controlled opponent, making strategic decisions based on the battle's state.
As a player, I want the computer opponent to make strategic decisions, so that I am challenged to think critically during the battle.
As a player, I want the computer opponent to switch monsters when necessary, so that it can adapt to my strategy and provide a tougher challenge.
Implement a system to track and save the player's win/loss record across multiple games.
As a player, I want the game to keep track of how many battles I have won and lost, so that I can monitor my progress over time.
As a player, I want my score and battle record to be saved to a JSON file, so that I can continue tracking my progress in future sessions.
As a player, I want the game to load my previous score data at the start, so that my progress is not lost between sessions.
As a player, I want to view my win/loss record at any time, so that I can see how well I've been performing.
As a developer, I want to test the score tracking system thoroughly, so that it accurately records and retrieves the player's performance data.