mission_game 1.1.1 → 1.1.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (9) hide show
  1. checksums.yaml +4 -4
  2. data/lib/enemy.rb +49 -53
  3. data/lib/main.rb +142 -142
  4. data/lib/neworleans.rb +144 -149
  5. data/lib/player.rb +122 -121
  6. data/lib/story.rb +38 -42
  7. data/lib/ui.rb +269 -259
  8. data/mission_game.rb +41 -43
  9. metadata +7 -7
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: d57529ce9115a3acd92942159df8ccca05d7bd534d6054f28c35fb66f2df873f
4
- data.tar.gz: a768a71daa75d1869d1a0d1f47c8dcc4c85e99cc6857a2a1c5b4b229451b3b54
3
+ metadata.gz: d66722df3461198bda49db54f496e0437ec18a3c3e1a05c21e31ef0eca35f40f
4
+ data.tar.gz: bd28000d24248ce9081869a824cae1bffe7299338db144c31c6efda2230a7080
5
5
  SHA512:
6
- metadata.gz: 7097ef7f3fcba5a253e77d6a4e9f589b3422f570dced7f537c91f206df32278cc1120bc806094d9299a68bc227ccadf9990aaa8afb9913103bd879ed1d27ff31
7
- data.tar.gz: 42cd40c3cae6b11292d368d8a13bea2d897d148dc0b65420783e69a547fc99f2cc3791bd4717841790060d713ad9f941b605bbd0de97d18ac671afc7988489d9
6
+ metadata.gz: 06473f5cf90a8de3cad9f83c6b6149074c8588deed51f6df57fcb0eaf9b9c76ebb05de03f7ff93eef7e9ee1a994a61f06f212667bfc4c325efd4474f659635b2
7
+ data.tar.gz: e93986a7c2eb38dd12fe6e81f751de0da6c071f75ad6688355850f2bf2d21af747288e313a20777c0385c1930db813442423a7394ab2a48ba535c140d80a6605
data/lib/enemy.rb CHANGED
@@ -4,66 +4,62 @@
4
4
  #
5
5
 
6
6
  module MISSIONGAME
7
+ ENEMY_CATALOG = [
8
+ [name: "Lucien Castle", lives: 3, bonus: 0, str: 3, points: 1],
9
+ [name: "Klaus Mikaelson", lives: 8, bonus: 8, str: 4, points: 10],
10
+ [name: "Damon Salvatore", lives: 5, bonus: 0, str: 4, points: 7],
11
+ [name: "Mikael", lives: 3, bonus: 2, str: 4, points: 6],
12
+ [name: "Taylor Lockwood", lives: 4, bonus: 0, str: 4, points: 2],
13
+ [name: "Marcel Gerard", lives: 7, bonus: 3, str: 5, points: 5],
14
+ [name: "Dahlia", lives: 2, bonus: 6, str: 1, points: 2],
15
+ [name: "The Hollow", lives: 5, bonus: 0, str: 4, points: 3],
16
+ [name: "Celeste Dubois", lives: 3, bonus: 10, str: 2, points: 5]
17
+ ]
7
18
 
8
- ENEMY_CATALOG = [
9
- [:name => "Lucien Castle", :lives => 3, :bonus => 0, :str => 3, :points => 1],
10
- [:name => "Klaus Mikaelson", :lives => 8, :bonus => 8, :str => 4, :points => 10],
11
- [:name => "Damon Salvatore", :lives => 5, :bonus => 0, :str => 4, :points => 7],
12
- [:name => "Mikael", :lives => 3, :bonus => 2, :str => 4, :points => 6],
13
- [:name => "Taylor Lockwood", :lives => 4, :bonus => 0, :str => 4, :points => 2],
14
- [:name => "Marcel Gerard", :lives => 7, :bonus => 3, :str => 5, :points => 5],
15
- [:name => "Dahlia", :lives => 2, :bonus => 6, :str => 1, :points => 2],
16
- [:name => "The Hollow", :lives => 5, :bonus => 0, :str => 4, :points => 3],
17
- [:name => "Celeste Dubois", :lives => 3, :bonus => 10, :str => 2, :points => 5]
18
- ]
19
+ PLAYER_DEAD = "PLAYER_DEAD"
19
20
 
