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: []
|