ruby_snake 0.0.3 → 0.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/README.md CHANGED
@@ -38,7 +38,7 @@ ruby_snake
38
38
 
39
39
  ## Keyboard Mapping
40
40
 
41
- Easy to play, very friendly operation of vim user.
41
+ Easy to play, very friendly operation to vim user.
42
42
 
43
43
  > `k` -> up
44
44
 
@@ -3,7 +3,7 @@ module RubySnake
3
3
 
4
4
  # The following code is a shit
5
5
  class << self
6
- attr_accessor :message, :snake
6
+ attr_accessor :message, :snake, :food
7
7
 
8
8
  def connect(host='127.0.0.1')
9
9
  @message = '0'
@@ -25,13 +25,20 @@ module RubySnake
25
25
  when '0'
26
26
  @message = '1'
27
27
  when '1'
28
- @message = Game.snake.body.join(',').to_s if Game.snake
28
+ @message = ([Game.snake.food] + Game.snake.body).join(',').to_s if Game.snake
29
29
  when '2'
30
30
  Game.win
31
31
  break
32
+ when '3'
33
+ Game.lose
34
+ break
32
35
  else
33
- @message = Game.snake.body.join(',').to_s if Game.snake
34
- @snake = server_message.split(',').map(&:to_i).each_slice(2).to_a if server_message
36
+ @message = ([Game.snake.food] + Game.snake.body).join(',').to_s if Game.snake
37
+ array = server_message.split(',').map(&:to_i).each_slice(2).to_a if server_message
38
+ if array
39
+ @food = array.shift
40
+ @snake = array
41
+ end
35
42
  end
36
43
  end
37
44
  end
@@ -188,9 +188,25 @@ module RubySnake
188
188
  @win
189
189
  end
190
190
 
191
- def lose
191
+ def win!
192
+ role_class.message = '3'
192
193
  Ncurses.nodelay window, false
194
+ UI::Two.draw_win
195
+ sleep 1
196
+ window.getch
197
+ end
198
+
199
+ def lose
200
+ @lose = true
201
+ end
202
+
203
+ def lose?
204
+ @lose
205
+ end
206
+
207
+ def lose!
193
208
  role_class.message = '2'
209
+ Ncurses.nodelay window, false
194
210
  UI::Two.draw_lose
195
211
  sleep 1
196
212
  window.getch
@@ -3,7 +3,7 @@ module RubySnake
3
3
 
4
4
  # The following code is a shit
5
5
  class << self
6
- attr_accessor :message, :snake
6
+ attr_accessor :message, :snake, :food
7
7
 
8
8
  def start
9
9
  @message = '0'
@@ -19,13 +19,20 @@ module RubySnake
19
19
  when '0'
20
20
  @message = '1'
21
21
  when '1'
22
- @message = Game.snake.body.join(',').to_s if Game.snake
22
+ @message = ([Game.snake.food] + Game.snake.body).join(',').to_s if Game.snake
23
23
  when '2'
24
24
  Game.win
25
25
  break
26
+ when '3'
27
+ Game.lose
28
+ break
26
29
  else
27
- @message = Game.snake.body.join(',').to_s if Game.snake
28
- @snake = client_message.split(',').map(&:to_i).each_slice(2).to_a if client_message
30
+ @message = ([Game.snake.food] + Game.snake.body).join(',').to_s if Game.snake
31
+ array = client_message.split(',').map(&:to_i).each_slice(2).to_a if client_message
32
+ if array
33
+ @food = array.shift
34
+ @snake = array
35
+ end
29
36
  end
30
37
  end
31
38
  end
@@ -67,9 +67,18 @@ module RubySnake
67
67
  super
68
68
  end
69
69
 
70
+ def score
71
+ 50 - snake.body.length + 2
72
+ end
73
+
74
+ def draw_score
75
+ window.mvprintw 0, 0, score.to_s
76
+ end
77
+
70
78
  def draw_local
71
79
  draw_snake
72
80
  draw_food
81
+ draw_score
73
82
  window.noutrefresh
74
83
  Ncurses.doupdate
75
84
  clear_tail
@@ -81,6 +90,14 @@ module RubySnake
81
90
  remote_window.mvprintw x, y, symbol
82
91
  end
83
92
 
93
+ def remote_score
94
+ 50 - remote_snake_body.length + 2
95
+ end
96
+
97
+ def draw_remote_score
98
+ remote_window.mvprintw 0, 0, score.to_s
99
+ end
100
+
84
101
  def draw_remote_snake
85
102
  remote_window.color_set 2, nil
86
103
  remote_snake_body.each do |body|
@@ -104,18 +121,23 @@ module RubySnake
104
121
  Game.role_class.snake.last
105
122
  end
106
123
 
124
+ def remote_food
125
+ Game.role_class.food
126
+ end
127
+
107
128
  def clear_remote_tail
108
129
  remote_display remote_snake_tail, ' '
109
130
  end
110
131
 
111
132
  def draw_remote_food
112
133
  remote_window.color_set 1, nil
113
- remote_display snake.food, '$'
134
+ remote_display remote_food, '$'
114
135
  end
115
136
 
116
137
  def draw_remote
117
138
  draw_remote_snake
118
139
  draw_remote_food
140
+ draw_remote_score
119
141
  remote_window.noutrefresh
120
142
  Ncurses.doupdate
121
143
  clear_remote_tail
@@ -137,14 +159,23 @@ module RubySnake
137
159
  loop do
138
160
  draw_map
139
161
  operation = Game.listen_operation
162
+
140
163
  if Game.win?
141
164
  draw_win
142
165
  sleep 1
143
166
  window.getch
144
167
  break
168
+ elsif Game.lose?
169
+ draw_lose
170
+ sleep 1
171
+ window.getch
172
+ break
145
173
  end
146
174
  if !snake.move(operation)
147
- Game.lose
175
+ Game.lose!
176
+ break
177
+ elsif score == 0
178
+ Game.win!
148
179
  break
149
180
  end
150
181
  end
@@ -1,3 +1,3 @@
1
1
  module RubySnake
2
- VERSION = "0.0.3"
2
+ VERSION = "0.0.4"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ruby_snake
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-12-26 00:00:00.000000000 Z
12
+ date: 2012-12-27 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: ncurses-ruby