gemwarrior 0.2.0 → 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/bin/gemwarrior +3 -2
- data/lib/gemwarrior/constants.rb +4 -1
- data/lib/gemwarrior/evaluator.rb +56 -33
- data/lib/gemwarrior/inventory.rb +3 -3
- data/lib/gemwarrior/version.rb +1 -1
- metadata +2 -3
- data/lib/gemwarrior.rb +0 -9
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 410ff3b3615c76977920cc1352066588ae94b2aa
|
4
|
+
data.tar.gz: bb43488f8f1cdf2d5afc060782995a999cc9997f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 62800096ddfafa1ca85ea279cdd266d350868812368ef20732cbb51defc9ec6f866e557aecb3a36508d4fd3dc2c684e48e2684267700320d8f687ec6b225538c
|
7
|
+
data.tar.gz: f1e6fc509b3bf9793bbdea8b785d7126ca4e9f51b7d4bbb20d8a12794242586890e2b67d304a0c608199159752d0e31bbc2a2e3dceb26b4f5588546cd5d6bd60
|
data/bin/gemwarrior
CHANGED
@@ -1,8 +1,9 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
|
3
3
|
require 'optparse'
|
4
|
-
|
4
|
+
|
5
5
|
require_relative '../lib/gemwarrior/version'
|
6
|
+
require_relative '../lib/gemwarrior/game'
|
6
7
|
|
7
8
|
def parse_options
|
8
9
|
opts.on('-v', '--version', 'Display version number and exit') do
|
@@ -22,7 +23,7 @@ def print_error(error)
|
|
22
23
|
end
|
23
24
|
|
24
25
|
begin
|
25
|
-
Gemwarrior::
|
26
|
+
Gemwarrior::Game.new
|
26
27
|
rescue => error
|
27
28
|
print_error(error)
|
28
29
|
exit(false)
|
data/lib/gemwarrior/constants.rb
CHANGED
@@ -5,7 +5,8 @@ module Gemwarrior
|
|
5
5
|
PROGRAM_NAME = 'Gem Warrior'
|
6
6
|
SPLASH_MESSAGE = 'Welcome to Gem Warrior, where randomized fortune is just as likely as mayhem.'
|
7
7
|
QUIT_MESSAGE = 'Thanks for playing the game. Until next time...'
|
8
|
-
|
8
|
+
RESUME_MESSAGE = 'Back to adventuring!'
|
9
|
+
SEPARATOR = '==========================================================='
|
9
10
|
CHANGE_PARAMS = 'Options: name'
|
10
11
|
|
11
12
|
DANGER_LEVEL = {:none => 0, :low => 15, :moderate => 30, :high => 55, :assured => 100}
|
@@ -13,11 +14,13 @@ module Gemwarrior
|
|
13
14
|
module Errors
|
14
15
|
ERROR_COMMAND_INVALID = 'That\'s not something the game yet understands.'
|
15
16
|
ERROR_INVENTORY_EMPTY = '...and find you currently have diddly-squat, which is nothing.'
|
17
|
+
ERROR_INVENTORY_REMOVE_INVALID = 'Your inventory does not contain that item, so you can\'t drop it.'
|
16
18
|
ERROR_ITEM_LOC_INVALID = 'You don\'t see that there.'
|
17
19
|
ERROR_ITEM_INVENTORY_INVALID = 'You don\'t possess that.'
|
18
20
|
ERROR_TAKE_PARAM_MISSING = 'You can\'t just take. You gotta choose something.'
|
19
21
|
ERROR_TAKE_ITEM_UNTAKEABLE = 'That would be great if you could take that thing, wouldn\'t it? Well, it\'s not so great for you right now.'
|
20
22
|
ERROR_TAKE_ITEM_INVALID = 'That item doesn\'t exist here.'
|
23
|
+
ERROR_DROP_PARAM_MISSING = 'You can\'t just drop indiscriminately. You gotta choose something.'
|
21
24
|
ERROR_GO_DIR_MISSING = 'Just wander aimlessly? A direction would be nice.'
|
22
25
|
ERROR_GO_DIR_INVALID = 'The place in that direction is far, far, FAR too dangerous. You should try a different way.'
|
23
26
|
ERROR_CHANGE_PARAM_MISSING = 'Ch-ch-changes...aren\'t happening because you didn\'t specify what to change.'
|
data/lib/gemwarrior/evaluator.rb
CHANGED
@@ -7,41 +7,49 @@ require_relative 'constants'
|
|
7
7
|
|
8
8
|
module Gemwarrior
|
9
9
|
class Evaluator
|
10
|
+
private
|
11
|
+
|
12
|
+
def print_separator
|
13
|
+
puts SEPARATOR
|
14
|
+
end
|
15
|
+
|
16
|
+
def list_commands
|
17
|
+
i = 0
|
18
|
+
print_separator
|
19
|
+
@commands.each do |cmd|
|
20
|
+
puts " #{cmd}, #{@aliases[i]}\n -- #{@descriptions[i]}"
|
21
|
+
i = i + 1
|
22
|
+
end
|
23
|
+
print_separator
|
24
|
+
end
|
25
|
+
|
26
|
+
public
|
27
|
+
|
10
28
|
include Errors
|
11
29
|
|
12
30
|
def initialize(world)
|
13
31
|
@world = world
|
14
|
-
@commands = %w(character inventory rest look take world monsters go change help quit exit)
|
15
|
-
@aliases = %w(c i r l t w m g ch h q x)
|
32
|
+
@commands = %w(character inventory rest look take drop world monsters go change help quit exit quit! exit!)
|
33
|
+
@aliases = %w(c i r l t d w m g ch h q x qq xx)
|
16
34
|
@descriptions = [
|
17
35
|
'Display character information',
|
18
36
|
'Look in your inventory',
|
19
37
|
'Take a load off and regain stamina',
|
20
38
|
'Look around your current location',
|
39
|
+
'Take item',
|
40
|
+
'Drop item',
|
21
41
|
'List all locations in the world',
|
22
42
|
'List all the monsters in the world',
|
23
|
-
'Go in a
|
43
|
+
'Go in a direction',
|
24
44
|
'Change something',
|
25
45
|
'This help menu',
|
26
|
-
'Quit
|
27
|
-
'Exit
|
46
|
+
'Quit w/ confirmation',
|
47
|
+
'Exit w/ confirmation (very different, of course)',
|
48
|
+
'Quit w/o confirmation',
|
49
|
+
'Exit w/o confirmation (very, very different, of course)'
|
28
50
|
]
|
29
51
|
end
|
30
52
|
|
31
|
-
def print_separator
|
32
|
-
SEPARATOR
|
33
|
-
end
|
34
|
-
|
35
|
-
def list_commands
|
36
|
-
i = 0
|
37
|
-
print_separator
|
38
|
-
@commands.each do |cmd|
|
39
|
-
puts "#{cmd}, #{@aliases[i]} - #{@descriptions[i]}"
|
40
|
-
i = i + 1
|
41
|
-
end
|
42
|
-
print_separator
|
43
|
-
end
|
44
|
-
|
45
53
|
def evaluate(input)
|
46
54
|
if input.nil?
|
47
55
|
return
|
@@ -57,39 +65,45 @@ module Gemwarrior
|
|
57
65
|
param = tokens[1]
|
58
66
|
|
59
67
|
case command
|
60
|
-
when
|
68
|
+
when 'character', 'c'
|
61
69
|
@world.player.check_self
|
62
|
-
when
|
70
|
+
when 'inventory', 'i'
|
63
71
|
if param
|
64
72
|
@world.player.inventory.describe_item(param)
|
65
73
|
else
|
66
74
|
@world.player.list_inventory
|
67
75
|
end
|
68
|
-
when
|
76
|
+
when 'rest', 'r'
|
69
77
|
@world.player.rest
|
70
|
-
when
|
78
|
+
when 'look', 'l'
|
71
79
|
if param
|
72
80
|
@world.player.cur_loc.describe_item(param)
|
73
81
|
else
|
74
82
|
@world.player.cur_loc.describe
|
75
83
|
end
|
76
|
-
when
|
77
|
-
|
78
|
-
@world.player.inventory.add_item(@world.player.cur_loc, param)
|
79
|
-
else
|
84
|
+
when 'take', 't'
|
85
|
+
if param.nil?
|
80
86
|
ERROR_TAKE_PARAM_MISSING
|
87
|
+
else
|
88
|
+
@world.player.inventory.add_item(@world.player.cur_loc, param)
|
81
89
|
end
|
82
|
-
when
|
90
|
+
when 'drop', 'd'
|
91
|
+
if param.nil?
|
92
|
+
ERROR_DROP_PARAM_MISSING
|
93
|
+
else
|
94
|
+
@world.player.inventory.remove_item(param)
|
95
|
+
end
|
96
|
+
when 'world', 'world'
|
83
97
|
@world.list_locations
|
84
|
-
when
|
98
|
+
when 'monsters', 'm'
|
85
99
|
@world.list_monsters
|
86
|
-
when
|
100
|
+
when 'go', 'g'
|
87
101
|
if param.nil?
|
88
102
|
ERROR_GO_DIR_MISSING
|
89
103
|
else
|
90
104
|
@world.player.go(@world.locations, param)
|
91
105
|
end
|
92
|
-
when
|
106
|
+
when 'change', 'ch'
|
93
107
|
if param.nil?
|
94
108
|
puts ERROR_CHANGE_PARAM_MISSING
|
95
109
|
puts CHANGE_PARAMS
|
@@ -101,9 +115,18 @@ module Gemwarrior
|
|
101
115
|
ERROR_CHANGE_PARAM_INVALID
|
102
116
|
end
|
103
117
|
end
|
104
|
-
when
|
118
|
+
when 'help', 'h'
|
105
119
|
list_commands
|
106
|
-
when
|
120
|
+
when 'quit', 'exit', 'q', 'x'
|
121
|
+
puts "You sure you want to quit? (y/n): "
|
122
|
+
response = gets.chomp
|
123
|
+
if (response.downcase.eql?("y") || response.downcase.eql?("yes"))
|
124
|
+
puts QUIT_MESSAGE
|
125
|
+
exit(0)
|
126
|
+
else
|
127
|
+
puts RESUME_MESSAGE
|
128
|
+
end
|
129
|
+
when 'qq', 'xx'
|
107
130
|
puts QUIT_MESSAGE
|
108
131
|
exit(0)
|
109
132
|
else
|
data/lib/gemwarrior/inventory.rb
CHANGED
@@ -50,9 +50,9 @@ module Gemwarrior
|
|
50
50
|
end
|
51
51
|
|
52
52
|
def remove_item(item_name)
|
53
|
-
if inventory.include?(item_name)
|
54
|
-
@inventory.
|
55
|
-
puts "#{
|
53
|
+
if @inventory.map(&:name).include?(item_name)
|
54
|
+
@inventory.reject! { |item| item.name == item_name }
|
55
|
+
puts "The #{item_name} has been thrown on the ground, but far out of reach, and you're much too lazy to go get it now, so it's as good as gone.\n"
|
56
56
|
else
|
57
57
|
puts ERROR_INVENTORY_REMOVE_INVALID
|
58
58
|
end
|
data/lib/gemwarrior/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gemwarrior
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Michael Chadwick
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-05-
|
11
|
+
date: 2015-05-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: os
|
@@ -116,7 +116,6 @@ files:
|
|
116
116
|
- Rakefile
|
117
117
|
- bin/gemwarrior
|
118
118
|
- gemwarrior.gemspec
|
119
|
-
- lib/gemwarrior.rb
|
120
119
|
- lib/gemwarrior/constants.rb
|
121
120
|
- lib/gemwarrior/creature.rb
|
122
121
|
- lib/gemwarrior/evaluator.rb
|