nyle 0.6.0 → 0.6.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (55) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +2 -3
  3. data/CHANGELOG.md +21 -0
  4. data/Gemfile.lock +61 -0
  5. data/README.md +2 -2
  6. data/doc/.gitkeep +0 -0
  7. data/lib/nyle.rb +53 -44
  8. data/lib/nyle/frame.rb +18 -3
  9. data/lib/nyle/screen.rb +5 -4
  10. data/lib/nyle/version.rb +1 -1
  11. data/nyle.gemspec +2 -2
  12. data/samples/{nyle_block.rb → application/block.rb} +0 -1
  13. data/samples/{nyle_clock.rb → application/clock.rb} +0 -1
  14. data/samples/{nyle_falling.rb → application/falling.rb} +5 -7
  15. data/samples/{nyle_flight.rb → application/flight.rb} +6 -9
  16. data/samples/{nyle_sketch.rb → application/sketch.rb} +0 -1
  17. data/samples/{nyle_sugar.rb → application/sugar.rb} +1 -1
  18. data/samples/{nyle_tree.rb → application/tree.rb} +2 -3
  19. data/samples/basic/color_chart.rb +316 -0
  20. data/samples/{nyle_pixel.rb → basic/color_pixel.rb} +1 -1
  21. data/samples/basic/draw_circle.rb +52 -0
  22. data/samples/basic/draw_line.rb +82 -0
  23. data/samples/basic/draw_rect.rb +58 -0
  24. data/samples/{nyle_shape.rb → basic/draw_shape.rb} +70 -70
  25. data/samples/basic/draw_text.rb +55 -0
  26. data/samples/basic/image_click.rb +33 -0
  27. data/samples/basic/image_rotate.rb +42 -0
  28. data/samples/{nyle_rpg.rb → basic/image_rpg.rb} +15 -15
  29. data/samples/basic/keyboard.rb +84 -0
  30. data/samples/{nyle_walk_notrace.rb → basic/random_walk.rb} +3 -3
  31. data/samples/{nyle_walk_trace.rb → basic/random_walk_trace.rb} +3 -3
  32. data/samples/image/n_c_mogura.png +0 -0
  33. data/samples/launcher.rb +125 -0
  34. data/samples/tips/.gitkeep +0 -0
  35. data/samples/tutorial/img.jpg +0 -0
  36. data/samples/tutorial/tut_a10.rb +10 -0
  37. data/samples/tutorial/tut_a20.rb +13 -0
  38. data/samples/tutorial/tut_a30.rb +18 -0
  39. data/samples/tutorial/tut_a40.rb +19 -0
  40. data/samples/tutorial/tut_a45.rb +21 -0
  41. data/samples/tutorial/tut_a50.rb +25 -0
  42. data/samples/tutorial/tut_a60.rb +30 -0
  43. data/samples/tutorial/tut_a70.rb +34 -0
  44. data/samples/tutorial/tut_b10.rb +14 -0
  45. data/samples/tutorial/tut_b20.rb +14 -0
  46. data/samples/tutorial/tut_b30.rb +14 -0
  47. data/samples/tutorial/tut_b40.rb +18 -0
  48. metadata +42 -23
  49. data/doc/Nyle_reference.pdf +0 -0
  50. data/samples/image/n_b_river.gif +0 -0
  51. data/samples/nyle_basics.rb +0 -69
  52. data/samples/nyle_basics2.rb +0 -70
  53. data/samples/nyle_click.rb +0 -34
  54. data/samples/nyle_colors.rb +0 -315
  55. data/samples/readme_samples.txt +0 -36
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 693c8de3045e3e2da3cf72a117fff8a29cad2e0952626e9af1dfe11f2d23576d
4
- data.tar.gz: de724f1bf413b8dce0c3ae243ad108119179872905fbd975f5d175cd9db41f4e
3
+ metadata.gz: 9dcd520326cf46949be1823ade42380cdd10da5f6018f6cad5bf9d699cb15e59
4
+ data.tar.gz: c5e0eb9530dfd5db88fbe4c04b4ca30c411f3344c299b03ae87ff24961fc2dbb
5
5
  SHA512:
