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 +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
|