battleroom 0.0.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 9fee9b871377dbb3a8b65dca7fc1b07ac3d0a40c
4
+ data.tar.gz: 508d0df13ac79787d17a3bebdc4d1cda16d8842c
5
+ SHA512:
6
+ metadata.gz: bf4d28869289193c2a7ed72c5967fd6fafdfbf141d7911b4627a834cea0643ee723b771cf9302f7a3aa71aab9fffacbf3b90d2e3b9aaaf52cbe02ad6e53f3484
7
+ data.tar.gz: b625c24b4faedd8ad288fd843305b9d4bbf9a56fc5f744aaf99d63fda64e71952014ee3d167e7d3cecfea7aef218a5f424ab64c77ca8f296c8cf5492dae8a4b3
data/bin/battleroom ADDED
@@ -0,0 +1,85 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'battleroom'
4
+
5
+ # clear_display
6
+ # print "Welcome to the Battleroom.".blue
7
+ # while true
8
+ # print_prompt_with_options
9
+ # choice = gets.chomp.downcase
10
+ # clear_display
11
+
12
+ # # for eval
13
+ # b = binding
14
+
15
+ # case choice
16
+ # when "1"
17
+ # 10.times do
18
+ # question = VARIABLE_QUESTIONS.sample
19
+ # var_name = question[:var_name].sample
20
+ # var_value = question[:var_value].sample
21
+ # puts "Create a variable, #{var_name}, and assign it the #{question[:value_type]} value #{var_value}".blue
22
+ # answered_correctly = false
23
+ # until answered_correctly
24
+ # answer = gets.chomp
25
+ # begin
26
+ # b.eval(answer)
27
+ # if b.eval("#{var_name} == #{var_value}")
28
+ # answered_correctly = true
29
+ # puts random_congratulation.green
30
+ # else
31
+ # print "You mis-assigned #{var_name}. ".red + "Try Again!\n".green
32
+ # end
33
+ # rescue NameError
34
+ # print "Looks like you misnamed your variable. Often this will result in an error that says: \n\n".red
35
+ # print "\tundefined local variable or method \'WHATEVER_YOU_MISTYPED\'\n\n".green
36
+ # puts "Try again.".red
37
+ # rescue Exception => e
38
+ # puts e.message
39
+ # end
40
+ # end
41
+ # end
42
+ # when "2"
43
+ # 5.times do
44
+ # question = DATA_STRUCTURE_QUESTIONS.sample
45
+ # data_structure = question[:data_structure]
46
+ # if data_structure.class == Array
47
+ # answer_value = data_structure.sample
48
+ # hint = "index values start at 0."
49
+ # else
50
+ # answer_value = data_structure[data_structure.keys.sample]
51
+ # hint = "you have to use the EXACT hash key to retrieve the associated value."
52
+ # end
53
+ # answer_value = data_structure.class == Array ? data_structure.sample : data_structure[data_structure.keys.sample]
54
+ # # data_structure_binding = binding
55
+ # # provides the binding scope with the variable assignment necessary for future
56
+ # b.eval("#{question[:variable_name]} = #{question[:data_structure].to_s}")
57
+ # puts "Given the data structure below, how would you access '#{answer_value}'?".blue
58
+ # puts "#{question[:variable_name]} = #{question[:data_structure].to_s}".green
59
+ # answered_correctly = false
60
+ # until answered_correctly
61
+ # input = gets.chomp
62
+ # begin
63
+ # if b.eval(input) == answer_value
64
+ # puts random_congratulation.green
65
+ # answered_correctly = true
66
+ # sleep 1.5
67
+ # clear_display
68
+ # else
69
+ # puts "Wrong. Remember, #{hint} Try again.".red
70
+ # end
71
+ # rescue NameError
72
+ # puts "You're referencing a variable that doesn't exist, probably as the result of a mispelling. This results in a common error that says: \n\n".red
73
+ # puts "\tundefined local variable or method \'WHATEVER_YOU_MISTYPED\'\n".green
74
+ # puts "Get used to it and try again.".red
75
+ # end
76
+ # end
77
+ # end
78
+ # when "q"
79
+ # puts "Goodbye!".green
80
+ # break
81
+ # else
82
+ # puts "You entered a non-option. Try again.".red
83
+ # end
84
+ # end
85
+
@@ -0,0 +1,18 @@
1
+ module BattleroomMachinery
2
+
3
+ def clear_display
4
+ `reset`
5
+ end
6
+
7
+ def random_congratulation
8
+ ["Lovely work, my friend!\n", "Beautiful!\n", "Lovely!\n", "Splendid!\n", "Nice job! Keep it rolling!\n", "Capital work, battlestar!\n", "You're on your way!\n", "Exemplary work!\n", "Yeah!\n", "Roll on.\n", "You're making a prosperous go of this programming thing.\n", "Bullseye!\n"].sample
9
+ end
10
+
11
+ def print_prompt_with_options
12
+ puts "What would you like to work on?".blue
13
+ puts "1. Variable assignment"
14
+ puts "2. Accessing values from arrays/hashes"
15
+ puts "Q. Quit\r\n\n"
16
+ end
17
+
18
+ end
@@ -0,0 +1,82 @@
1
+ DATA_STRUCTURE_QUESTIONS = [
2
+ {
3
+ data_structure: ["Ender's Game", "Foundation", "Dune", "Cat's Cradle"],
4
+ variable_name: "sci_fi_books"
5
+ },
6
+ {
7
+ data_structure: ["Patches", "Falstaff", "Whiskers", "Trousers", "Sam"],
8
+ variable_name: "cat_names"
9
+ },
10
+ {
11
+ data_structure: {
12
+ num_wishes: 3,
13
+ location: ["Madison, WI", "Vancover, BC", "Denver, CO"].sample,
14
+ },
15
+ variable_name: ["genie_encounter", "meeting_with_satan_at_crossroads"].sample
16
+ },
17
+ {
18
+ data_structure: {
19
+ tiring: true,
20
+ distance: "13.1 miles",
21
+ },
22
+ variable_name: "brooklyn_half_marathon"
23
+ },
24
+ {
25
+ data_structure: ["When Harry Met Sally", "There's Something About Mary", "How to Lose a Guy in 10 Days"],
26
+ variable_name: "rom_coms"
27
+ },
28
+ {
29
+ data_structure: ["Tide", "Clorox", "Wisk", "Cheer"],
30
+ variable_name: "name_brand_detergents"
31
+ },
32
+ {
33
+ data_structure: ["The Moon and Antartica", "Frank's Wild Years", "Perfect From Now On"],
34
+ variable_name: "lyrically_brilliant_albums"
35
+ },
36
+ {
37
+ data_structure: ["Sixteen Stone", "Nirvana MTV Unplugged 1994", "Jagged Little Pill"],
38
+ variable_name: "classics_from_the_nineties"
39
+ },
40
+ {
41
+ data_structure: {
42
+ "home_team" => "Green Bay Packers",
43
+ "capacity" => 72_928,
44
+ },
45
+ variable_name: "lambeau_field"
46
+ },
47
+ {
48
+ data_structure: {
49
+ home_team: "Chicago Cubs",
50
+ capacity: 41_159,
51
+ },
52
+ variable_name: "wrigley_field"
53
+ },
54
+ {
55
+ data_structure: {
56
+ home_team: "Boston Red Sox",
57
+ capacity: 37_400,
58
+ },
59
+ variable_name: "fenway_park"
60
+ },
61
+ {
62
+ data_structure: {
63
+ stars: ["Ryan Gosling", "Rachel McAdams"],
64
+ released: 2004,
65
+ },
66
+ variable_name: "the_notebook"
67
+ },
68
+ {
69
+ data_structure: {
70
+ "stars" => ["John Cusack", "John Malkavich", "Catherine Keener"],
71
+ "released" => 1999,
72
+ },
73
+ variable_name: "being_john_malkavich"
74
+ },
75
+ {
76
+ data_structure: {
77
+ singles: ["Billie Jean", "Beat It", "Thriller"],
78
+ released: 1982,
79
+ },
80
+ variable_name: "thriller"
81
+ },
82
+ ]
@@ -0,0 +1,47 @@
1
+ VARIABLE_QUESTIONS = [
2
+ {
3
+ var_name: [
4
+ "num_fish",
5
+ "num_cats",
6
+ "num_dogs",
7
+ "num_steaks",
8
+ "percent_of_love_maintained",
9
+ "fav_number",
10
+ "days_without_rain"
11
+ ],
12
+ var_value: (1..100).to_a,
13
+ value_type: "FixNum"
14
+ },
15
+ {
16
+ var_name: [
17
+ "time_abroad",
18
+ "period_married",
19
+ "time_passed_since_breakup",
20
+ "time_elapsed_since_last_vacay",
21
+ "time_elapsed_since_last_title"
22
+ ],
23
+ var_value: [
24
+ "'#{rand(2..11)} months'",
25
+ "'#{rand(2..20)} years'",
26
+ "'#{rand(2..3)} days'"
27
+ ],
28
+ value_type: "String" },
29
+ {
30
+ var_name: [
31
+ "instructor_name",
32
+ "friend_for_life",
33
+ "super_cool_name",
34
+ "masculine_name",
35
+ "name_for_a_nice_fellow"
36
+ ],
37
+ var_value: [
38
+ "'Travis'",
39
+ "'Phil'",
40
+ "'PJ'",
41
+ "'Peter'",
42
+ "'Greg'",
43
+ "'Yaniv'"
44
+ ],
45
+ value_type: "String"
46
+ },
47
+ ]
data/lib/battleroom.rb ADDED
@@ -0,0 +1,90 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require_relative 'battleroom/question_data/variable_assignment'
4
+ require_relative 'battleroom/question_data/data_structure_access'
5
+ require_relative 'battleroom/battleroom_machinery'
6
+ include BattleroomMachinery
7
+ require 'colorize'
8
+ require 'pry'
9
+
10
+ clear_display
11
+ print "Welcome to the Battleroom.".blue
12
+ while true
13
+ print_prompt_with_options
14
+ choice = gets.chomp.downcase
15
+ clear_display
16
+
17
+ # for eval
18
+ b = binding
19
+
20
+ case choice
21
+ when "1"
22
+ 10.times do
23
+ question = VARIABLE_QUESTIONS.sample
24
+ var_name = question[:var_name].sample
25
+ var_value = question[:var_value].sample
26
+ puts "Create a variable, #{var_name}, and assign it the #{question[:value_type]} value #{var_value}".blue
27
+ answered_correctly = false
28
+ until answered_correctly
29
+ answer = gets.chomp
30
+ begin
31
+ b.eval(answer)
32
+ if b.eval("#{var_name} == #{var_value}")
33
+ answered_correctly = true
34
+ puts random_congratulation.green
35
+ else
36
+ print "You mis-assigned #{var_name}. ".red + "Try Again!\n".green
37
+ end
38
+ rescue NameError
39
+ print "Looks like you misnamed your variable. Often this will result in an error that says: \n\n".red
40
+ print "\tundefined local variable or method \'WHATEVER_YOU_MISTYPED\'\n\n".green
41
+ puts "Try again.".red
42
+ rescue Exception => e
43
+ puts e.message
44
+ end
45
+ end
46
+ end
47
+ when "2"
48
+ 5.times do
49
+ question = DATA_STRUCTURE_QUESTIONS.sample
50
+ data_structure = question[:data_structure]
51
+ if data_structure.class == Array
52
+ answer_value = data_structure.sample
53
+ hint = "index values start at 0."
54
+ else
55
+ answer_value = data_structure[data_structure.keys.sample]
56
+ hint = "you have to use the EXACT hash key to retrieve the associated value."
57
+ end
58
+ answer_value = data_structure.class == Array ? data_structure.sample : data_structure[data_structure.keys.sample]
59
+ # data_structure_binding = binding
60
+ # provides the binding scope with the variable assignment necessary for future
61
+ b.eval("#{question[:variable_name]} = #{question[:data_structure].to_s}")
62
+ puts "Given the data structure below, how would you access '#{answer_value}'?".blue
63
+ puts "#{question[:variable_name]} = #{question[:data_structure].to_s}".green
64
+ answered_correctly = false
65
+ until answered_correctly
66
+ input = gets.chomp
67
+ begin
68
+ if b.eval(input) == answer_value
69
+ puts random_congratulation.green
70
+ answered_correctly = true
71
+ sleep 1.5
72
+ clear_display
73
+ else
74
+ puts "Wrong. Remember, #{hint} Try again.".red
75
+ end
76
+ rescue NameError
77
+ puts "You're referencing a variable that doesn't exist, probably as the result of a mispelling. This results in a common error that says: \n\n".red
78
+ puts "\tundefined local variable or method \'WHATEVER_YOU_MISTYPED\'\n".green
79
+ puts "Get used to it and try again.".red
80
+ end
81
+ end
82
+ end
83
+ when "q"
84
+ puts "Goodbye!".green
85
+ break
86
+ else
87
+ puts "You entered a non-option. Try again.".red
88
+ end
89
+ end
90
+
metadata ADDED
@@ -0,0 +1,51 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: battleroom
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.0
5
+ platform: ruby
6
+ authors:
7
+ - Travis Vander Hoop
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2010-04-28 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description: A Battleroom
14
+ email: vanderhoop@me.com
15
+ executables:
16
+ - battleroom
17
+ extensions: []
18
+ extra_rdoc_files: []
19
+ files:
20
+ - bin/battleroom
21
+ - lib/battleroom.rb
22
+ - lib/battleroom/battleroom_machinery.rb
23
+ - lib/battleroom/question_data/data_structure_access.rb
24
+ - lib/battleroom/question_data/variable_assignment.rb
25
+ homepage: https://github.com/vanderhoop/battleroom
26
+ licenses:
27
+ - MIT
28
+ metadata: {}
29
+ post_install_message:
30
+ rdoc_options: []
31
+ require_paths:
32
+ - lib
33
+ required_ruby_version: !ruby/object:Gem::Requirement
34
+ requirements:
35
+ - - ">="
36
+ - !ruby/object:Gem::Version
37
+ version: '0'
38
+ required_rubygems_version: !ruby/object:Gem::Requirement
39
+ requirements:
40
+ - - ">="
41
+ - !ruby/object:Gem::Version
42
+ version: '0'
43
+ requirements: []
44
+ rubyforge_project:
45
+ rubygems_version: 2.2.2
46
+ signing_key:
47
+ specification_version: 4
48
+ summary: A simple command-line REPL designed to give Ruby newbies countless reps doing
49
+ simple tasks like assigning variables and accessing and assigning values within
50
+ nested data structures.
51
+ test_files: []