Sprint Review
Sprint Review
Sprint Review
This sprint marked the beginning of our software engineering project, and we made
significant strides toward our goals. We created several essential classes, including the
"Player Class," "Game class," "Board class," and "BoardSpace class." Building
relationships with classes such as “Difficulty” and “Dice” allowed us to follow our Class
Diagram to implement the game logic we had constructed.
During this sprint, we had to focus on developing the basic functionality of essential
classes since these were created from scratch. We made significant progress on resolving
the "Player Class basic functionality" task, which included taking balance out of the
constructor arguments, implementing business rules to prevent invalid space numbers,
and removing the unnecessary "notifyOfTurn()" method. For the “displayBalance()” we
added a rule to ensure that a Player could not continue with a negative balance, and that
a verififcation was requested via a boolean in the updateBalance(int amount) so that the
game method can know if this was successful.
We also developed the basic User Interface for player creation in the "Game class" task
and added more tests to the Game class to ensure functionality. In the "Board class" task,
we set up the board, created Enums for reference, and added several test cases. We
made significant amendments to the Board class and BoardSpace class, including adding
an ArrayList to hold all board spaces and implementing the "spaces" array in the Board
class constructor.
The "Developing go-space" task involved incorporating the Go space functionality and
creating tests for it with little changes needed.
On the "Implement Difficulty Logic" task, we refactored the setup to include difficulty and
round limits, fixed a bug in the difficulty setup, and removed the medium difficulty option
to streamline the gameflow. In the "Developing eco-site functionality" task, we added
EcoSite functionality and put board size attributes in the Board class and added the
"isOwned" method.
Regarding the "Trivia Questions" task, we set up the trivia questions easy and hard by
reading them in via a CSV file and sorting them by Eco related themes. We also made
adjustments to the method to take in a String fileName and search for the file in a
/questions/ directory, which will make it easier to add multiple difficulty levels.
Lastly, we resolved merge conflicts with the main branch on GitLab and reassessed our
Junit tests as the methods and classes were updated. We reduced and cleaned up any
unwanted code for a better final product.
Overall, despite being our first sprint, we were able to create several significant classes
and resolve several essential tasks. We will continue to work on the remaining tasks as
we progress into the next sprint. Unfortunately, we were unable to finish the game loop
and ending game logic within this sprint due to dependencies on other tasks from other
members. Therefore, we have pushed this task to the next sprint to complete. Overall,
we made significant progress during this sprint and resolved several critical tasks. We will
continue to work on the majority remaining tasks and aim to complete them in the next
sprint.
Sprint Tasks Completed:
General fixes
Tests for most classes needed reimplemented as outdated/updated code throughout the
course of the sprint.
Updates Requested:
Take balance out of the constructor args since all players start with same balance
add a business rule that doesn't allow a method to set an invalid space number e.g. <0
or >boardsize
notifyOfTurn() this method isn’t necessary it should probably come naturally in the
gameflow
We should not be including any UI logic at all in classes that aren't the userInterface
class, so this should be returned as a string. https://java-programming.mooc.fi/part-6/2-
separating-user-interface-from-program-logic - single-responsibility and we can write it up
as easier to upgrade in future e.g. if we wanted to add a gui we would only need to
update the userInterface class
if the user's balance would become negative then this should not be allowed (business
rule)
Return a boolean (true/false) so that the game method can know if this was successful
public Player() I would say we don't need a default constructor, it will never be called
without arguments, and if you do remove it I think setBalance() can go as well
Commits Added:
Commits Added:
- Basic ui that creates players
Commits Added:
Updates Requested:
dice being an object that is called, pass an array in as per dice size( set by organiser) and
an array of results returned to player
Make the 2 dice instance vars of board class which is called in the constructor, as well as
an instance var of ArrayList which holds all the board spaces
- added spaces array to Board class, added name business rule to boardspace...
- changed to arraylist, removed location attribute from boardspace class and subclasses
Commits Added:
Commits Added:
Commits Added:
- developed EcoSite Functionality and put board size attributes in board class
Updates Requested:
make it so that this method takes in a String fileName (e.g. "trivia_easy") and this goes
into the new File() constructor and also looks for it in a directory called /questions/ so the
full file path would then be eg "/questions/trivia_easy.csv" This will make it easier when
we go to add the multiple difficulties of questions
Commits Added:
reduce this entire if condition to just throw this exception - there's no point creating a
new file if it doesn't exist because players have no questions due to with trivia arrays - in
the game loop we can check for a filenotfound during the difficulty selection and just
return there or ask them to pick a different difficulty due to the files being missing, that's
the point of this check. Stick the name of he file in the exception too e.g. "File " + path +
" not found"
these 2 trivia methods could be put down to 1 method that takes in the difficulty enum
as the parameter