rubywarrior 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG.rdoc +3 -0
- data/LICENSE +20 -0
- data/README.rdoc +170 -0
- data/Rakefile +21 -0
- data/bin/rubywarrior +5 -0
- data/features/command_options.feature +46 -0
- data/features/levels.feature +51 -0
- data/features/profiles.feature +56 -0
- data/features/step_definitions/common_steps.rb +19 -0
- data/features/step_definitions/interaction_steps.rb +65 -0
- data/features/support/env.rb +12 -0
- data/features/support/mockio.rb +57 -0
- data/features/towers.feature +14 -0
- data/lib/ruby_warrior.rb +44 -0
- data/lib/ruby_warrior/abilities/attack.rb +24 -0
- data/lib/ruby_warrior/abilities/base.rb +36 -0
- data/lib/ruby_warrior/abilities/bind.rb +19 -0
- data/lib/ruby_warrior/abilities/direction_of.rb +13 -0
- data/lib/ruby_warrior/abilities/direction_of_stairs.rb +13 -0
- data/lib/ruby_warrior/abilities/distance.rb +13 -0
- data/lib/ruby_warrior/abilities/explode.rb +16 -0
- data/lib/ruby_warrior/abilities/feel.rb +13 -0
- data/lib/ruby_warrior/abilities/health.rb +13 -0
- data/lib/ruby_warrior/abilities/listen.rb +15 -0
- data/lib/ruby_warrior/abilities/look.rb +15 -0
- data/lib/ruby_warrior/abilities/pivot.rb +16 -0
- data/lib/ruby_warrior/abilities/rescue.rb +23 -0
- data/lib/ruby_warrior/abilities/rest.rb +20 -0
- data/lib/ruby_warrior/abilities/shoot.rb +23 -0
- data/lib/ruby_warrior/abilities/walk.rb +20 -0
- data/lib/ruby_warrior/config.rb +22 -0
- data/lib/ruby_warrior/core_additions.rb +25 -0
- data/lib/ruby_warrior/floor.rb +71 -0
- data/lib/ruby_warrior/game.rb +193 -0
- data/lib/ruby_warrior/level.rb +119 -0
- data/lib/ruby_warrior/level_loader.rb +56 -0
- data/lib/ruby_warrior/player_generator.rb +41 -0
- data/lib/ruby_warrior/position.rb +80 -0
- data/lib/ruby_warrior/profile.rb +104 -0
- data/lib/ruby_warrior/runner.rb +33 -0
- data/lib/ruby_warrior/space.rb +63 -0
- data/lib/ruby_warrior/tower.rb +14 -0
- data/lib/ruby_warrior/turn.rb +38 -0
- data/lib/ruby_warrior/ui.rb +54 -0
- data/lib/ruby_warrior/units/archer.rb +34 -0
- data/lib/ruby_warrior/units/base.rb +95 -0
- data/lib/ruby_warrior/units/captive.rb +30 -0
- data/lib/ruby_warrior/units/sludge.rb +30 -0
- data/lib/ruby_warrior/units/thick_sludge.rb +13 -0
- data/lib/ruby_warrior/units/warrior.rb +58 -0
- data/lib/ruby_warrior/units/wizard.rb +34 -0
- data/spec/fixtures/short-tower/level_001.rb +15 -0
- data/spec/fixtures/short-tower/level_002.rb +15 -0
- data/spec/fixtures/walking_player.rb +5 -0
- data/spec/ruby_warrior/abilities/attack_spec.rb +51 -0
- data/spec/ruby_warrior/abilities/base_spec.rb +24 -0
- data/spec/ruby_warrior/abilities/bind_spec.rb +19 -0
- data/spec/ruby_warrior/abilities/direction_of_spec.rb +13 -0
- data/spec/ruby_warrior/abilities/direction_of_stairs_spec.rb +13 -0
- data/spec/ruby_warrior/abilities/distance_spec.rb +13 -0
- data/spec/ruby_warrior/abilities/explode_spec.rb +21 -0
- data/spec/ruby_warrior/abilities/feel_spec.rb +13 -0
- data/spec/ruby_warrior/abilities/health_spec.rb +13 -0
- data/spec/ruby_warrior/abilities/listen_spec.rb +17 -0
- data/spec/ruby_warrior/abilities/look_spec.rb +15 -0
- data/spec/ruby_warrior/abilities/pivot_spec.rb +18 -0
- data/spec/ruby_warrior/abilities/rescue_spec.rb +40 -0
- data/spec/ruby_warrior/abilities/rest_spec.rb +29 -0
- data/spec/ruby_warrior/abilities/shoot_spec.rb +22 -0
- data/spec/ruby_warrior/abilities/walk_spec.rb +25 -0
- data/spec/ruby_warrior/floor_spec.rb +81 -0
- data/spec/ruby_warrior/game_spec.rb +119 -0
- data/spec/ruby_warrior/level_loader_spec.rb +54 -0
- data/spec/ruby_warrior/level_spec.rb +203 -0
- data/spec/ruby_warrior/player_generator_spec.rb +12 -0
- data/spec/ruby_warrior/position_spec.rb +103 -0
- data/spec/ruby_warrior/profile_spec.rb +144 -0
- data/spec/ruby_warrior/space_spec.rb +165 -0
- data/spec/ruby_warrior/tower_spec.rb +15 -0
- data/spec/ruby_warrior/turn_spec.rb +42 -0
- data/spec/ruby_warrior/ui_spec.rb +93 -0
- data/spec/ruby_warrior/units/archer_spec.rb +23 -0
- data/spec/ruby_warrior/units/base_spec.rb +133 -0
- data/spec/ruby_warrior/units/captive_spec.rb +34 -0
- data/spec/ruby_warrior/units/sludge_spec.rb +27 -0
- data/spec/ruby_warrior/units/thick_sludge_spec.rb +19 -0
- data/spec/ruby_warrior/units/warrior_spec.rb +60 -0
- data/spec/ruby_warrior/units/wizard_spec.rb +23 -0
- data/spec/spec_helper.rb +10 -0
- data/templates/README.erb +20 -0
- data/templates/player.rb +5 -0
- data/towers/beginner/level_001.rb +16 -0
- data/towers/beginner/level_002.rb +18 -0
- data/towers/beginner/level_003.rb +21 -0
- data/towers/beginner/level_004.rb +18 -0
- data/towers/beginner/level_005.rb +22 -0
- data/towers/beginner/level_006.rb +19 -0
- data/towers/beginner/level_007.rb +18 -0
- data/towers/beginner/level_008.rb +21 -0
- data/towers/beginner/level_009.rb +20 -0
- data/towers/intermediate/level_001.rb +18 -0
- data/towers/intermediate/level_002.rb +20 -0
- data/towers/intermediate/level_003.rb +23 -0
- data/towers/intermediate/level_004.rb +24 -0
- data/towers/intermediate/level_005.rb +19 -0
- data/towers/intermediate/level_006.rb +24 -0
- metadata +167 -0
@@ -0,0 +1,23 @@
|
|
1
|
+
# ---
|
2
|
+
# |>s |
|
3
|
+
# |s@s|
|
4
|
+
# | C |
|
5
|
+
# ---
|
6
|
+
|
7
|
+
description "You feel slime on all sides, you're surrounded!"
|
8
|
+
tip "Call warrior.bind!(direction) to bind an enemy to keep him from attacking. Bound enemies look like capitves."
|
9
|
+
clue "Count the number of enemies around you, if there's two or more, bind one."
|
10
|
+
|
11
|
+
time_bonus 50
|
12
|
+
ace_score 101
|
13
|
+
size 3, 3
|
14
|
+
stairs 0, 0
|
15
|
+
|
16
|
+
warrior 1, 1, :east do |u|
|
17
|
+
u.add_abilities :rescue!, :bind!
|
18
|
+
end
|
19
|
+
|
20
|
+
unit :sludge, 1, 0, :west
|
21
|
+
unit :captive, 1, 2, :west
|
22
|
+
unit :sludge, 0, 1, :west
|
23
|
+
unit :sludge, 2, 1, :west
|
@@ -0,0 +1,24 @@
|
|
1
|
+
# ----
|
2
|
+
# |C s |
|
3
|
+
# | @ S|
|
4
|
+
# |C s>|
|
5
|
+
# ----
|
6
|
+
|
7
|
+
description "Your ears become more in tune with the surroundings. Listen to find enemies and captives!"
|
8
|
+
tip "Use warrior.listen to find spaces with other units, and warrior.direction_of to determine what direction they're in."
|
9
|
+
clue "Walk towards an enemy or captive with warrior.walk!(warrior.direction_of(warrior.listen.first)), once warrior.listen.empty? then head for the stairs."
|
10
|
+
|
11
|
+
time_bonus 55
|
12
|
+
ace_score 144
|
13
|
+
size 4, 3
|
14
|
+
stairs 3, 2
|
15
|
+
|
16
|
+
warrior 1, 1, :east do |u|
|
17
|
+
u.add_abilities :listen, :direction_of
|
18
|
+
end
|
19
|
+
|
20
|
+
unit :captive, 0, 0, :east
|
21
|
+
unit :captive, 0, 2, :east
|
22
|
+
unit :sludge, 2, 0, :south
|
23
|
+
unit :thick_sludge, 3, 1, :west
|
24
|
+
unit :sludge, 2, 2, :north
|
@@ -0,0 +1,19 @@
|
|
1
|
+
# -----
|
2
|
+
# | S|
|
3
|
+
# |@> SC|
|
4
|
+
# -----
|
5
|
+
|
6
|
+
description "You can feel the stairs right next to you, but are you sure you want to go up them right away?"
|
7
|
+
tip "You'll get more points for clearing the level first. Use warrior.feel.stairs? and warrior.feel.empty? to determine where to go."
|
8
|
+
clue "If going towards a unit is the same direction as the stairs, try moving another empty direction until you can safely move toward the enemies."
|
9
|
+
|
10
|
+
time_bonus 45
|
11
|
+
ace_score 107
|
12
|
+
size 5, 2
|
13
|
+
stairs 1, 1
|
14
|
+
|
15
|
+
warrior 0, 1, :east
|
16
|
+
|
17
|
+
unit :thick_sludge, 4, 0, :west
|
18
|
+
unit :thick_sludge, 3, 1, :north
|
19
|
+
unit :captive, 4, 1, :west
|
@@ -0,0 +1,24 @@
|
|
1
|
+
# ------
|
2
|
+
# | SC >|
|
3
|
+
# |@ SC |
|
4
|
+
# ------
|
5
|
+
|
6
|
+
description "What's that ticking? Some captives have a timed bomb at their feet!"
|
7
|
+
tip "It's best to rescue captives first that have space.ticking?, they'll soon go!"
|
8
|
+
clue "Avoid fighting enemies at first. Go around them until you've rescued all of the ticking captives."
|
9
|
+
|
10
|
+
time_bonus 50
|
11
|
+
ace_score 130
|
12
|
+
size 6, 2
|
13
|
+
stairs 5, 0
|
14
|
+
|
15
|
+
warrior 0, 1, :east
|
16
|
+
|
17
|
+
unit :thick_sludge, 1, 0, :west
|
18
|
+
unit :thick_sludge, 3, 1, :west
|
19
|
+
unit :captive, 2, 0, :west do |u|
|
20
|
+
u.bomb_time = 6
|
21
|
+
end
|
22
|
+
unit :captive, 4, 1, :west do |u|
|
23
|
+
u.bomb_time = 10
|
24
|
+
end
|
metadata
ADDED
@@ -0,0 +1,167 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: rubywarrior
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Ryan Bates
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
|
12
|
+
date: 2010-01-02 00:00:00 -08:00
|
13
|
+
default_executable:
|
14
|
+
dependencies: []
|
15
|
+
|
16
|
+
description: You play as a warrior climbing a tall tower. On each floor you need to write a Ruby script to instruct the warrior to battle enemies, rescue captives, and reach the stairs.
|
17
|
+
email: ryan@railscasts.com
|
18
|
+
executables:
|
19
|
+
- rubywarrior
|
20
|
+
extensions: []
|
21
|
+
|
22
|
+
extra_rdoc_files:
|
23
|
+
- README.rdoc
|
24
|
+
- CHANGELOG.rdoc
|
25
|
+
- LICENSE
|
26
|
+
files:
|
27
|
+
- lib/ruby_warrior/abilities/attack.rb
|
28
|
+
- lib/ruby_warrior/abilities/base.rb
|
29
|
+
- lib/ruby_warrior/abilities/bind.rb
|
30
|
+
- lib/ruby_warrior/abilities/direction_of.rb
|
31
|
+
- lib/ruby_warrior/abilities/direction_of_stairs.rb
|
32
|
+
- lib/ruby_warrior/abilities/distance.rb
|
33
|
+
- lib/ruby_warrior/abilities/explode.rb
|
34
|
+
- lib/ruby_warrior/abilities/feel.rb
|
35
|
+
- lib/ruby_warrior/abilities/health.rb
|
36
|
+
- lib/ruby_warrior/abilities/listen.rb
|
37
|
+
- lib/ruby_warrior/abilities/look.rb
|
38
|
+
- lib/ruby_warrior/abilities/pivot.rb
|
39
|
+
- lib/ruby_warrior/abilities/rescue.rb
|
40
|
+
- lib/ruby_warrior/abilities/rest.rb
|
41
|
+
- lib/ruby_warrior/abilities/shoot.rb
|
42
|
+
- lib/ruby_warrior/abilities/walk.rb
|
43
|
+
- lib/ruby_warrior/config.rb
|
44
|
+
- lib/ruby_warrior/core_additions.rb
|
45
|
+
- lib/ruby_warrior/floor.rb
|
46
|
+
- lib/ruby_warrior/game.rb
|
47
|
+
- lib/ruby_warrior/level.rb
|
48
|
+
- lib/ruby_warrior/level_loader.rb
|
49
|
+
- lib/ruby_warrior/player_generator.rb
|
50
|
+
- lib/ruby_warrior/position.rb
|
51
|
+
- lib/ruby_warrior/profile.rb
|
52
|
+
- lib/ruby_warrior/runner.rb
|
53
|
+
- lib/ruby_warrior/space.rb
|
54
|
+
- lib/ruby_warrior/tower.rb
|
55
|
+
- lib/ruby_warrior/turn.rb
|
56
|
+
- lib/ruby_warrior/ui.rb
|
57
|
+
- lib/ruby_warrior/units/archer.rb
|
58
|
+
- lib/ruby_warrior/units/base.rb
|
59
|
+
- lib/ruby_warrior/units/captive.rb
|
60
|
+
- lib/ruby_warrior/units/sludge.rb
|
61
|
+
- lib/ruby_warrior/units/thick_sludge.rb
|
62
|
+
- lib/ruby_warrior/units/warrior.rb
|
63
|
+
- lib/ruby_warrior/units/wizard.rb
|
64
|
+
- lib/ruby_warrior.rb
|
65
|
+
- spec/fixtures/short-tower/level_001.rb
|
66
|
+
- spec/fixtures/short-tower/level_002.rb
|
67
|
+
- spec/fixtures/walking_player.rb
|
68
|
+
- spec/ruby_warrior/abilities/attack_spec.rb
|
69
|
+
- spec/ruby_warrior/abilities/base_spec.rb
|
70
|
+
- spec/ruby_warrior/abilities/bind_spec.rb
|
71
|
+
- spec/ruby_warrior/abilities/direction_of_spec.rb
|
72
|
+
- spec/ruby_warrior/abilities/direction_of_stairs_spec.rb
|
73
|
+
- spec/ruby_warrior/abilities/distance_spec.rb
|
74
|
+
- spec/ruby_warrior/abilities/explode_spec.rb
|
75
|
+
- spec/ruby_warrior/abilities/feel_spec.rb
|
76
|
+
- spec/ruby_warrior/abilities/health_spec.rb
|
77
|
+
- spec/ruby_warrior/abilities/listen_spec.rb
|
78
|
+
- spec/ruby_warrior/abilities/look_spec.rb
|
79
|
+
- spec/ruby_warrior/abilities/pivot_spec.rb
|
80
|
+
- spec/ruby_warrior/abilities/rescue_spec.rb
|
81
|
+
- spec/ruby_warrior/abilities/rest_spec.rb
|
82
|
+
- spec/ruby_warrior/abilities/shoot_spec.rb
|
83
|
+
- spec/ruby_warrior/abilities/walk_spec.rb
|
84
|
+
- spec/ruby_warrior/floor_spec.rb
|
85
|
+
- spec/ruby_warrior/game_spec.rb
|
86
|
+
- spec/ruby_warrior/level_loader_spec.rb
|
87
|
+
- spec/ruby_warrior/level_spec.rb
|
88
|
+
- spec/ruby_warrior/player_generator_spec.rb
|
89
|
+
- spec/ruby_warrior/position_spec.rb
|
90
|
+
- spec/ruby_warrior/profile_spec.rb
|
91
|
+
- spec/ruby_warrior/space_spec.rb
|
92
|
+
- spec/ruby_warrior/tower_spec.rb
|
93
|
+
- spec/ruby_warrior/turn_spec.rb
|
94
|
+
- spec/ruby_warrior/ui_spec.rb
|
95
|
+
- spec/ruby_warrior/units/archer_spec.rb
|
96
|
+
- spec/ruby_warrior/units/base_spec.rb
|
97
|
+
- spec/ruby_warrior/units/captive_spec.rb
|
98
|
+
- spec/ruby_warrior/units/sludge_spec.rb
|
99
|
+
- spec/ruby_warrior/units/thick_sludge_spec.rb
|
100
|
+
- spec/ruby_warrior/units/warrior_spec.rb
|
101
|
+
- spec/ruby_warrior/units/wizard_spec.rb
|
102
|
+
- spec/spec_helper.rb
|
103
|
+
- features/command_options.feature
|
104
|
+
- features/levels.feature
|
105
|
+
- features/profiles.feature
|
106
|
+
- features/step_definitions/common_steps.rb
|
107
|
+
- features/step_definitions/interaction_steps.rb
|
108
|
+
- features/support/env.rb
|
109
|
+
- features/support/mockio.rb
|
110
|
+
- features/towers.feature
|
111
|
+
- towers/beginner/level_001.rb
|
112
|
+
- towers/beginner/level_002.rb
|
113
|
+
- towers/beginner/level_003.rb
|
114
|
+
- towers/beginner/level_004.rb
|
115
|
+
- towers/beginner/level_005.rb
|
116
|
+
- towers/beginner/level_006.rb
|
117
|
+
- towers/beginner/level_007.rb
|
118
|
+
- towers/beginner/level_008.rb
|
119
|
+
- towers/beginner/level_009.rb
|
120
|
+
- towers/intermediate/level_001.rb
|
121
|
+
- towers/intermediate/level_002.rb
|
122
|
+
- towers/intermediate/level_003.rb
|
123
|
+
- towers/intermediate/level_004.rb
|
124
|
+
- towers/intermediate/level_005.rb
|
125
|
+
- towers/intermediate/level_006.rb
|
126
|
+
- templates/player.rb
|
127
|
+
- templates/README.erb
|
128
|
+
- bin/rubywarrior
|
129
|
+
- LICENSE
|
130
|
+
- README.rdoc
|
131
|
+
- Rakefile
|
132
|
+
- CHANGELOG.rdoc
|
133
|
+
has_rdoc: true
|
134
|
+
homepage: http://github.com/ryanb/ruby-warrior
|
135
|
+
licenses: []
|
136
|
+
|
137
|
+
post_install_message:
|
138
|
+
rdoc_options:
|
139
|
+
- --line-numbers
|
140
|
+
- --inline-source
|
141
|
+
- --title
|
142
|
+
- RubyWarrior
|
143
|
+
- --main
|
144
|
+
- README.rdoc
|
145
|
+
require_paths:
|
146
|
+
- lib
|
147
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
148
|
+
requirements:
|
149
|
+
- - ">="
|
150
|
+
- !ruby/object:Gem::Version
|
151
|
+
version: "0"
|
152
|
+
version:
|
153
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
154
|
+
requirements:
|
155
|
+
- - ">="
|
156
|
+
- !ruby/object:Gem::Version
|
157
|
+
version: "1.2"
|
158
|
+
version:
|
159
|
+
requirements: []
|
160
|
+
|
161
|
+
rubyforge_project:
|
162
|
+
rubygems_version: 1.3.5
|
163
|
+
signing_key:
|
164
|
+
specification_version: 3
|
165
|
+
summary: Game written in Ruby for learning Ruby and artificial intelligence.
|
166
|
+
test_files: []
|
167
|
+
|