G. Conclusions and Recommendations

The instructions for this project was to design a computer-based game that would be programmed in MATLAB. The objective of the project was to simulate a realistic process of how a computer program would be created in a professional setting. The process required the initial use of logical problem-solving to create the conditions of the game, as well as the actual creation of the game through the MATLAB programming language. The decision of what game would be designed in this assignment was made by the team in question, resulting in the creation of a Yahtzee computer game.

The team had benefited from possessing two team members that had experience in computer programming, especially when it came to having already created programs that simulated card games. Thus, the team had chose Yahtzee as the game they would be designing for the project.  The process began with the creation of the initial algorithm, but the complexity of the game’s logic and processes was originally underestimated. One aspect of the final iteration of the software was the addition of a rule in the game where the user could not score twice in the same category within a single game.  This resulted in the creation of a new variable for each category where the program took note of when each category was scored in, and a safeguard being written to end that current round in case the user attempts to score twice in a single category within a single game. The team had also wrote the initial draft to score the set of dice at hand in the highest scoring category at the time, which would result in eventual error. The team had made the decision to then add the aspect of choice when it came to which category a set of dice would be scored in. For one, it would end the error that was mentioned before. And two, the impact that the user’s choices had in the game when it came to the scoring categories was considered a positive feature by those who tested it. One last feature that had to be added to the software was the outcome where the set of dice the user had did not fit the conditions of the scoring categories they attempted to score in. This feature was added to ensure that such an error would result in no points being gained.

After the problems mentioned above were resolved, the beta testers that were asked for their input on the game responded with positive remarks that the game accounted for almost every contingency that could have arisen in the game. The project seemed to be successful when it came to offering the team a genuine look at the development of software design as the final draft of the software was more than twice as long as the initial draft after having to compensate for all the different contingencies that would eventually arise due to an unorthodox response from the user. Thus, the team responsible for creating this software design project regarded this process as a success.

If any modifications to the program were to be made, the most likely change would be the changing of the prompt line that offered which categories the user could score in. This would mean updating the prompt line to assure that the user doesn’t forget that each time they score in a category, the options for future rounds decrease each time. This was a problem that arose during the beta testing as some testers had forgotten they had already scored in the Full House category before, for example. The team had attempted to create this feature by simply making the prompt line into a vector of strings that would delete the name of a category each time it was scored in by the user. However, this attempt was unsuccessful. Another modification is the feature of two users being able to compete against one another in a single game. This would allow for a heightened sense of attention and fun that could be added to the game, making it more entertaining for both users. An easy way to simulate this environment would be place the entirety of the program in a loop that always only runs twice, but the team thought that lead to the game being longer than it currently was under the play of only one user. Thus, the team made the decision to not include that feature as the feature was not placed in high importance in the original project description that was given to the team.