ruby_snake 0.0.3 → 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
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