20
- PLAYER_DEAD = "PLAYER_DEAD"
21
+ class Enemy
22
+ attr_accessor :name
23
+ attr_accessor :lives
24
+ attr_accessor :bonus
25
+ attr_accessor :str
26
+ attr_accessor :int
27
+ attr_accessor :points
21
28
 
22
- class Enemy
29
+ def initialize(args = nil)
30
+ # Pick a random enemy
31
+ selected_enemy = ENEMY_CATALOG.sample[0]
32
+ @name = selected_enemy[:name]
33
+ @lives = selected_enemy[:lives] + rand(0..3)
34
+ @bonus = selected_enemy[:bonus] + rand(0..3)
35
+ @str = selected_enemy[:str]
36
+ @points = selected_enemy[:points]
37
+ @int = rand(2..6)
38
+ end
23
39
 
24
- attr_accessor :name
25
- attr_accessor :lives
26
- attr_accessor :bonus
27
- attr_accessor :str
28
- attr_accessor :int
29
- attr_accessor :points
30
-
31
- def initialize(args = nil)
32
- # Pick a random enemy
33
- selected_enemy = ENEMY_CATALOG.sample[0]
34
- @name = selected_enemy[:name]
35
- @lives = selected_enemy[:lives] + rand(0..3)
36
- @bonus = selected_enemy[:bonus] + rand(0..3)
37
- @str = selected_enemy[:str]
38
- @points = selected_enemy[:points]
39
- @int = rand(2..6)
40
- end
41
-
42
- # Enemy attacks player
43
- def attack(args)
44
- enemy = self
45
- player = args[:player]
46
-
47
- # Does the enemy even hit the player?
48
- str_diff = (enemy.str - player.str) * 2
49
- hit_chance = rand(1...100) + str_diff
40
+ # Enemy attacks player
41
+ def attack(args)
42
+ enemy = self
43
+ player = args[:player]
44
+
45
+ # Does the enemy even hit the player?
46
+ str_diff = (enemy.str - player.str) * 2
47
+ hit_chance = rand(1...100) + str_diff
50
48
 
51
- if (hit_chance > 30)
52
- # Determine value of the attack
53
- attack_value = rand(1...player.str)
54
- print enemy.name.light_red + " hits you for " + attack_value.to_s.light_yellow + " damage(s)!\n"
55
- if attack_value > player.lives
56
- return PLAYER_DEAD
49
+ if hit_chance > 30
50
+ # Determine value of the attack
51
+ attack_value = rand(1...player.str)
52
+ print enemy.name.light_red + " hits you for " +
53
+ attack_value.to_s.light_yellow + " damage(s)!\n"
54
+ if attack_value > player.lives
55
+ return PLAYER_DEAD
56
+ else
57
+ return attack_value
58
+ end
57
59
  else
58
- return attack_value
60
+ print enemy.name.light_red + " sees you as an easy prey!\n"
59
61
  end
60
- else
61
- print enemy.name.light_red + " sees you as an easy prey!\n"
62
+ true
62
63
  end
63
- return true
64
64
  end
65
-
66
-
67
- end
68
-
69
65
  end
