The application will be similar to the game Wordle, but with more advanced features and options. The original game is about guessing a random 5-letter word. The user is given 6 chances; for each guess, you are told which letters are correct and whether they are in the right position. Expanding on the original game, my application will have additional features:
- an "endless" feature, where the game continues, instead of stopping after one word, until the user fails to guess the word or quits playing
- custom word lengths
- custom number of guess attempts
- more than one word at a time (i.e. guessing 2+ words at the same time)
- countdown timers
- local score tracking and leaderboards
In general, the application is made for anybody who enjoys word games or puzzles, or those who want a fun, challenging way to test their logic and vocabulary skills. The application is also made for people who enjoy the original Wordle, but wish it had more replayability and elements of competition.
I like puzzles that involve vocabulary and require some thinking, such as Wordle, and I think that it could made more enjoyable from additional features and different game modes.
- As a user, I want to be able to start a new game and add multiple guesses until I solve the word or run out of attempts
- As a user, I want to be able to view a list of my previous guesses
- As a user, I want to be able to see whether the letters in my guesses were correct, in the wrong position, or incorrect
- As a user, I want to be able to continue guessing new words until I fail or quit
- As a user, I want to be able to change the word length and number of guess attempts
- As a user, I want to be able to save my settings and guess history to file from the menu
- As a user, I want to be able to load my settings and guess history from a file from the menu
- You can "add multiple Xs to a Y" by typing your guess into an input box and clicking the submit button
- You can generate the first required action related to the user story "adding multiple Xs to a Y" by viewing the results of specific games you have played in the history tab
- You can generate the second required action related to the user story "adding multiple Xs to a Y" by filtering the games where you guessed the word correctly in the history tab
- You can locate my visual component by successfully guessing the word, or running out of guess attempts
- You can save the state of my application by clicking the "Save" button in the settings tab
- You can reload the state of my application by clicking the "Load" button in the settings tab
Fri Mar 28 13:07:36 PDT 2025
Added to list of answers in history: APPLE
Fri Mar 28 13:07:36 PDT 2025
Added to list of guesses for APPLE: OCEAN
Fri Mar 28 13:07:40 PDT 2025
Added to list of guesses for APPLE: BEACH
Fri Mar 28 13:07:43 PDT 2025
Added to list of guesses for APPLE: APPLE
Fri Mar 28 13:07:54 PDT 2025
Added to list of answers in history: LAMP
Fri Mar 28 13:07:54 PDT 2025
Added to list of guesses for LAMP: DAWN
Fri Mar 28 13:08:00 PDT 2025
Added to list of guesses for LAMP: YARD
Fri Mar 28 13:08:03 PDT 2025
Added to list of guesses for LAMP: LAMP
One aspect of the program design that I would refactor is the relationships between Game, App, SettingsTab, and the JsonReader and JsonWriter classes. Currently, both App and SettingsTab have fields of type JsonReader and JsonWriter. However, these classes also have access to an instance of the Game class, so if I were to move the JsonReader and JsonWriter classes "higher" up in the diagram, by making them fields of Game, for example, the App and SettingsTab classes would no longer need direct associations to the JSON-related classes. Another solution could be to create a new abstract class which contains relevant methods for reading and writing JSON data, and having GuesserUI and App extend this class. This way, there is a type that categorizes the behaviour of GuesserUI and App, which both handle the main UI elements of the game, and there is no need for multiple associations to the JSON-related classes.