6
- metadata.gz: 530eec7b56aa8713b663a770d9adc2f62dc1655b0286820d829598728fe132957d050044f9e21b3b2aaca1f041fc1bbd39e3eb8364f58698a61e18b9fd8d6afe
7
- data.tar.gz: a83a81cb91efe31be12b009010b470cf722db8f109fe7fefe0a590153a66d1791ec562f09a04ae3f58f19abcf7b5e8e782cedd60d187b6543fe3cdc2cdfa4ee8
6
+ metadata.gz: a7f64c6526220dd9be63dafd38f55af02b73d1759252fdbd968bc36946c65712df3ff1816ed658525f53e6c210befdb0a704e73966ed75e0e4353958fcd25ff3
7
+ data.tar.gz: 545b7ca4dcbe72dad395ec6c6e364bed3f90ea0075f6743b1c855f2a9c9506edd518839484afadf6bf64e9ec45a1b7865a9ec3b01538d52d8b7c46b134c77aba
data/.gitignore CHANGED
@@ -2,9 +2,8 @@ desktop.ini
2
2
  *.gem
3
3
  bin/
4
4
  pkg/
5
- doc/*.docx
6
5
  samples/.bundle/
6
+ samples/_RC
7
7
  samples/Gemfile
8
8
  samples/Gemfile.lock
9
- samples/sketch.png
10
- samples/t_*.rb
9
+ samples/application/sketch.png
@@ -1,3 +1,24 @@
1
+ ### 0.6.1 (2019/01/27)
2
+ #### New features
3
+ * add `Nyle.cursor_x` method
4
+ * add `Nyle.cursor_y` method
5
+ * enhance `Nyle.draw_image` to be able to specify option `pos`
6
+
7
+ #### Bug fixes, etc.
8
+ * adjust `Nyle.pixel` and `Nyle.pixel?` to apply 'to_i'
9
+ * change format of color code from #RRGGBBAA to #RRGGBB
10
+ * change maxinum value of @NYLE_INTERVAL` to '1000'
11
+ * change `Nyle.quit` to close `Nyle::Frame` instead of `Gtk.main_quit`
12
+
13
+ #### Reference manual
14
+ * change PDF to WEB(wiki)
15
+
16
+ #### Samples
17
+ * use `Nyle.cursor_x` and `Nyle.cursor_y`
18
+ * use option `pos` of `Nyle.draw_image`
19
+ * prepare `launcher.rb` to run samples
20
+ * ...and revise a lot
21
+
1
22
 
2
23
  ### 0.6.0 (2018/12/01)
3
24
  #### New features
@@ -0,0 +1,61 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ nyle (0.6.0)
5
+ gtk3 (~> 3.2.0, >= 3.2.0)
6
+ rsvg2 (~> 3.2.0, >= 3.2.0)
7
+
8
+ GEM
9
+ remote: https://rubygems.org/
10
+ specs:
11
+ atk (3.2.9-x86-mingw32)
12
+ glib2 (= 3.2.9)
13
+ cairo (1.15.13-x86-mingw32)
14
+ native-package-installer (>= 1.0.3)
15
+ pkg-config (>= 1.2.2)
16
+ cairo-gobject (3.2.9-x86-mingw32)
17
+ cairo
18
+ glib2 (= 3.2.9)
19
+ gdk3 (3.2.9-x86-mingw32)
20
+ cairo-gobject (= 3.2.9)
21
+ gdk_pixbuf2 (= 3.2.9)
22
+ pango (= 3.2.9)
23
+ gdk_pixbuf2 (3.2.9-x86-mingw32)
24
+ gio2 (= 3.2.9)
25
+ gio2 (3.2.9-x86-mingw32)
26
+ glib2 (= 3.2.9)
27
+ gobject-introspection (= 3.2.9)
28
+ glib2 (3.2.9-x86-mingw32)
29
+ cairo (>= 1.15.9)
30
+ native-package-installer (>= 1.0.3)
31
+ pkg-config (>= 1.2.2)
32
+ gobject-introspection (3.2.9-x86-mingw32)
33
+ glib2 (= 3.2.9)
34
+ gtk3 (3.2.9-x86-mingw32)
35
+ atk (= 3.2.9)
36
+ gdk3 (= 3.2.9)
37
+ gdk_pixbuf2 (= 3.2.9)
38
+ gio2 (= 3.2.9)
39
+ pango (= 3.2.9)
40
+ rsvg2 (= 3.2.9)
41
+ native-package-installer (1.0.6)
42
+ pango (3.2.9-x86-mingw32)
43
+ cairo-gobject (= 3.2.9)
44
+ gobject-introspection (= 3.2.9)
45
+ pkg-config (1.3.2)
46
+ rake (10.4.2)
47
+ rsvg2 (3.2.9-x86-mingw32)
48
+ cairo-gobject (= 3.2.9)
49
+ gdk_pixbuf2 (= 3.2.9)
50
+ pango (>= 3.2.9)
51
+
52
+ PLATFORMS
53
+ x86-mingw32
54
+
55
+ DEPENDENCIES
56
+ bundler (~> 1.17)
57
+ nyle!
58
+ rake (~> 10.0)
59
+
60
+ BUNDLED WITH
61
+ 1.17.1
data/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # Nyle
2
2
 
3
- 'Nyle' is a minimal graphics framework using Ruby/GTK3 and Cairo.
3
+ 'Nyle' is a minimal graphics framework using Ruby/GTK3 and rcairo.
4
4
 
5
5
  ## Requirements
6
6
 
@@ -20,7 +20,7 @@ require 'nyle'
20
20
 
21
21
  ## Documents
22
22
 
23
- Reference manual: https://github.com/spoolkitamura/nyle/tree/master/doc/Nyle_reference.pdf
23
+ Reference manual: https://github.com/spoolkitamura/nyle/wiki
24
24
 
25
25
  ## Samples
26
26
 
File without changes
@@ -1,7 +1,7 @@
1
1
 
2
2
  =begin
3
3
  'Nyle'
4
- minimal graphics framework using Ruby/GTK3 and Cairo
4
+ minimal graphics framework using Ruby/GTK3 and rcairo
5
5
 
6
6
  Copyright (c) 2018 Koki Kitamura
7
7
  Released under the MIT license
@@ -46,6 +46,8 @@ module Nyle
46
46
  @__key_release = {}
47
47
  @__mask_control = false
48
48
  @__mask_shift = false
49
+ @__cursor_x = 0
50
+ @__cursor_y = 0
49
51
 
50
52
  @__os = (
51
53
  host_os = RbConfig::CONFIG['host_os']
@@ -60,11 +62,15 @@ module Nyle
60
62
  :unknown
61
63
  end
62
64
  )
63
-
65
+ @__frame = nil # main frame
64
66
 
65
67
  # Singleton class
66
68
  class << self
67
69
  # private methods for classes in module 'Nyle'
70
+ private def _set_frame(frame)
71
+ @__frame = frame
72
+ end
73
+
68
74
  private def _set_cr(cr)
69
75
  @__cr = cr
70
76
  end
@@ -120,6 +126,23 @@ module Nyle
120
126
  else
121
127
  @__mask_shift = false # Set false to mask_shift status
122
128
  end
129
+
130
+ if @__key_down[Gdk::Keyval::KEY_Right]
131
+ @__cursor_x = +1 # Set +1 to cursor_x value
132
+ elsif @__key_down[Gdk::Keyval::KEY_Left]
133
+ @__cursor_x = -1 # Set -1 to cursor_x value
134
+ else
135
+ @__cursor_x = 0
136
+ end
137
+
138
+ if @__key_down[Gdk::Keyval::KEY_Down]
139
+ @__cursor_y = +1 # Set +1 to cursor_y value
140
+ elsif @__key_down[Gdk::Keyval::KEY_Up]
141
+ @__cursor_y = -1 # Set -1 to cursor_y value
142
+ else
143
+ @__cursor_y = 0
144
+ end
145
+
123
146
  end
124
147
  end
125
148
  end
@@ -140,6 +163,8 @@ module Nyle
140
163
  module_function def key_release?(keyval) ; Nyle.module_eval{ @__key_release [keyval] == true } ; end
141
164
  module_function def mask_control? ; Nyle.module_eval{ @__mask_control } ; end
142
165
  module_function def mask_shift? ; Nyle.module_eval{ @__mask_shift } ; end
166
+ module_function def cursor_x ; Nyle.module_eval{ @__cursor_x } ; end
167
+ module_function def cursor_y ; Nyle.module_eval{ @__cursor_y } ; end
143
168
  module_function def os ; Nyle.module_eval{ @__os } ; end
144
169
 
145
170
  module_function def save
@@ -154,13 +179,9 @@ module Nyle
154
179
  cr.save do
155
180
  cr.line_width = weight
156
181
  cr.line_cap = cap
157
- if a == 1.0
158
- cr.set_source_color(color)
159
- else
160
- cr.set_source_rgba(Cairo::Color.parse(color).r,
161
- Cairo::Color.parse(color).g,
162
- Cairo::Color.parse(color).b, a)
163
- end
182
+ cr.set_source_rgba(Cairo::Color.parse(color).r,
183
+ Cairo::Color.parse(color).g,
184
+ Cairo::Color.parse(color).b, a)
164
185
  cr.move_to(x1, y1)
165
186
  cr.line_to(x2, y2)
166
187
  cr.stroke
@@ -172,13 +193,9 @@ module Nyle
172
193
  cr.save do
173
194
  cr.line_width = weight
174
195
  cr.line_cap = cap
175
- if a == 1.0
176
- cr.set_source_color(color)
177
- else
178
- cr.set_source_rgba(Cairo::Color.parse(color).r,
179
- Cairo::Color.parse(color).g,
180
- Cairo::Color.parse(color).b, a)
181
- end
196
+ cr.set_source_rgba(Cairo::Color.parse(color).r,
197
+ Cairo::Color.parse(color).g,
198
+ Cairo::Color.parse(color).b, a)
182
199
  if round
183
200
  cr.rounded_rectangle(x, y, w, h, round, round)
184
201
  else
@@ -196,13 +213,9 @@ module Nyle
196
213
  cr = Nyle.module_eval{ @__cr }
197
214
  cr.save do
198
215
  cr.line_width = weight
199
- if a == 1.0
200
- cr.set_source_color(color)
201
- else
202
- cr.set_source_rgba(Cairo::Color.parse(color).r,
203
- Cairo::Color.parse(color).g,
204
- Cairo::Color.parse(color).b, a)
205
- end
216
+ cr.set_source_rgba(Cairo::Color.parse(color).r,
217
+ Cairo::Color.parse(color).g,
218
+ Cairo::Color.parse(color).b, a)
206
219
  cr.circle(x, y, r)
207
220
  if fill
208
221
  cr.fill
@@ -217,13 +230,9 @@ module Nyle
217
230
  cr.save do
218
231
  cr.line_width = weight
219
232
  cr.line_cap = cap
220
- if a == 1.0
221
- cr.set_source_color(color)
222
- else
223
- cr.set_source_rgba(Cairo::Color.parse(color).r,
224
- Cairo::Color.parse(color).g,
225
- Cairo::Color.parse(color).b, a)
226
- end
233
+ cr.set_source_rgba(Cairo::Color.parse(color).r,
234
+ Cairo::Color.parse(color).g,
235
+ Cairo::Color.parse(color).b, a)
227
236
  vertex = points.dup
228
237
  vertex << vertex.first if close # closed shape
229
238
  vertex.each do |v|
@@ -242,13 +251,9 @@ module Nyle
242
251
  cr.save do
243
252
  cr.select_font_face("+") # Temporaly use "+" [TODO] (Need to confirm font name)
244
253
  cr.font_size = size
245
- if a == 1.0
246
- cr.set_source_color(color)
247
- else
248
- cr.set_source_rgba(Cairo::Color.parse(color).r,
249
- Cairo::Color.parse(color).g,
250
- Cairo::Color.parse(color).b, a)
251
- end
254
+ cr.set_source_rgba(Cairo::Color.parse(color).r,
255
+ Cairo::Color.parse(color).g,
256
+ Cairo::Color.parse(color).b, a)
252
257
  cr.move_to(x, y)
253
258
  cr.show_text(str)
254
259
  end
@@ -298,10 +303,14 @@ module Nyle
298
303
  tiles
299
304
  end
300
305
 
301
- module_function def draw_image(x, y, pixbuf)
306
+ module_function def draw_image(x, y, pixbuf, pos: :CORNER)
302
307
  cr = Nyle.module_eval{ @__cr }
303
308
  cr.save do
304
- cr.set_source_pixbuf(pixbuf, x, y)
309
+ if pos == :CENTER
310
+ cr.set_source_pixbuf(pixbuf, x - pixbuf.width / 2, y - pixbuf.height / 2)
311
+ else
312
+ cr.set_source_pixbuf(pixbuf, x, y) # :CORNER
313
+ end
305
314
  cr.paint
306
315
  end
307
316
  end
@@ -317,13 +326,12 @@ module Nyle
317
326
  private def _pixel(x, y)
318
327
  cr = Nyle.module_eval{ @__cr }
319
328
  surface = cr.target
320
- address = surface.width * (y * 4) + (x * 4)
329
+ address = surface.width * (y.to_i * 4) + (x.to_i * 4)
321
330
  color = surface.data.byteslice(address, 4).unpack("H*").first.upcase # e.g. '\xcc\x77\x00\xff -> ['cc7700ff'] -> 'CC7700FF'
322
331
  color = '#' +
323
332
  color.slice(4, 2) +
324
333
  color.slice(2, 2) +
325
- color.slice(0, 2) +
326
- color.slice(6, 2) # BBGGRRAA -> #RRGGBBAA
334
+ color.slice(0, 2) # #BBGGRR -> #RRGGBB
327
335
  end
328
336
  end
329
337
  end
@@ -334,7 +342,7 @@ module Nyle
334
342
 
335
343
  module_function def pixel?(x, y, color)
336
344
  c = Nyle::INNER.module_eval{ _pixel(x, y) }
337
- return (c == Cairo::Color.parse(color).to_s ? true : false)
345
+ return (c == Cairo::Color.parse(color).to_s[0, 7] ? true : false)
338
346
  end
339
347
 
340
348
  module_function def translate(tx, ty)
@@ -353,7 +361,8 @@ module Nyle
353
361
  end
354
362
 
355
363
  module_function def quit
356
- Gtk.main_quit
364
+ @__frame.close if @__frame # destroy
365
+ # Gtk.main_quit
357
366
  end
358
367
 
359
368
  end
@@ -1,7 +1,7 @@
1
1
 
2
2
  =begin
3
3
  'Nyle'
4
- minimal graphics framework using Ruby/GTK3 and Cairo
4
+ minimal graphics framework using Ruby/GTK3 and rcairo
5
5
 
6
6
  Copyright (c) 2018 Koki Kitamura
7
7
  Released under the MIT license
@@ -21,7 +21,7 @@ module Nyle
21
21
  self.title = title
22
22
  @transition = [] # Screen transition table
23
23
  @interval_time = ENV['NYLE_INTERVAL'].to_i # milli seconds
24
- @interval_time = 15 if @interval_time < 5 or @interval_time > 60
24
+ @interval_time = 15 if @interval_time < 5 or @interval_time > 1000
25
25
  GLib::Timeout.add(@interval_time) do
26
26
  if @current_screen
27
27
  update
@@ -29,6 +29,12 @@ module Nyle
29
29
  end
30
30
  end
31
31
 
32
+ # Nyle main frame
33
+ me = self
34
+ Nyle.module_eval {
35
+ _set_frame(me)
36
+ }
37
+
32
38
  # Mouse events
33
39
  self.add_events([:button_press_mask,
34
40
  :button_release_mask])
@@ -68,10 +74,14 @@ module Nyle
68
74
  end
69
75
 
70
76
  self.signal_connect(:destroy) do
71
- Gtk.main_quit
77
+ _quit
72
78
  end
73
79
  end
74
80
 
81
+ def close
82
+ _quit
83
+ end
84
+
75
85
  def set_current(screen)
76
86
  _set_current(screen)
77
87
  end
@@ -102,6 +112,11 @@ module Nyle
102
112
  }
103
113
  end
104
114
 
115
+ private def _quit
116
+ self.hide
117
+ Gtk.main_quit
118
+ end
119
+
105
120
  private def update
106
121
  @transition.each do |tr|
107
122
  if tr[:current] == @current_screen and tr[:status] == @current_screen.status
@@ -1,7 +1,7 @@
1
1
 
2
2
  =begin
3
3
  'Nyle'
4
- minimal graphics framework using Ruby/GTK3 and Cairo
4
+ minimal graphics framework using Ruby/GTK3 and rcairo
5
5
 
6
6
  Copyright (c) 2018 Koki Kitamura
7
7
  Released under the MIT license
@@ -25,6 +25,10 @@ module Nyle
25
25
 
26
26
  @fill_done = false
27
27
 
28
+ Nyle.module_eval {
29
+ _set_screen_size(width, height)
30
+ }
31
+
28
32
  # Draw to 'CairoContext' of ImageSurface once, and copy to 'CairoContext' of DrawingArea
29
33
  @canvas = Cairo::ImageSurface.new(@width, @height)
30
34
 
@@ -96,6 +100,3 @@ module Nyle
96
100
 
97
101
  end
98
102
 
99
-
100
- # [TODO] :draw counter (for waiting, sleeping, idling)
101
-
@@ -1,3 +1,3 @@
1
1
  module Nyle
2
- VERSION = "0.6.0"
2
+ VERSION = "0.6.1"
3
3
  end
@@ -9,8 +9,8 @@ Gem::Specification.new do |spec|
9
9
  spec.authors = ["Koki Kitamura"]
10
10
  spec.email = ["spool.kitamura@nifty.ne.jp"]
11
11
 
12
- spec.summary = %q{minimal graphics framework using Ruby/GTK3 and Cairo}
13
- spec.description = %q{'Nyle' is a minimal graphics framework using Ruby/GTK3 and Cairo}
12
+ spec.summary = %q{minimal graphics framework using Ruby/GTK3 and rcairo}
13
+ spec.description = %q{'Nyle' is a minimal graphics framework using Ruby/GTK3 and rcairo}
14
14
  spec.homepage = "https://github.com/spoolkitamura/nyle"
15
15
  spec.license = "MIT"
16
16
 
@@ -1,4 +1,3 @@
1
-
2
1
  require 'nyle'
3
2
 
4
3
  class Blocks < Array
@@ -1,4 +1,3 @@
1
-
2
1
  require 'nyle'
3
2
 
4
3
  class Screen < Nyle::Screen
@@ -1,4 +1,3 @@
1
-
2
1
  require 'nyle'
3
2
 
4
3
  class Field
@@ -91,13 +90,13 @@ end
91
90
 
92
91
  class Weapon < Item
93
92
  def initialize
94
- super("image/n_f_weapon.png", 7, 0.4, 0.4)
93
+ super("../image/n_f_weapon.png", 7, 0.4, 0.4)
95
94
  end
96
95
  end
97
96
 
98
97
  class Banana < Item
99
98
  def initialize
100
- super("image/n_f_banana.png", 0, 0.6, 0.6)
99
+ super("../image/n_f_banana.png", 0, 0.6, 0.6)
101
100
  end
102
101
 
103
102
  def get_score
@@ -107,7 +106,7 @@ end
107
106
 
108
107
  class Strawberry < Item
109
108
  def initialize
110
- super("image/n_f_strawberry.png", 0, 0.6, 0.6)
109
+ super("../image/n_f_strawberry.png", 0, 0.6, 0.6)
111
110
  end
112
111
 
113
112
  def get_score
@@ -120,7 +119,7 @@ class Hero
120
119
  MOVING_RANGE_X = 640
121
120
 
122
121
  def initialize(x, y)
123
- @image = Nyle.load_image("./image/n_f_panda.png", {sx: 0.3, sy: 0.3, color_key: :WHITE})
122
+ @image = Nyle.load_image("../image/n_f_panda.png", {sx: 0.3, sy: 0.3, color_key: :WHITE})
124
123
  @x = x - @image.width / 2
125
124
  @y = y - @image.height
126
125
  @speed = 3.5
@@ -227,8 +226,7 @@ class Screen_Play < Nyle::Screen
227
226
  @bananas.each { |banana| banana.drop }
228
227
  @strawberries.each { |strawberrie| strawberrie.drop }
229
228
  _detect
230
- @hero.move( 1, 0) if Nyle.key_down?(KEY_Right)
231
- @hero.move(-1, 0) if Nyle.key_down?(KEY_Left)
229
+ @hero.move(Nyle.cursor_x, 0)
232
230
  Nyle.quit if Nyle.key_press?(KEY_Escape)
233
231
  end
234
232