# Course:CPSC312-2017-Slot-Machine

## Title

Authors: James, Laura

### What is the problem?

We are interested in implementing a slot machine simulation game using Haskell.

We are looking to implement two different ways of winning: spin the reels and/or play the mini-game. In story mode, the player will need to collect different items to win the game. In the limited-time mode, the player needs to achieve certain points to win the game.

For example:

The user will put down the bet and then push spin,

The slot machine has 3 reels with 10 results on each reel. Prize money increases with the number of credits played.

If two of the same kind appear in the result the win credits will be double that of the bet.

If three of the same kind appear in the result the win credits will be triple that of the bet.

If two of the reels are BONUS then the player will be directed to the bonus mini-game mode.

etc...

### What is the something extra?

Instead of using random number generation, we intend to adjust the win rate to increase/decrease the game difficulty. The win rate will base on the amount of user’s bet. The higher the user’s bet, the higher the win rate. It will also be based on the number of times the user played the game, the more the user plays the higher the winning rate goes.

Mini-games are incorporated into the plain slot machine as bonus games to encourage playing. The user can play the bonus mini-games when the combination has at least two BOUNS.

### What did we learn from doing this?

What is the bottom-line? Is logic programming suitable for (part of) the task? Make sure you include the evidence for your claims. The logic programming is great for making games. We managed to make the main file for the game around 200 lines of code, and two integrated mini-games implemented with 80 lines of code each. All the user inputs are well constrained by Haskell build-in function readMaybe, it is a really handy tool to use. We think the downside of this programming language is it's not so easy to build an interactive GUI. Programmers might need to use some other packages or IDE to complete the design.

```Slot Machine Repository