The Ultimate RPS is a fun and diferent approach for one of the most famous games of the world. Now as a backend application in a mock terminal you can have fun and chellange the computer for a 5 round game. If you in 3 times out of 5 a surprise is gonna be unlocked. Also pay attention to the hints and make a smart choice to become the RPS Legeng. Have fun!
- The Ultimate RPS
- Contents
- THANK YOU!
i. As a First time user I want to be able to intuitively learn how to play the game without even reading the Rules.
ii. But if needed check the Rules and see if its clear.
iii. I might have to contact the developer for any bug or leave a message.
iv. Have fun!
i. As returning user I want the be able to play the game.
ii. Check if there is any updates to the game.
iii. Have fun!
i. As frequent user I want the be able to play the game.
ii. Check if there is anyupdates to the game.
iii. Have fun!
-
The flowchart was a very useful tool to plan ahead and understand how to build the application below you can see the chart that was made using the Lucid
- The idea was to build a terminal based application with smooth transitions to make the UX even more seamless and intuitive. I added few diagrams to make the game more user friendly and make look better as you can see the Features section.
As part of the game a landing area presents the Rock, Paper, Scissors and Gun as hints of how to "unlock" the Legend by selecting the gun to win over all options:
Welcome message gives the user a clear idea of the game and a 4.5 second to see this message while game is loading is a user friendly interaction.
The main menu gives the user clear options to select and navigate through it.
Rules are clear and easy to understand making user experience more effective regarding to know how to play the game and use the system.
Credits option gives the user to contact the developer in case o bugs or issues found, or to get in touch for futures projects
Once the user start the game it prints to the console a Rock, Paper, Scissors diagram to show user the options also prints the Round counter and a score section to keep track the progress of the game. Finally asks the user to input the option as the user can type "r" "R" "rock" respectivly to the options available. If not a "Invalid option will be printed"
Once a valid option is selected it will show what was selected and generated randomly by the computer
The system will compare the computer and the user choice and print an outcome for that round. Also increasing the round and the score if win or lose round
In case the round is Tied a message will be showed and no score will be increased
After 5 rounds system will compare the scores and print a final message:
If user wins:
If user lose:
If its a tie:
Hidden Features
The user can see the hints and "unlock" the hidden features. If user selects the "Gun" he will automatically will the game and a "Legend" message will be printed:
If the user wins 3 out of 5 rounds the user will be asked to "finish" the computer the "Fatality" will be printed:
For future features I think would be nice to make a colourful game for better user experience also implement if the user wins 3 times in a row he could activate the "nuclear bomb" and win the game. Those hidden features could make a difference and keep the users interested to play more and discover and unlock them. Also by adding a "raking" where user the input name and challange friends and keep record how many times user beated the computer.
The game was tested and validate with PEP8CI with no errors. However the diagrams apresented a few flags and the solution is in the Bugs and Issues section of this file.
Debugging and troubleshooting were done constantly throughout development.
the PEP8CI presented a few flags regarding to the diagrams and the solutions I found for those was to add "r" before some to the diagrams layout and a "# noqa" and the end of the diagrams, as you can see highlighted in the yellow box of the image below:
The links a found the solution are credited in the Credits section of this file.
I used the following technologies, platforms and support in building my project:
- The application was built in Python.
- The Code Institute modules/lessons aided my learning and many of the concepts learned were applied in this project.
- GitHub was used for the project repository.
- Code Anywhere - for IDE and editor of the code.
- Heroku was used for application deployment.
- PEP8CI Validator - for error and issues with the code
- Lucid - Flowchart used on readme file.
GitHub Deployment
First of all you need to have a GitHub account and I choose it because it's free and easy to create a repository to host your code and share with others.-
To create a repository you just need to go to the main page at the top right you will see a "+" button just click here and then new repository
-
Select the name of the project and a description make it public and then create a repository
-
Once you created your repository go the settings section and then click on pages
-
Select the Branch as main and then save it.
-
Finally, your repository is deployed and it should show you a link so you can share it with others.
Cloning the Repo
- Click on the "Code" button near the top right corner of the page.
- Copy the HTTPS or SSH URL that appears in the box. Open your terminal (or Git Bash on Windows) and navigate to the directory where you want to clone the repository.
- Type "git clone" followed by a space, and then paste the URL you copied in step 3.
- Press enter to run the command. This will clone the repository onto your local machine.
- You should now have a local copy of the GitHub repository on your machine.
Forking the Repo
- Click the "Fork" button near the top right corner of the page. This will create a copy of the repository in your own GitHub account.
- Once the fork is complete, you will be redirected to the forked repository in your account.
- If you haven't already, clone the forked repository to your local machine using the steps outlined in the previous answer.
- Make any changes or additions you want to the code in your local copy of the repository.
- Commit your changes to your local repository using the "git commit" command.
- Push your changes to the forked repository on GitHub using the "git push" command.
- If you want to contribute your changes back to the original repository, create a pull request by going to the original repository's page and clicking the "New pull request" button. From there, you can compare your changes to the original repository and request that they be merged.
- You should now have a forked copy of the GitHub repository in your account, and you can make changes to it and contribute back to the original repository if desired.
Heroku Deployment
- First of all you need to have a Heroku account.
- From the Dashboard, click "New" - "Create new app".
- Enter a name for the app. Click "Create App".
- Connect your GitHub account and select the repository and branch to deploy.
- When you create the app, you will need to add two buildpacks from the Settings tab. The ordering is as follows:
- heroku/python
- heroku/nodejs
- You must then create a Config Var called PORT. Set this to 8000.
- Code Institute - Python Module and Tutor Support.
- Code Institute Python Template - Template for Python mock terminal in Heroku.
- GitHub - for deployment and host.
- Code Anywhere - for IDE and editor of the code.
- Precious Ijege - Mentor helping with insights and coding fix.
- Tiago Fortaleza Gai - Helped throughout the project developing troubleshooting and debugging.
- W3 Schools - used for multiples researches and tutorials in HTML and CSS.
- Stack Overflow - solutions for the diagrams issue mentioned in the Bugs and Issues of this file
- PEP8 ORG - solution for the flags regarding the diagrams in the PEP8 Validator mentioned in the Bugs and Issues of this file.
- Real Python - Also provide with clarity the solution mentinoed in the Bugs and Issues of this file.
- Lucid - Flowchart used on readme file.
- Pinterest - Background image for the page.
- Patorjk - provider with different fonts in diagrams terminal based.
- ASCII Art - provided gun ASCII art.
This project was fun and challenging at the same time. I learned so much while developing and trying to enhance a simple and old game was the biggest creative challange. My mentor Precious Ijege was fundamental to guide me and take the right approaches to the project, I can not forget to say a huge thanks to Tiago Fortaleza Gai that helped me a lot with programming logics and helped me to debbug the code when I was stucked. I loved the final version of the game and I can say I'm proud of the final version and excited to keep updating and adding future features.
by Cesar Garcia