Last active
August 29, 2015 13:58
-
-
Save RyanSnodgrass/10049517 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| class Game | |
| attr_reader :horse_graphic | |
| def initialize | |
| @my_horse = Horse.new(true) | |
| @matz = Horse.new | |
| @david = Horse.new | |
| @horse_graphic = %{ | |
| (\\(\\_ | |
| _.0 o\\\\\\\\ | |
| ("_ )))) | |
| '---' (((( .=, | |
| ) )))___.-""-./=;\\\\\\ | |
| / ((( \\ )))) | |
| ; | |// | |
| /\\ | | (( | |
| ( \\ /__.-'\\ / ) | |
| \\` | / \\ \\ | | |
| \\ \\ ; \\(\\( | |
| || || || || | |
| || || || || | |
| /_< /_< /_</_< | |
| This is your horse #{@my_horse.name}. | |
| ...He looks a little off. | |
| } | |
| puts @horse_graphic | |
| @walking_graphic = %{ | |
| _(\\_/) | |
| ,((((^`\\ | |
| (((( (6 \\ | |
| ,((((( , \\ | |
| ,,,_ ,((((( /"._ ,`, | |
| ((((\\ ,... ,(((( / `-.-' | |
| ))) ;' `"'"'""(((( ( | |
| ((( / ((( \\ | |
| )) | | | |
| (( | . ' | | |
| )) \ _ ' `t ,.') | |
| ( | y;- -,-""'"-.\\ \\/ | |
| ) / ./ ) / `\\ \\ | |
| |./ ( ( / /' | |
| || \\ //'| | |
| || \\ _//'|| | |
| || )) |_/ || | |
| \\_\\ |_/ \\ \\ | |
| Well, your horse only moved 1 space | |
| } | |
| @trotting_graphic = %{ | |
| ) `-=--. | |
| )/ ._.-' | |
| _.-=-...-' / | |
| \{\{| , | | |
| \{\{\\ | \\ /_ | |
| )) \\,'---'\\___\\ | |
| \{ )/\\ \\ >\\ | |
| // >\ >\`- | |
| `- ` - `- | |
| Congrats, your horse moved 2 spaces | |
| } | |
| @galloping_graphic = %{ | |
| `';;;;;;;;;;;;;, `'. .--'-._';, | |
| ,;;';;''/ `;_ `';;;;' `'. | |
| | . '-._ ,;;:' / '<a'. | |
| | ; \\ '.,;;' | \\ | |
| \\ \\ | ;._. ,-'`. | |
| /`'-`;.`'._ / / `-.\\_/ | |
| ; .-._ .-' .' | | |
| / / '\\ .-'`. _/ | |
| _.-' / \\\\ '-._ / | |
| (_/_.' __.) / `;--.._/ ( | |
| (_/__/ \\ `, \\ | |
| \\ | \\ \\ | |
| \\ \\ `\\ | | |
| \\ \\ \\ \\ | |
| \\_\\ \\ \\ | |
| )-`\ \\_\\ | |
| `==` )-`\\ | |
| Sweet! your horse moves 3 spaces! | |
| } | |
| @zero_graphic = %{ | |
| ./|,,/| | |
| < o o)\\' | |
| <\\ ( | | |
| <\\\\ |\\ | | |
| <\\\\\\ |(__) | |
| <\\\\\\\\ | | |
| THE HORSE GIVES YOU A BLANK LOOK | |
| AND DOES NOTHING | |
| } | |
| #draw_tracks | |
| end | |
| def draw_tracks | |
| @user_track = ["|====|", @my_horse.name] | |
| @matz_track = ["|====|", "matz"] | |
| @david_track = ["|====|", "david"] | |
| play_game | |
| end | |
| def play_game | |
| puts "Before we race, here's how the commands work:" | |
| @command_explanation = %{ | |
| 'spur' to spur your horse | |
| 'snap' to snap the reigns | |
| 'hyah' to yell real loud | |
| 'whip' to whip the horse} | |
| puts @command_explanation | |
| puts "when you're ready, press any key and hit enter" | |
| initializer = gets.chomp | |
| countdown = 3 | |
| while countdown > 0 | |
| system 'clear' | |
| puts "READY?" | |
| puts countdown | |
| sleep 1 | |
| countdown -= 1 | |
| end | |
| puts "GO!" | |
| print "\n #{@user_track*""}" | |
| print "\n #{@matz_track*""}" | |
| print "\n #{@david_track*""}" | |
| until @user_track.flatten.length > 12 or @matz_track.flatten.length > 12 or @david_track.flatten.length > 12 | |
| run_command | |
| @matz.bot_run.to_i | |
| @david.bot_run.to_i | |
| display_track | |
| end | |
| if @user_track.flatten.length > 12 | |
| puts "Hurray! you are a winrar" | |
| return | |
| elsif @matz_track.flatten.length > 12 | |
| puts "aww, matz won" | |
| return | |
| elsif @david_track.flatten.length > 12 | |
| puts "shoot, david won" | |
| return | |
| end | |
| end | |
| def display_track | |
| system 'clear' | |
| @user_track.insert(1, [@my_horse.gallops] * @progress) | |
| @user_track.flatten!.reject! { |a| a.empty?} | |
| @matz_track.insert(1, [@matz.gallops] * @matz.bot_progress) | |
| @matz_track.flatten! | |
| @david_track.insert(1, [@david.gallops] * @david.bot_progress) | |
| @david_track.flatten! | |
| print @user_track*"" | |
| print "\n" | |
| print @matz_track*"" | |
| print "\n" | |
| print @david_track*"" | |
| case @progress | |
| when 1 | |
| puts @walking_graphic | |
| when 2 | |
| puts @trotting_graphic | |
| when 3 | |
| puts @galloping_graphic | |
| else | |
| puts @zero_graphic | |
| end | |
| end | |
| def run_command | |
| @base_roll = rand(10) | |
| puts @command_explanation | |
| #should display the meaning of the commands | |
| #like spur is reliable but not fast | |
| #while whip is hihgly effective but has a high chance for failure | |
| @command = gets.chomp | |
| case @command | |
| when "spur" | |
| @new_roll = @base_roll * (rand(6..10)) | |
| when "snap" | |
| @new_roll = @base_roll * (rand(7..8)) | |
| when "hyah" | |
| @new_roll = @base_roll * (rand(1..7)) | |
| when "whip" | |
| @new_roll = @base_roll * (rand(6..9)) | |
| else | |
| puts "Hurry up! Only enter 'kick' 'snap' hyah' or 'whip'!" | |
| run_command | |
| end | |
| case @new_roll | |
| when (1..30) | |
| @progress = 1 | |
| when (31..60) | |
| @progress = 2 | |
| when (60..90) | |
| @progress = 3 | |
| else | |
| @progress = 0 | |
| end | |
| end | |
| end | |
| class Horse | |
| attr_reader :name, :gallops, :bot_progress | |
| def initialize(users_horse = false) | |
| users_horse = users_horse | |
| if users_horse == true | |
| get_name | |
| else | |
| bot_run | |
| end | |
| @gallops = "-_ " | |
| end | |
| def get_name | |
| puts "what is your horse's name?" | |
| @name = gets.chomp | |
| end | |
| def bot_run | |
| @bot_progress = rand(1..2) | |
| end | |
| end | |
| #placeholder = Game.new |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Lines 149-154 are pretty repetitive -- why not extract it out into a method that you can pass the horse to as an argument?
The play_game method is HUGE. Can definitely be broken down a lot into simpler methods that each achieve one goal. Actually, that's the biggest feedback for you right now -- break things down into smaller pieces. Otherwise, well done :)