data/lib/main.rb CHANGED
@@ -1,142 +1,142 @@
1
- #!/usr/bin/env ruby
2
- #
3
- # Written by Webster AVosa
4
-
5
- MISSIONGAME_VERSION = "1.00"
6
-
7
- # Create a new UI and New Orleans
8
- ui = MISSIONGAME::UI.new
9
- neworleans = MISSIONGAME::NewOrleans.new
10
-
11
- # Clear the screen and print welcome message
12
- ui.clear
13
- ui.welcome
14
-
15
- # Ask name
16
- name = ui.ask("What is your name?", /\w/)
17
-
18
- # Create a new player
19
- player = MISSIONGAME::Player.new({:name => name, :neworleans => neworleans})
20
-
21
- # Show intro story
22
- ui.new_line
23
- story = MISSIONGAME::Story.new
24
- ui.draw_frame({:text => story.intro})
25
-
26
-
27
- # MAIN INPUT LOOP
28
- running = 1
29
- while running
30
- ui.new_line
31
- # Get command from user
32
- cmd = ui.get_cmd
33
- case cmd
34
- when "~"
35
- binding.pry
36
- when "map", "m"
37
- map = neworleans.get_map({:player => player})
38
- ui.draw_frame({:text => map})
39
- when "version", "ver"
40
- ui.display_version
41
- when "clear", "cls"
42
- ui.clear
43
- when "name", "whoami"
44
- ui.display_name({:player => player})
45
- when "location", "loc", "where", "whereami"
46
- ui.show_location({:player => player})
47
- when "look", "what", "around"
48
- neworleans.check_area({:player => player, :ui => ui, :story => story})
49
- when "forward", "f"
50
- unless player.in_combat
51
- if !player.move({:direction => :up, :neworleans => neworleans, :ui => ui, :story => story})
52
- player.in_combat = 1
53
- end
54
- else
55
- ui.cannot_travel_combat
56
- end
57
- when "backward", "b"
58
- unless player.in_combat
59
- if !player.move({:direction => :down, :neworleans => neworleans, :ui => ui, :story => story})
60
- player.in_combat = 1
61
- end
62
- else
63
- ui.cannot_travel_combat
64
- end
65
- when "left", "l"
66
- unless player.in_combat
67
- if !player.move({:direction => :left, :neworleans => neworleans, :ui => ui, :story => story})
68
- player.in_combat = 1
69
- end
70
- else
71
- ui.cannot_travel_combat
72
- end
73
- when "right", "r"
74
- unless player.in_combat
75
- if !player.move({:direction => :right, :neworleans => neworleans, :ui => ui, :story => story})
76
- player.in_combat = 1
77
- end
78
- else
79
- ui.cannot_travel_combat
80
- end
81
- when "attack", "a"
82
- if player.in_combat
83
- retval = player.attack({:enemy => player.current_enemy, :ui => ui})
84
- if retval == MISSIONGAME::ENEMY_KILLED
85
- player.points += player.current_enemy.points
86
- # Remove enemy from map
87
- neworleans.the_map[player.y-1][player.x-1] = MISSIONGAME::MAP_KEY_GRASS
88
- # Take player out of combat
89
- player.current_enemy = nil
90
- player.in_combat = false
91
- end
92
- if retval.is_a? Numeric
93
- player.current_enemy.lives -= retval
94
- retval = player.current_enemy.attack({:player => player})
95
- if retval.is_a? Numeric
96
- player.lives -= retval
97
- end
98
- if retval == MISSIONGAME::PLAYER_DEAD
99
- player.dead = 1
100
- end
101
- end
102
- else
103
- ui.not_in_combat
104
- end
105
- when "player", "me", "info", "status", "i"
106
- ui.player_info({:player => player})
107
- when "enemy"
108
- if player.in_combat
109
- ui.enemy_info({:player => player})
110
- else
111
- ui.not_in_combat
112
- end
113
- when "points", "score"
114
- ui.points({:player => player})
115
- when "suicide"
116
- player.dead = 1
117
- when "help", "h", "?"
118
- ui.help
119
- when "quit", "q", "exit"
120
- ui.quit
121
- running = nil
122
- else
123
- ui.not_found
124
- end
125
- # Is player in combat but has no enemy? Assign one.
126
- if player.in_combat && !player.current_enemy
127
- enemy = MISSIONGAME::Enemy.new
128
- player.current_enemy = enemy
129
- ui.enemy_greet({:enemy => enemy})
130
- end
131
- # Player is dead!
132
- if player.dead == 1
133
- ui.player_dead({:story => story})
134
- exit
135
- end
136
- # If player has reached the Witch
137
- if player.x == MISSIONGAME::MAP_WIDTH && player.y == 1
138
- ui.draw_frame({:text => story.ending})
139
- ui.new_line
140
- running = false
141
- end
142
- end
1
+ #!/usr/bin/env ruby
2
+ #
3
+ # Written by Webster AVosa
4
+
5
+ MISSIONGAME_VERSION = "1.00"
6
+
7
+ # Create a new UI and New Orleans
8
+ ui = MISSIONGAME::UI.new
9
+ neworleans = MISSIONGAME::NewOrleans.new
10
+
11
+ # Clear the screen and print welcome message
12
+ ui.clear
13
+ ui.welcome
14
+
15
+ # Ask name
16
+ name = ui.ask("What is your name?", /\w/)
17
+
18
+ # Create a new player
19
+ player = MISSIONGAME::Player.new({name: name, neworleans: neworleans})
20
+
21
+ # Show intro story
22
+ ui.new_line
23
+ story = MISSIONGAME::Story.new
24
+ ui.draw_frame({text: story.intro})
25
+ map = neworleans.get_map({player: player})
26
+ ui.draw_frame({text: map})
27
+
28
+ # MAIN INPUT LOOP
29
+ running = 1
30
+ while running
31
+ ui.new_line
32
+
33
+ # Get command from user
34
+ cmd = ui.get_cmd
35
+ case cmd
36
+ when "~"
37
+ binding.pry
38
+ when "map", "m"
39
+ map = neworleans.get_map({player: player})
40
+ ui.draw_frame({text: map})
41
+ when "version", "ver"
42
+ ui.display_version
43
+ when "clear", "cls", "c"
44
+ ui.clear
45
+ when "name", "whoami"
46
+ ui.display_name({player: player})
47
+ when "location", "loc", "where", "whereami"
48
+ ui.show_location({player: player})
49
+ when "look", "what", "around"
50
+ neworleans.check_area({player: player, ui: ui, story: story})
51
+ when "forward", "f"
52
+ if player.in_combat
53
+ ui.cannot_travel_combat
54
+ elsif !player.move(
55
+ {direction: :up, neworleans: neworleans, ui: ui, story: story}
56
+ )
57
+ player.in_combat = 1
58
+ end
59
+ when "backward", "b"
60
+ if player.in_combat
61
+ ui.cannot_travel_combat
62
+ elsif !player.move(
63
+ {direction: :down, neworleans: neworleans, ui: ui, story: story}
64
+ )
65
+ player.in_combat = 1
66
+ end
67
+ when "left", "l"
68
+ if player.in_combat
69
+ ui.cannot_travel_combat
70
+ elsif !player.move(
71
+ {direction: :left, neworleans: neworleans, ui: ui, story: story}
72
+ )
73
+ player.in_combat = 1
74
+ end
75
+ when "right", "r"
76
+ if player.in_combat
77
+ ui.cannot_travel_combat
78
+ elsif !player.move(
79
+ {direction: :right, neworleans: neworleans, ui: ui, story: story}
80
+ )
81
+ player.in_combat = 1
82
+ end
83
+ when "attack", "a"
84
+ if player.in_combat
85
+ retval = player.attack({enemy: player.current_enemy, ui: ui})
86
+ if retval == MISSIONGAME::ENEMY_KILLED
87
+ player.points += player.current_enemy.points
88
+
89
+ # Remove enemy from map
90
+ neworleans.the_map[player.y - 1][player.x - 1] =
91
+ MISSIONGAME::MAP_KEY_GRASS
92
+
93
+ # Take player out of combat
94
+ player.current_enemy = nil
95
+ player.in_combat = false
96
+ end
97
+ if retval.is_a? Numeric
98
+ player.current_enemy.lives -= retval
99
+ retval = player.current_enemy.attack({player: player})
100
+ player.lives -= retval if retval.is_a? Numeric
101
+ player.dead = 1 if retval == MISSIONGAME::PLAYER_DEAD
102
+ end
103
+ else
104
+ ui.not_in_combat
105
+ end
106
+ when "player", "me", "info", "status", "i"
107
+ ui.player_info({player: player})
108
+ when "enemy"
109
+ player.in_combat ? ui.enemy_info({player: player}) : ui.not_in_combat
110
+ when "points", "score"
111
+ ui.points({player: player})
112
+ when "suicide"
113
+ player.dead = 1
114
+ when "help", "h", "?"
115
+ ui.help
116
+ when "quit", "q", "exit"
117
+ ui.quit
118
+ running = nil
119
+ else
120
+ ui.not_found
121
+ end
122
+
123
+ # Is player in combat but has no enemy? Assign one.
124
+ if player.in_combat && !player.current_enemy
125
+ enemy = MISSIONGAME::Enemy.new
126
+ player.current_enemy = enemy
127
+ ui.enemy_greet({enemy: enemy})
128
+ end
129
+
130
+ # Player is dead!
131
+ if player.dead == 1
132
+ ui.player_dead({story: story})
133
+ exit
134
+ end
135
+
136
+ # If player has reached the Witch
137
+ if player.x == MISSIONGAME::MAP_WIDTH && player.y == 1
138
+ ui.draw_frame({text: story.ending})
139
+ ui.new_line
140
+ running = false
141
+ end
142
+ end