Inspiration

We started off by planning to use Java's Object Oriented Programming as part of our project, to build on top of what we learnt in school and to gain additional knowledge and experience on what it is like to work as a team. Our team happened to chance upon the idea of Game Theory, particularly on the Prisoner's Dilemma. Hence, inspired by the unique strategies formulated out of it, we decided to create our own Game Theory Simulation: the best way to win at a childhood game that we all had played before, Scissors, Paper, Stone!

Bots showcase

  1. Randy - Chooses a random option for each round.
  2. Steady - Chooses a random option for the first round, then sticks to that option forever.
  3. Copycat - Chooses Scissors for the first round, then chooses whatever the opponent chooses for subsequent rounds.
  4. RolyPoly - Chooses the option in a cycle that follows Rock, Paper, then Scissors.
  5. BeatPrev - Chooses Scissors for the first round, then chooses the option that beats the opponent's choice for subsequent rounds.
  6. Permute - Similar to RolyPoly, but this time the cycles are random.
  7. Human - Mimics human behaviour, which includes probabilities of when to switch during a win, loss, or tie.
  8. JumpShip - When draw, it chooses randomly. When loss, it chooses an option that beats the opponent's choice.
  9. OuttaBlue - When win, it chooses the opponent's choice. When loss or tie, it chooses a move that was not chosen by both the bot and the opponent.
  10. BeatSelf - Similar to BeatPrev, but this time, it chooses the option that beats itself.
  11. RockandStone - Rock.
  12. StrikeThree - Chooses a random option for the first round and sticks to it. When the opponent chooses an option 3 times in a row, it will change to another option randomly.

What it does

We created many strategies (also known as "bots"), which followed a set of rules and regulations to follow, and pit them against other bots in multiple rounds to see who will emerge on top. Each bot is carefully crafted to take advantage of opponent bots and to outwit them, with many attempts to gain an advantage through clever wit and intriguing twists. After all the bots have faced each other, we will tabulate the results and rank them to determine the best strategy to use to win.

How we built it

We used Java to create multiple Bots in different classes and a main function class to run the "showdown". There are a total of 12 bots, each with its unique strengths and weaknesses. Our team extensively sieved through the Internet to gather the best and interesting strategies to pit against each other.

Challenges we ran into

Finding different strategies seems to always be a huge hurdle for us, as it takes a creative mind to come up with various ways to win your opponents in Scissors, Paper, Stone. Nevertheless, we managed to build upwards of 12 unique and interesting bots that you can try.

Accomplishments that we're proud of

Being able to come up with different strategies, and formulating the best way to win at Scissors, Paper, Stone.

What we learned

Java OOP. We realised the importance of having good code readability such that we are able to work together well as a team. It is such a lifesaver to be able to work on different class files at the same time, minimising the dreaded merge errors in GitHub!

What's next for Scissors, Paper, Showdown!

Not amused by our strategy? Believe that yours is better? Face your bot off against our range of competitive bots! In the future, we plan to build a whole interface for the bot showdown, as well as a data dashboard that displays results in real-time!

Also, we plan to create even more unique and mind-bending strategies to beat our current ace bot.

Built With

Share this project:

Updates