Project
studio_game_dylan_attal
## Studio Game Demo App
I made this app following along with The Pragmatic Studio's Ruby course found here: https://pragmaticstudio.com/courses/ruby.
## Install the gem
I published the gem for this app on RubyGems.org. In order to install it, run
`gem install studio_game_dylan_attal-1.0.0.gem`
## Run the app
In order to run the app run the following command
`studio_game`
## Summary
This is a console app that simulates a game.
Players are loaded from the `players.csv` file be default. Each player has a name and a starting health value, i.e.:
`Larry,100`
If the user wants, they can provide a different CSV file to load the players. For example, I've provided a file `my_favorite_players.csv` as an alternate list of players. The user should provide the file like so
`studio_game bin/my_favorite_players.csv`
Before the game is played, the user gets to decide how many rounds to play. At this point, the user can also terminate the program by typing in `quit` or `exit`:
`How many game rounds? ('quit to exit')`
Once the user provides the number of rounds, the game is played automatically. The user then sees
1. Which players are involved
```
There are 5 players in Knuckleheads:
I'm Boba with a health = 100, points = 0, and score = 100.
I'm Jango with a health = 90, points = 0, and score = 90.
I'm Din with a health = 80, points = 0, and score = 80.
I'm Klutz with a health = 105, points = 0, and score = 105.
I'm Berserker with a health = 50, points = 0, and score = 50.
```
2. Which treasures there are to find
```
There are 6 treasures to be found:
A pie is worth 5
A bottle is worth 25
A hammer is worth 50
A skillet is worth 100
A broomstick is worth 200
A crowbar is worth 400
```
3. The results of each round
```
Round 1
Rolled a 3 (StudioGame::Die)
Rolled a 4 (StudioGame::Die)
Boba has been skipped
Boba found a skillet worth 100 points.
Boba's treasures: {:skillet=>100}
I'm Boba with a health = 100, points = 100, and score = 200.
Rolled a 3 (StudioGame::Die)
Rolled a 2 (StudioGame::Die)
Jango got blammed!
Jango found a bottle worth 25 points.
Jango's treasures: {:bottle=>25}
I'm Jango with a health = 80, points = 25, and score = 105.
Rolled a 1 (StudioGame::Die)
Rolled a 6 (StudioGame::Die)
Din got w00ted!
Din found a crowbar worth 400 points.
Din's treasures: {:crowbar=>400}
I'm Din with a health = 95, points = 400, and score = 495.
Rolled a 1 (StudioGame::Die)
Rolled a 4 (StudioGame::Die)
Klutz has been skipped
Klutz found a bottle worth 12.5 points.
Klutz's treasures: {:bottle=>12.5}
I'm Klutz with a health = 105, points = 12.5, and score = 117.5.
Rolled a 1 (StudioGame::Die)
Rolled a 4 (StudioGame::Die)
Berserker has been skipped
Berserker found a hammer worth 50 points.
Berserker's treasures: {:hammer=>50}
I'm Berserker with a health = 50, points = 50, and score = 100.
```
Once the user quits, they see the final results of all the rounds:
```
How many game rounds? ('quit to exit')
quit
Knuckleheads Statistics:
2 strong players:
Boba (115)
Klutz (120)
3 wimpy players:
Jango (85)
Din (75)
Berserker (40)
Berserker........... 690
Boba................ 620
Din................. 575
Jango............... 235
Klutz............... 207.5
Boba's point totals:
100 total skillet points
5 total pie points
400 total crowbar points
505 grand total points
Jango's point totals:
50 total bottle points
100 total skillet points
150 grand total points
Din's point totals:
400 total crowbar points
100 total hammer points
500 grand total points
Klutz's point totals:
12.5 total bottle points
25.0 total hammer points
50.0 total skillet points
87.5 grand total points
Berserker's point totals:
50 total hammer points
200 total broomstick points
400 total crowbar points
650 grand total points
```
## Rules of the game
Each round, each player rolls the die.
If a player rolls between 1 and 2, then they are `blammed`, meaning they lose `10 health`.
If a player rolls between 3 and 4, then they are `skipped`, meaning they do not gain or lose points that turn.
If a player rolls between 5 and 6, then they are `w00ted`, meaning they gain `15 health`.
Each round, players can find treasure worth different points. Treasures are found randomly.
Every game, there are two special players added:
1. `ClumsyPlayer`: this player's treasure points are cut in half.
2. `BerserkPlayer`: once this player is `w00ted` five times, it cannot be `blammed` in that game anymore—if this player rolls between 1 and 2, they are `w00ted` instead of `blammed`.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
Development
Licenses
MIT
Dependencies
Development
~> 2.8, >= 2.8.0