The 10x10 Challenge Tracker is a tool designed to assist users in keeping track of their 10x10 challenge.
The 10x10 Challenge is a self imposed challenge undertaken by hobby board-game enthusiasts. The purpose of the challenge is to encourage players to explore the strategic depth of games in their collections, rather than swapping out old games for new ones after a handful of plays. The challenge consists of choosing 10 of lesser-played games from one’s collection, and playing these games 10 times each.
- I want to be able to log the games that I play while partaking in this challenge
- I want to have access to an overview of my progress through the challenge
- I want to be able to access the data I have entered.
- The Challenge tracker was designed so that after interacting with each “function” of the tool, the user would be directed back to the welcome menu where they would only be one input away from the next function they wished to use.
- This design mean that once users had finished inputting data, or viewing the different types of overviews, the instructions as to how to return to the menu only took up one line of the terminal, rather than the 3 or 4 lines that would have been necessary to present the user with all of the available and relevant functions. This decision was made to avoid unnecessary clutter on the terminal, which was especially important on the challenge overview page, where it is important that the complete overview can be viewed in the terminal without scrolling.
Pictured above is the protoype/wireframe flowchart
The foundation of the 10x10 Challenge Tracker is a google sheets spreadsheet, which is where the data logged by the user is stored. The game_type sheet stores the titles of each game, the titles of their corresponding worksheets, as well as an entry for their game type, which will determine whether or not they are treated as a score-based game by the program.
Each game will have its own worksheet where details of logged plays will be recorded. These sheets can be edited by the user to allow them to replace the placeholder titles with the titles of the games they wish to undertake the challenge with.
Upon running the program the user will be presented with the ‘welcome menu’. The header of the menu contains a brief summary of the tool’s purpose. Below the header, there is a list of four options as to how the user may proceed, each with a corresponding number. The user is instructed to choose one of these options by entering its number.
If the user inputs anything other than the listed numbers, the program will inform them of this error and request that they enter a valid input.
If the user selects the first option in the welcome menu, which reads ‘To see an overview of your progress in the challenge, enter 1’, the program will generate a graph of their progress in the challenge. Each game of the ten they have chosen will have a progress graph printed beneath its name, as well as a numerical ‘counter’. The solid blocks on the graph represent logged plays of a given game, while the shaded blocks represent how many plays remain before the challenge is complete.
When all 10 games have been played, the numerical counter will change from ‘9/10 games played’ to ‘10/10 games played - Game completed!’. If the user logs any further plays of this game, the progress graph and counter will not reflect these changes, as the tool is designed for tracking progress across this challenge specifically.
Below the 10th and final graph in this overview there is another numerical counter which tracks the user’s overall progress through the challenge.
The second option in the welcome initiates the process for logging a ‘play’ or session of a given game in that games associated google sheet. The user will first be requested to select the game they wish to log a play of from a list of the 10 games chosen for the challenge.
Users will first be requested to enter the duration of their game in minutes. This process will only accept integers that are greater than or equal to 10, and less than or equal to 500, as values outside of this range suggest that the game in question isn’t compatible with the purpose of the challenge.
If the game is assigned the game type of score_based in the game_type sheet created by the user, then the user will be requested to enter a winning score when logging a play of this game. The validation for this input only requires the winning score to be an integer value, as many games feature very low scores, or even negative scoring.
The user will then be requested to enter a brief description of the result of the game they played. This is important as not all games have a score-based single-winner outcome. Allowing users to enter a description of their session allows them to capture the important details about the game. This input will only accept between 10 and 60 characters, as values below this range are unlikely to be usefully descriptive, and values above this range make the viewing of session logs more cluttered and difficult to read.
The details entered by the user are summarised once this process is complete. The user is then presented with an updated progress graph for the game in question, as well as a prompt to return to the welcome menu. It should be noted that players may log plays after completing 10 plays of a given game, however these plays will not be reflected in the graphs, counters, or statistics generated by the program
The third option in the welcome menu allows the user to see detailed data about a their plays of a single game. They are first prompted to choose a game from their list, just as when inputting data. Upon choosing a game, the user is presented with a printout containing formatted data from the plays they have logged of that game, up to their 10th play. This printout will only list a “score” if the selected game is of the score_based ‘type’.
The final option presented to the player in the welcome menu is the guide. This guide offers a simple summary of the functions of the 10x10 Challenge Tracker
- This program was written in Python.
- The IDE used was Gitpod.
- Flowcharts were created using LucidChart.
- Heroku was used for deployment.
- GoogleSheets was used as a rudimentary database.
- GoogleAPI was used to interface with GoogleSheets.
See TESTING.MD for testing details.
See DEPLOYMENT.md for deployment details
- Characters for challenge progress graphs http://www.amp-what.com/unicode/search/block
- Instructions for google APIs, credentials from Code Institute’s Love Sandwiches walkthrough project
- Github template from Code Institutes Python essentials template https://github.com/Code-Institute-Org/python-essentials-template
Many thanks to my Code Institute mentor Tim who suggested helpful resources, and gave me much useful advice regarding this project.