Hello,
I’m the project manager at a Command Line Games, Inc. I have a small dev team and we hired a consulting company to help us build an app that will feature a number of games for children, one being Tic Tac Toe.
They just demoed the basic version of the Tic Tac Toe game in the console and my boss wasn’t thrilled with what he saw. The game play was rough. It didn’t function as he expected. We’ve decided to move in a different direction and bring in someone else. While my boss doesn’t have a technical background, I do, and we both understand the importance of writing code that can be maintained in the future.
We would like you to improve the existing Tic Tac Toe that the previous firm worked on. There are a number of issues with the code. Below I’ve listed some of those issues, but I’m sure there are more.
- The game does not gracefully handle bad user input.
- In its current form, it’s supposed to be played at a difficulty level of “hard”, meaning the computer player cannot be beaten. In reality, however, the computer player can be beaten in certain situations. This is more like a “medium” difficulty level.
- The game play left a lot to be desired. The user messages are lacking. They’re unclear. It’s confusing to see the spot that’s selected and the board all on the screen. It’s easy to get lost in what’s happening. It’s weird the way the computer picks its spot without notifying the user.
As you can tell, there are a lot of problems and from what our devs say, the code itself is a mess. It’s untested and therefore unmaintainable. It’s poorly-written and inflexible. This puts us in a difficult position because we have a number of features we would like to add and we’re hoping you can help. We hope that you’ll be able to help us get the code in a better state. Without that, our devs don’t even think we’ll be able to implement the new features my boss has requested. For one thing, the existing code is so coupled to the console that implementing any other UI is nearly impossible! Below you’ll see a list of the features we’re hoping to add.
- Allow the user to choose the game type (human v. human, computer v. computer, human v. computer).
- Allow the user to choose which player goes first.
- Allow the user to choose with what “symbol” the players will mark their selections on the board (traditionally it’s “X” and “O”).
Could you implement these features?
Thanks for your help, Ryan