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 +1 -1
- data/lib/ruby_snake/client.rb +11 -4
- data/lib/ruby_snake/game.rb +17 -1
- data/lib/ruby_snake/server.rb +11 -4
- data/lib/ruby_snake/ui/two.rb +33 -2
- data/lib/ruby_snake/version.rb +1 -1
- metadata +2 -2
data/README.md
CHANGED
data/lib/ruby_snake/client.rb
CHANGED
@@ -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
|
-
|
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
|
data/lib/ruby_snake/game.rb
CHANGED
@@ -188,9 +188,25 @@ module RubySnake
|
|
188
188
|
@win
|
189
189
|
end
|
190
190
|
|
191
|
-
def
|
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
|
data/lib/ruby_snake/server.rb
CHANGED
@@ -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
|
-
|
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
|
data/lib/ruby_snake/ui/two.rb
CHANGED
@@ -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
|
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
|
data/lib/ruby_snake/version.rb
CHANGED
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.
|
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-
|
12
|
+
date: 2012-12-27 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: ncurses-ruby
|