the-swarm 1.0.3

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.
Files changed (56) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +3 -0
  3. data/.yardopts +8 -0
  4. data/Gemfile +24 -0
  5. data/LICENSE.txt +22 -0
  6. data/README.md +35 -0
  7. data/Rakefile +26 -0
  8. data/bin/swarm +11 -0
  9. data/docs/Swarm.html +296 -0
  10. data/docs/Swarm/Catalog.html +819 -0
  11. data/docs/Swarm/Console.html +1050 -0
  12. data/docs/Swarm/Console/Color.html +160 -0
  13. data/docs/Swarm/Console/NormalKey.html +410 -0
  14. data/docs/Swarm/Console/PopUp.html +236 -0
  15. data/docs/Swarm/Console/VIKey.html +410 -0
  16. data/docs/Swarm/Five.html +421 -0
  17. data/docs/Swarm/Four.html +389 -0
  18. data/docs/Swarm/Game.html +1197 -0
  19. data/docs/Swarm/Intro.html +419 -0
  20. data/docs/Swarm/Level.html +700 -0
  21. data/docs/Swarm/Map.html +2336 -0
  22. data/docs/Swarm/One.html +353 -0
  23. data/docs/Swarm/Three.html +383 -0
  24. data/docs/Swarm/Tile.html +3823 -0
  25. data/docs/Swarm/Two.html +355 -0
  26. data/docs/_index.html +313 -0
  27. data/docs/class_list.html +51 -0
  28. data/docs/css/common.css +1 -0
  29. data/docs/css/full_list.css +58 -0
  30. data/docs/css/style.css +492 -0
  31. data/docs/file.LICENSE.html +70 -0
  32. data/docs/file.README.html +101 -0
  33. data/docs/file_list.html +61 -0
  34. data/docs/frames.html +17 -0
  35. data/docs/index.html +101 -0
  36. data/docs/js/app.js +248 -0
  37. data/docs/js/full_list.js +216 -0
  38. data/docs/js/jquery.js +4 -0
  39. data/docs/method_list.html +1195 -0
  40. data/docs/top-level-namespace.html +110 -0
  41. data/lib/swarm.rb +60 -0
  42. data/lib/swarm/catalog.rb +71 -0
  43. data/lib/swarm/console.rb +165 -0
  44. data/lib/swarm/game.rb +173 -0
  45. data/lib/swarm/level.rb +58 -0
  46. data/lib/swarm/levels/five.rb +71 -0
  47. data/lib/swarm/levels/four.rb +55 -0
  48. data/lib/swarm/levels/intro.rb +36 -0
  49. data/lib/swarm/levels/one.rb +35 -0
  50. data/lib/swarm/levels/three.rb +51 -0
  51. data/lib/swarm/levels/two.rb +38 -0
  52. data/lib/swarm/map.rb +254 -0
  53. data/lib/swarm/tile.rb +149 -0
  54. data/lib/swarm/version.rb +5 -0
  55. data/swarm.gemspec +24 -0
  56. metadata +112 -0
@@ -0,0 +1,1197 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <meta charset="utf-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>
7
+ Class: Swarm::Game
8
+
9
+ &mdash; &quot;Swarm&quot; Source Code Documentation
10
+
11
+ </title>
12
+
13
+ <link rel="stylesheet" href="../css/style.css" type="text/css" charset="utf-8" />
14
+
15
+ <link rel="stylesheet" href="../css/common.css" type="text/css" charset="utf-8" />
16
+
17
+ <script type="text/javascript" charset="utf-8">
18
+ pathId = "Swarm::Game";
19
+ relpath = '../';
20
+ </script>
21
+
22
+
23
+ <script type="text/javascript" charset="utf-8" src="../js/jquery.js"></script>
24
+
25
+ <script type="text/javascript" charset="utf-8" src="../js/app.js"></script>
26
+
27
+
28
+ </head>
29
+ <body>
30
+ <div class="nav_wrap">
31
+ <iframe id="nav" src="../class_list.html?1"></iframe>
32
+ <div id="resizer"></div>
33
+ </div>
34
+
35
+ <div id="main" tabindex="-1">
36
+ <div id="header">
37
+ <div id="menu">
38
+
39
+ <a href="../_index.html">Index (G)</a> &raquo;
40
+ <span class='title'><span class='object_link'><a href="../Swarm.html" title="Swarm (module)">Swarm</a></span></span>
41
+ &raquo;
42
+ <span class="title">Game</span>
43
+
44
+ </div>
45
+
46
+ <div id="search">
47
+
48
+ <a class="full_list_link" id="class_list_link"
49
+ href="../class_list.html">
50
+
51
+ <svg width="24" height="24">
52
+ <rect x="0" y="4" width="24" height="4" rx="1" ry="1"></rect>
53
+ <rect x="0" y="12" width="24" height="4" rx="1" ry="1"></rect>
54
+ <rect x="0" y="20" width="24" height="4" rx="1" ry="1"></rect>
55
+ </svg>
56
+ </a>
57
+
58
+ </div>
59
+ <div class="clear"></div>
60
+ </div>
61
+
62
+ <div id="content"><h1>Class: Swarm::Game
63
+
64
+
65
+
66
+ </h1>
67
+ <div class="box_info">
68
+
69
+ <dl>
70
+ <dt>Inherits:</dt>
71
+ <dd>
72
+ <span class="inheritName">Object</span>
73
+
74
+ <ul class="fullTree">
75
+ <li>Object</li>
76
+
77
+ <li class="next">Swarm::Game</li>
78
+
79
+ </ul>
80
+ <a href="#" class="inheritanceTree">show all</a>
81
+
82
+ </dd>
83
+ </dl>
84
+
85
+
86
+
87
+
88
+
89
+
90
+
91
+
92
+
93
+
94
+
95
+ <dl>
96
+ <dt>Defined in:</dt>
97
+ <dd>lib/swarm/game.rb</dd>
98
+ </dl>
99
+
100
+ </div>
101
+
102
+
103
+ <h2>Constant Summary</h2>
104
+ <dl class="constants">
105
+
106
+ <dt id="REFRESH_RATE-constant" class="">REFRESH_RATE =
107
+ <div class="docstring">
108
+ <div class="discussion">
109
+
110
+ <p>This seems to keep the laptop under 750°.</p>
111
+
112
+
113
+ </div>
114
+ </div>
115
+ <div class="tags">
116
+
117
+
118
+ </div>
119
+ </dt>
120
+ <dd><pre class="code"><span class='float'>0.05</span></pre></dd>
121
+
122
+ </dl>
123
+
124
+
125
+
126
+
127
+
128
+
129
+
130
+
131
+ <h2>
132
+ Instance Method Summary
133
+ <small><a href="#" class="summary_toggle">collapse</a></small>
134
+ </h2>
135
+
136
+ <ul class="summary">
137
+
138
+ <li class="private ">
139
+ <span class="summary_signature">
140
+
141
+ <a href="#initialize-instance_method" title="#initialize (instance method)">#<strong>initialize</strong> &#x21d2; Game </a>
142
+
143
+
144
+
145
+ </span>
146
+
147
+
148
+ <span class="note title constructor">constructor</span>
149
+
150
+
151
+ <span class="note title private">private</span>
152
+
153
+
154
+
155
+
156
+
157
+ <span class="summary_desc"><div class='inline'>
158
+ <p>A new instance of Game.</p>
159
+ </div></span>
160
+
161
+ </li>
162
+
163
+
164
+ <li class="private ">
165
+ <span class="summary_signature">
166
+
167
+ <a href="#listen_for_keypress-instance_method" title="#listen_for_keypress (instance method)">#<strong>listen_for_keypress</strong> &#x21d2; Object </a>
168
+
169
+
170
+
171
+ </span>
172
+
173
+
174
+
175
+ <span class="note title private">private</span>
176
+
177
+
178
+
179
+
180
+
181
+ <span class="summary_desc"><div class='inline'></div></span>
182
+
183
+ </li>
184
+
185
+
186
+ <li class="public ">
187
+ <span class="summary_signature">
188
+
189
+ <a href="#over%3F-instance_method" title="#over? (instance method)">#<strong>over?</strong> &#x21d2; Boolean </a>
190
+
191
+
192
+
193
+ </span>
194
+
195
+
196
+
197
+
198
+
199
+
200
+
201
+
202
+
203
+ <span class="summary_desc"><div class='inline'>
204
+ <p>A game is “over” when any of these conditions are met.</p>
205
+ </div></span>
206
+
207
+ </li>
208
+
209
+
210
+ <li class="public ">
211
+ <span class="summary_signature">
212
+
213
+ <a href="#pause-instance_method" title="#pause (instance method)">#<strong>pause</strong> &#x21d2; Object </a>
214
+
215
+
216
+
217
+ </span>
218
+
219
+
220
+
221
+
222
+
223
+
224
+
225
+
226
+
227
+ <span class="summary_desc"><div class='inline'></div></span>
228
+
229
+ </li>
230
+
231
+
232
+ <li class="public ">
233
+ <span class="summary_signature">
234
+
235
+ <a href="#play!-instance_method" title="#play! (instance method)">#<strong>play!</strong> &#x21d2; Object </a>
236
+
237
+
238
+
239
+ </span>
240
+
241
+
242
+
243
+
244
+
245
+
246
+
247
+
248
+
249
+ <span class="summary_desc"><div class='inline'></div></span>
250
+
251
+ </li>
252
+
253
+
254
+ <li class="public ">
255
+ <span class="summary_signature">
256
+
257
+ <a href="#setup!-instance_method" title="#setup! (instance method)">#<strong>setup!</strong>(level) &#x21d2; Object </a>
258
+
259
+
260
+
261
+ </span>
262
+
263
+
264
+
265
+
266
+
267
+
268
+
269
+
270
+
271
+ <span class="summary_desc"><div class='inline'></div></span>
272
+
273
+ </li>
274
+
275
+
276
+ <li class="public ">
277
+ <span class="summary_signature">
278
+
279
+ <a href="#show!-instance_method" title="#show! (instance method)">#<strong>show!</strong> &#x21d2; Object </a>
280
+
281
+
282
+
283
+ </span>
284
+
285
+
286
+
287
+
288
+
289
+
290
+
291
+
292
+
293
+ <span class="summary_desc"><div class='inline'></div></span>
294
+
295
+ </li>
296
+
297
+
298
+ <li class="private ">
299
+ <span class="summary_signature">
300
+
301
+ <a href="#spawn_player-instance_method" title="#spawn_player (instance method)">#<strong>spawn_player</strong> &#x21d2; Object </a>
302
+
303
+
304
+
305
+ </span>
306
+
307
+
308
+
309
+ <span class="note title private">private</span>
310
+
311
+
312
+
313
+
314
+
315
+ <span class="summary_desc"><div class='inline'>
316
+ <p>def find_player @player = @level.find_player end.</p>
317
+ </div></span>
318
+
319
+ </li>
320
+
321
+
322
+ <li class="public ">
323
+ <span class="summary_signature">
324
+
325
+ <a href="#start-instance_method" title="#start (instance method)">#<strong>start</strong> &#x21d2; true </a>
326
+
327
+
328
+
329
+ </span>
330
+
331
+
332
+
333
+
334
+
335
+
336
+
337
+
338
+
339
+ <span class="summary_desc"><div class='inline'>
340
+ <p>Set the “start game” flag.</p>
341
+ </div></span>
342
+
343
+ </li>
344
+
345
+
346
+ <li class="private ">
347
+ <span class="summary_signature">
348
+
349
+ <a href="#statistics-instance_method" title="#statistics (instance method)">#<strong>statistics</strong> &#x21d2; Hash </a>
350
+
351
+
352
+
353
+ </span>
354
+
355
+
356
+
357
+ <span class="note title private">private</span>
358
+
359
+
360
+
361
+
362
+
363
+ <span class="summary_desc"><div class='inline'></div></span>
364
+
365
+ </li>
366
+
367
+
368
+ <li class="public ">
369
+ <span class="summary_signature">
370
+
371
+ <a href="#stop-instance_method" title="#stop (instance method)">#<strong>stop</strong> &#x21d2; true </a>
372
+
373
+
374
+
375
+ </span>
376
+
377
+
378
+
379
+
380
+
381
+
382
+
383
+
384
+
385
+ <span class="summary_desc"><div class='inline'>
386
+ <p>Set the “stop game” flag.</p>
387
+ </div></span>
388
+
389
+ </li>
390
+
391
+
392
+ <li class="public ">
393
+ <span class="summary_signature">
394
+
395
+ <a href="#stopped%3F-instance_method" title="#stopped? (instance method)">#<strong>stopped?</strong> &#x21d2; Boolean </a>
396
+
397
+
398
+
399
+ </span>
400
+
401
+
402
+
403
+
404
+
405
+
406
+
407
+
408
+
409
+ <span class="summary_desc"><div class='inline'></div></span>
410
+
411
+ </li>
412
+
413
+
414
+ <li class="public ">
415
+ <span class="summary_signature">
416
+
417
+ <a href="#to_s-instance_method" title="#to_s (instance method)">#<strong>to_s</strong> &#x21d2; String </a>
418
+
419
+
420
+
421
+ </span>
422
+
423
+
424
+
425
+
426
+
427
+
428
+
429
+
430
+
431
+ <span class="summary_desc"><div class='inline'></div></span>
432
+
433
+ </li>
434
+
435
+
436
+ </ul>
437
+
438
+
439
+ <div id="constructor_details" class="method_details_list">
440
+ <h2>Constructor Details</h2>
441
+
442
+ <div class="method_details first">
443
+ <h3 class="signature first" id="initialize-instance_method">
444
+
445
+ #<strong>initialize</strong> &#x21d2; <tt><span class='object_link'><a href="" title="Swarm::Game (class)">Game</a></span></tt> <span class="extras">(private)</span>
446
+
447
+
448
+
449
+
450
+
451
+ </h3><div class="docstring">
452
+ <div class="discussion">
453
+
454
+ <p>Returns a new instance of Game</p>
455
+
456
+
457
+ </div>
458
+ </div>
459
+ <div class="tags">
460
+
461
+
462
+ </div><table class="source_code">
463
+ <tr>
464
+ <td>
465
+ <pre class="lines">
466
+
467
+
468
+ 167
469
+ 168
470
+ 169
471
+ 170
472
+ 171</pre>
473
+ </td>
474
+ <td>
475
+ <pre class="code"><span class="info file"># File 'lib/swarm/game.rb', line 167</span>
476
+
477
+ <span class='kw'>def</span> <span class='id identifier rubyid_initialize'>initialize</span>
478
+ <span class='ivar'>@players</span> <span class='op'>=</span> <span class='int'>5</span>
479
+
480
+ <span class='ivar'>@rate</span> <span class='op'>=</span> <span class='float'>2.0</span>
481
+ <span class='kw'>end</span></pre>
482
+ </td>
483
+ </tr>
484
+ </table>
485
+ </div>
486
+
487
+ </div>
488
+
489
+
490
+ <div id="instance_method_details" class="method_details_list">
491
+ <h2>Instance Method Details</h2>
492
+
493
+
494
+ <div class="method_details first">
495
+ <h3 class="signature first" id="listen_for_keypress-instance_method">
496
+
497
+ #<strong>listen_for_keypress</strong> &#x21d2; <tt>Object</tt> <span class="extras">(private)</span>
498
+
499
+
500
+
501
+
502
+
503
+ </h3><table class="source_code">
504
+ <tr>
505
+ <td>
506
+ <pre class="lines">
507
+
508
+
509
+ 153
510
+ 154
511
+ 155
512
+ 156
513
+ 157
514
+ 158
515
+ 159
516
+ 160
517
+ 161
518
+ 162
519
+ 163
520
+ 164
521
+ 165</pre>
522
+ </td>
523
+ <td>
524
+ <pre class="code"><span class="info file"># File 'lib/swarm/game.rb', line 153</span>
525
+
526
+ <span class='kw'>def</span> <span class='id identifier rubyid_listen_for_keypress'>listen_for_keypress</span>
527
+ <span class='const'><span class='object_link'><a href="Console.html" title="Swarm::Console (module)">Console</a></span></span><span class='period'>.</span><span class='id identifier rubyid_keypress'><span class='object_link'><a href="Console.html#keypress-instance_method" title="Swarm::Console#keypress (method)">keypress</a></span></span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_command'>command</span><span class='op'>|</span>
528
+ <span class='kw'>case</span> <span class='id identifier rubyid_command'>command</span>
529
+ <span class='kw'>when</span> <span class='const'><span class='object_link'><a href="Console.html" title="Swarm::Console (module)">Console</a></span></span><span class='period'>.</span><span class='id identifier rubyid_up'>up</span><span class='semicolon'>;</span> <span class='ivar'>@popup</span> <span class='op'>||</span> <span class='ivar'>@level</span><span class='period'>.</span><span class='id identifier rubyid_move_player'>move_player</span><span class='lparen'>(</span><span class='symbol'>:north</span><span class='rparen'>)</span>
530
+ <span class='kw'>when</span> <span class='const'><span class='object_link'><a href="Console.html" title="Swarm::Console (module)">Console</a></span></span><span class='period'>.</span><span class='id identifier rubyid_down'>down</span><span class='semicolon'>;</span> <span class='ivar'>@popup</span> <span class='op'>||</span> <span class='ivar'>@level</span><span class='period'>.</span><span class='id identifier rubyid_move_player'>move_player</span><span class='lparen'>(</span><span class='symbol'>:south</span><span class='rparen'>)</span>
531
+ <span class='kw'>when</span> <span class='const'><span class='object_link'><a href="Console.html" title="Swarm::Console (module)">Console</a></span></span><span class='period'>.</span><span class='id identifier rubyid_left'>left</span><span class='semicolon'>;</span> <span class='ivar'>@popup</span> <span class='op'>||</span> <span class='ivar'>@level</span><span class='period'>.</span><span class='id identifier rubyid_move_player'>move_player</span><span class='lparen'>(</span><span class='symbol'>:west</span><span class='rparen'>)</span>
532
+ <span class='kw'>when</span> <span class='const'><span class='object_link'><a href="Console.html" title="Swarm::Console (module)">Console</a></span></span><span class='period'>.</span><span class='id identifier rubyid_right'>right</span><span class='semicolon'>;</span> <span class='ivar'>@popup</span> <span class='op'>||</span> <span class='ivar'>@level</span><span class='period'>.</span><span class='id identifier rubyid_move_player'>move_player</span><span class='lparen'>(</span><span class='symbol'>:east</span><span class='rparen'>)</span>
533
+ <span class='kw'>when</span> <span class='const'><span class='object_link'><a href="Console.html" title="Swarm::Console (module)">Console</a></span></span><span class='period'>.</span><span class='id identifier rubyid_pause'>pause</span><span class='semicolon'>;</span> <span class='id identifier rubyid_pause'>pause</span> <span class='lbrace'>{</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>PAUSED</span><span class='tstring_end'>&#39;</span></span> <span class='rbrace'>}</span>
534
+ <span class='kw'>when</span> <span class='const'><span class='object_link'><a href="Console.html" title="Swarm::Console (module)">Console</a></span></span><span class='period'>.</span><span class='id identifier rubyid_quit'>quit</span><span class='semicolon'>;</span> <span class='id identifier rubyid_stop'>stop</span>
535
+ <span class='kw'>end</span>
536
+ <span class='const'>STDIN</span><span class='period'>.</span><span class='id identifier rubyid_iflush'>iflush</span> <span class='comment'># prevent command queueing
537
+ </span> <span class='kw'>end</span>
538
+ <span class='kw'>end</span></pre>
539
+ </td>
540
+ </tr>
541
+ </table>
542
+ </div>
543
+
544
+ <div class="method_details ">
545
+ <h3 class="signature " id="over?-instance_method">
546
+
547
+ #<strong>over?</strong> &#x21d2; <tt>Boolean</tt>
548
+
549
+
550
+
551
+
552
+
553
+ </h3><div class="docstring">
554
+ <div class="discussion">
555
+
556
+ <p>A game is “over” when any of these conditions are met</p>
557
+ <ul><li>
558
+ <p>the game has been stopped via <span class='object_link'><a href="#stop-instance_method" title="Swarm::Game#stop (method)">#stop</a></span></p>
559
+ </li><li>
560
+ <p>all of the player&#39;s lives are gone</p>
561
+ </li><li>
562
+ <p>all of the invaders are dead</p>
563
+ </li></ul>
564
+
565
+
566
+ </div>
567
+ </div>
568
+ <div class="tags">
569
+
570
+ <p class="tag_title">Returns:</p>
571
+ <ul class="return">
572
+
573
+ <li>
574
+
575
+
576
+ <span class='type'>(<tt>Boolean</tt>)</span>
577
+
578
+
579
+
580
+ </li>
581
+
582
+ </ul>
583
+
584
+ </div><table class="source_code">
585
+ <tr>
586
+ <td>
587
+ <pre class="lines">
588
+
589
+
590
+ 59
591
+ 60
592
+ 61</pre>
593
+ </td>
594
+ <td>
595
+ <pre class="code"><span class="info file"># File 'lib/swarm/game.rb', line 59</span>
596
+
597
+ <span class='kw'>def</span> <span class='id identifier rubyid_over?'>over?</span>
598
+ <span class='id identifier rubyid_stopped?'>stopped?</span> <span class='op'>||</span> <span class='ivar'>@players</span><span class='period'>.</span><span class='id identifier rubyid_zero?'>zero?</span>
599
+ <span class='kw'>end</span></pre>
600
+ </td>
601
+ </tr>
602
+ </table>
603
+ </div>
604
+
605
+ <div class="method_details ">
606
+ <h3 class="signature " id="pause-instance_method">
607
+
608
+ #<strong>pause</strong> &#x21d2; <tt>Object</tt>
609
+
610
+
611
+
612
+
613
+
614
+ </h3><table class="source_code">
615
+ <tr>
616
+ <td>
617
+ <pre class="lines">
618
+
619
+
620
+ 79
621
+ 80
622
+ 81
623
+ 82
624
+ 83
625
+ 84
626
+ 85
627
+ 86
628
+ 87
629
+ 88
630
+ 89</pre>
631
+ </td>
632
+ <td>
633
+ <pre class="code"><span class="info file"># File 'lib/swarm/game.rb', line 79</span>
634
+
635
+ <span class='kw'>def</span> <span class='id identifier rubyid_pause'>pause</span>
636
+ <span class='kw'>if</span> <span class='ivar'>@popup</span>
637
+ <span class='ivar'>@popup</span><span class='period'>.</span><span class='id identifier rubyid_close'>close</span>
638
+ <span class='ivar'>@popup</span> <span class='op'>=</span> <span class='kw'>false</span>
639
+
640
+ <span class='ivar'>@level</span><span class='period'>.</span><span class='id identifier rubyid_update!'>update!</span>
641
+ <span class='kw'>else</span>
642
+ <span class='ivar'>@popup</span> <span class='op'>=</span> <span class='const'><span class='object_link'><a href="Console.html" title="Swarm::Console (module)">Console</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Console/PopUp.html" title="Swarm::Console::PopUp (class)">PopUp</a></span></span><span class='period'>.</span><span class='id identifier rubyid_new'><span class='object_link'><a href="Console/PopUp.html#initialize-instance_method" title="Swarm::Console::PopUp#initialize (method)">new</a></span></span><span class='lparen'>(</span><span class='kw'>yield</span><span class='rparen'>)</span>
643
+ <span class='ivar'>@popup</span><span class='period'>.</span><span class='id identifier rubyid_refresh'>refresh</span>
644
+ <span class='kw'>end</span>
645
+ <span class='kw'>end</span></pre>
646
+ </td>
647
+ </tr>
648
+ </table>
649
+ </div>
650
+
651
+ <div class="method_details ">
652
+ <h3 class="signature " id="play!-instance_method">
653
+
654
+ #<strong>play!</strong> &#x21d2; <tt>Object</tt>
655
+
656
+
657
+
658
+
659
+
660
+ </h3><table class="source_code">
661
+ <tr>
662
+ <td>
663
+ <pre class="lines">
664
+
665
+
666
+ 7
667
+ 8
668
+ 9
669
+ 10
670
+ 11
671
+ 12
672
+ 13
673
+ 14
674
+ 15
675
+ 16
676
+ 17
677
+ 18
678
+ 19
679
+ 20
680
+ 21
681
+ 22
682
+ 23
683
+ 24
684
+ 25
685
+ 26
686
+ 27</pre>
687
+ </td>
688
+ <td>
689
+ <pre class="code"><span class="info file"># File 'lib/swarm/game.rb', line 7</span>
690
+
691
+ <span class='kw'>def</span> <span class='id identifier rubyid_play!'>play!</span>
692
+ <span class='id identifier rubyid_turn'>turn</span> <span class='op'>=</span> <span class='const'>Time</span><span class='period'>.</span><span class='id identifier rubyid_now'>now</span><span class='period'>.</span><span class='id identifier rubyid_to_f'>to_f</span>
693
+
694
+ <span class='ivar'>@player</span> <span class='op'>=</span> <span class='ivar'>@level</span><span class='period'>.</span><span class='id identifier rubyid_find_player'>find_player</span>
695
+ <span class='ivar'>@player</span> <span class='op'>||=</span> <span class='id identifier rubyid_spawn_player'>spawn_player</span>
696
+
697
+ <span class='id identifier rubyid_listen_for_keypress'>listen_for_keypress</span>
698
+
699
+ <span class='kw'>unless</span> <span class='ivar'>@popup</span>
700
+ <span class='kw'>if</span> <span class='lparen'>(</span><span class='id identifier rubyid_turn'>turn</span> <span class='op'>-</span> <span class='ivar'>@turn</span><span class='rparen'>)</span> <span class='op'>&gt;=</span> <span class='ivar'>@rate</span>
701
+
702
+ <span class='ivar'>@level</span><span class='period'>.</span><span class='id identifier rubyid_play'>play</span>
703
+
704
+ <span class='ivar'>@turn</span> <span class='op'>=</span> <span class='id identifier rubyid_turn'>turn</span>
705
+ <span class='kw'>end</span>
706
+
707
+ <span class='ivar'>@level</span><span class='period'>.</span><span class='id identifier rubyid_update'>update</span>
708
+ <span class='kw'>end</span>
709
+
710
+ <span class='id identifier rubyid_sleep'>sleep</span> <span class='const'><span class='object_link'><a href="#REFRESH_RATE-constant" title="Swarm::Game::REFRESH_RATE (constant)">REFRESH_RATE</a></span></span>
711
+ <span class='kw'>end</span></pre>
712
+ </td>
713
+ </tr>
714
+ </table>
715
+ </div>
716
+
717
+ <div class="method_details ">
718
+ <h3 class="signature " id="setup!-instance_method">
719
+
720
+ #<strong>setup!</strong>(level) &#x21d2; <tt>Object</tt>
721
+
722
+
723
+
724
+
725
+
726
+ </h3><table class="source_code">
727
+ <tr>
728
+ <td>
729
+ <pre class="lines">
730
+
731
+
732
+ 91
733
+ 92
734
+ 93
735
+ 94
736
+ 95
737
+ 96
738
+ 97
739
+ 98
740
+ 99
741
+ 100
742
+ 101</pre>
743
+ </td>
744
+ <td>
745
+ <pre class="code"><span class="info file"># File 'lib/swarm/game.rb', line 91</span>
746
+
747
+ <span class='kw'>def</span> <span class='id identifier rubyid_setup!'>setup!</span><span class='lparen'>(</span><span class='id identifier rubyid_level'>level</span><span class='rparen'>)</span>
748
+ <span class='ivar'>@level</span> <span class='op'>=</span> <span class='id identifier rubyid_level'>level</span>
749
+ <span class='ivar'>@level</span><span class='period'>.</span><span class='id identifier rubyid_define_singleton_method'>define_singleton_method</span><span class='lparen'>(</span><span class='symbol'>:pause</span><span class='comma'>,</span> <span class='op'>&amp;</span><span class='id identifier rubyid_method'>method</span><span class='lparen'>(</span><span class='symbol'>:pause</span><span class='rparen'>)</span><span class='rparen'>)</span>
750
+
751
+ <span class='ivar'>@popup</span> <span class='op'>=</span> <span class='kw'>false</span>
752
+
753
+ <span class='ivar'>@status</span> <span class='op'>=</span> <span class='kw'>true</span>
754
+ <span class='ivar'>@turn</span> <span class='op'>=</span> <span class='const'>Time</span><span class='period'>.</span><span class='id identifier rubyid_now'>now</span><span class='period'>.</span><span class='id identifier rubyid_to_f'>to_f</span>
755
+
756
+ <span class='ivar'>@level</span><span class='period'>.</span><span class='id identifier rubyid_setup'>setup</span>
757
+ <span class='kw'>end</span></pre>
758
+ </td>
759
+ </tr>
760
+ </table>
761
+ </div>
762
+
763
+ <div class="method_details ">
764
+ <h3 class="signature " id="show!-instance_method">
765
+
766
+ #<strong>show!</strong> &#x21d2; <tt>Object</tt>
767
+
768
+
769
+
770
+
771
+
772
+ </h3><table class="source_code">
773
+ <tr>
774
+ <td>
775
+ <pre class="lines">
776
+
777
+
778
+ 103
779
+ 104
780
+ 105
781
+ 106
782
+ 107</pre>
783
+ </td>
784
+ <td>
785
+ <pre class="code"><span class="info file"># File 'lib/swarm/game.rb', line 103</span>
786
+
787
+ <span class='kw'>def</span> <span class='id identifier rubyid_show!'>show!</span>
788
+ <span class='ivar'>@level</span><span class='period'>.</span><span class='id identifier rubyid_update'>update</span> <span class='comment'># update the level and refresh the console before displaying anything
789
+ </span>
790
+ <span class='ivar'>@level</span><span class='period'>.</span><span class='id identifier rubyid_show'>show</span><span class='lparen'>(</span><span class='ivar'>@players</span><span class='rparen'>)</span>
791
+ <span class='kw'>end</span></pre>
792
+ </td>
793
+ </tr>
794
+ </table>
795
+ </div>
796
+
797
+ <div class="method_details ">
798
+ <h3 class="signature " id="spawn_player-instance_method">
799
+
800
+ #<strong>spawn_player</strong> &#x21d2; <tt>Object</tt> <span class="extras">(private)</span>
801
+
802
+
803
+
804
+
805
+
806
+ </h3><div class="docstring">
807
+ <div class="discussion">
808
+
809
+ <p>def find_player</p>
810
+
811
+ <pre class="code ruby"><code class="ruby"><span class='ivar'>@player</span> <span class='op'>=</span> <span class='ivar'>@level</span><span class='period'>.</span><span class='id identifier rubyid_find_player'>find_player</span>
812
+ </code></pre>
813
+
814
+ <p>end</p>
815
+
816
+
817
+ </div>
818
+ </div>
819
+ <div class="tags">
820
+
821
+
822
+ </div><table class="source_code">
823
+ <tr>
824
+ <td>
825
+ <pre class="lines">
826
+
827
+
828
+ 137
829
+ 138
830
+ 139
831
+ 140
832
+ 141
833
+ 142
834
+ 143
835
+ 144
836
+ 145
837
+ 146
838
+ 147
839
+ 148
840
+ 149
841
+ 150
842
+ 151</pre>
843
+ </td>
844
+ <td>
845
+ <pre class="code"><span class="info file"># File 'lib/swarm/game.rb', line 137</span>
846
+
847
+ <span class='kw'>def</span> <span class='id identifier rubyid_spawn_player'>spawn_player</span>
848
+ <span class='ivar'>@players</span> <span class='op'>-=</span> <span class='int'>1</span>
849
+
850
+ <span class='id identifier rubyid_pause'>pause</span> <span class='kw'>do</span>
851
+ <span class='heredoc_beg'>&lt;&lt;-POPUP</span><span class='period'>.</span><span class='id identifier rubyid_gsub'>gsub</span><span class='lparen'>(</span><span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>[ ]{10}</span><span class='regexp_end'>/</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_end'>&#39;</span></span><span class='rparen'>)</span> <span class='op'>%</span> <span class='const'><span class='object_link'><a href="Console.html" title="Swarm::Console (module)">Console</a></span></span><span class='period'>.</span><span class='id identifier rubyid_key_info'><span class='object_link'><a href="Console.html#key_info-instance_method" title="Swarm::Console#key_info (method)">key_info</a></span></span>
852
+ <span class='tstring_content'> YOU HAVE BEEN KILLED!
853
+ ----------------------------------------------
854
+ Press %&lt;pause&gt;s to continue.
855
+
856
+ (</span><span class='embvar'>#</span><span class='ivar'>@players</span><span class='tstring_content'> lives remaining)
857
+ </span><span class='heredoc_end'> POPUP
858
+ </span> <span class='kw'>end</span>
859
+
860
+ <span class='ivar'>@player</span> <span class='op'>=</span> <span class='ivar'>@level</span><span class='period'>.</span><span class='id identifier rubyid_spawn_player'>spawn_player</span>
861
+ <span class='kw'>end</span></pre>
862
+ </td>
863
+ </tr>
864
+ </table>
865
+ </div>
866
+
867
+ <div class="method_details ">
868
+ <h3 class="signature " id="start-instance_method">
869
+
870
+ #<strong>start</strong> &#x21d2; <tt>true</tt>
871
+
872
+
873
+
874
+
875
+
876
+ </h3><div class="docstring">
877
+ <div class="discussion">
878
+
879
+ <p>Set the “start game” flag.</p>
880
+
881
+
882
+ </div>
883
+ </div>
884
+ <div class="tags">
885
+
886
+ <p class="tag_title">Returns:</p>
887
+ <ul class="return">
888
+
889
+ <li>
890
+
891
+
892
+ <span class='type'>(<tt>true</tt>)</span>
893
+
894
+
895
+
896
+ </li>
897
+
898
+ </ul>
899
+
900
+ </div><table class="source_code">
901
+ <tr>
902
+ <td>
903
+ <pre class="lines">
904
+
905
+
906
+ 32
907
+ 33
908
+ 34
909
+ 35
910
+ 36</pre>
911
+ </td>
912
+ <td>
913
+ <pre class="code"><span class="info file"># File 'lib/swarm/game.rb', line 32</span>
914
+
915
+ <span class='kw'>def</span> <span class='id identifier rubyid_start'>start</span>
916
+ <span class='ivar'>@status</span> <span class='op'>=</span> <span class='kw'>true</span>
917
+
918
+ <span class='kw'>true</span>
919
+ <span class='kw'>end</span></pre>
920
+ </td>
921
+ </tr>
922
+ </table>
923
+ </div>
924
+
925
+ <div class="method_details ">
926
+ <h3 class="signature " id="statistics-instance_method">
927
+
928
+ #<strong>statistics</strong> &#x21d2; <tt>Hash</tt> <span class="extras">(private)</span>
929
+
930
+
931
+
932
+
933
+
934
+ </h3><div class="docstring">
935
+ <div class="discussion">
936
+
937
+
938
+ </div>
939
+ </div>
940
+ <div class="tags">
941
+
942
+ <p class="tag_title">Returns:</p>
943
+ <ul class="return">
944
+
945
+ <li>
946
+
947
+
948
+ <span class='type'>(<tt>Hash</tt>)</span>
949
+
950
+
951
+
952
+ </li>
953
+
954
+ </ul>
955
+
956
+ </div><table class="source_code">
957
+ <tr>
958
+ <td>
959
+ <pre class="lines">
960
+
961
+
962
+ 112
963
+ 113
964
+ 114
965
+ 115
966
+ 116
967
+ 117
968
+ 118
969
+ 119
970
+ 120
971
+ 121
972
+ 122
973
+ 123
974
+ 124
975
+ 125
976
+ 126</pre>
977
+ </td>
978
+ <td>
979
+ <pre class="code"><span class="info file"># File 'lib/swarm/game.rb', line 112</span>
980
+
981
+ <span class='kw'>def</span> <span class='id identifier rubyid_statistics'>statistics</span>
982
+ <span class='const'>Hash</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='int'>0</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_tap'>tap</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_stats'>stats</span><span class='op'>|</span>
983
+ <span class='id identifier rubyid_stats'>stats</span><span class='lbracket'>[</span><span class='symbol'>:eggs</span><span class='rbracket'>]</span> <span class='op'>+=</span> <span class='const'><span class='object_link'><a href="Catalog.html" title="Swarm::Catalog (class)">Catalog</a></span></span><span class='period'>.</span><span class='id identifier rubyid_fetch'><span class='object_link'><a href="Catalog.html#fetch-class_method" title="Swarm::Catalog.fetch (method)">fetch</a></span></span><span class='lparen'>(</span><span class='symbol'>:destroyed</span><span class='comma'>,</span> <span class='symbol'>:egg</span><span class='comma'>,</span> <span class='int'>0</span><span class='rparen'>)</span>
984
+ <span class='id identifier rubyid_stats'>stats</span><span class='lbracket'>[</span><span class='symbol'>:workers</span><span class='rbracket'>]</span> <span class='op'>+=</span> <span class='const'><span class='object_link'><a href="Catalog.html" title="Swarm::Catalog (class)">Catalog</a></span></span><span class='period'>.</span><span class='id identifier rubyid_fetch'><span class='object_link'><a href="Catalog.html#fetch-class_method" title="Swarm::Catalog.fetch (method)">fetch</a></span></span><span class='lparen'>(</span><span class='symbol'>:destroyed</span><span class='comma'>,</span> <span class='symbol'>:worker</span><span class='comma'>,</span> <span class='int'>0</span><span class='rparen'>)</span>
985
+ <span class='id identifier rubyid_stats'>stats</span><span class='lbracket'>[</span><span class='symbol'>:soldiers</span><span class='rbracket'>]</span> <span class='op'>+=</span> <span class='const'><span class='object_link'><a href="Catalog.html" title="Swarm::Catalog (class)">Catalog</a></span></span><span class='period'>.</span><span class='id identifier rubyid_fetch'><span class='object_link'><a href="Catalog.html#fetch-class_method" title="Swarm::Catalog.fetch (method)">fetch</a></span></span><span class='lparen'>(</span><span class='symbol'>:destroyed</span><span class='comma'>,</span> <span class='symbol'>:soldier</span><span class='comma'>,</span> <span class='int'>0</span><span class='rparen'>)</span>
986
+ <span class='id identifier rubyid_stats'>stats</span><span class='lbracket'>[</span><span class='symbol'>:queens</span><span class='rbracket'>]</span> <span class='op'>+=</span> <span class='const'><span class='object_link'><a href="Catalog.html" title="Swarm::Catalog (class)">Catalog</a></span></span><span class='period'>.</span><span class='id identifier rubyid_fetch'><span class='object_link'><a href="Catalog.html#fetch-class_method" title="Swarm::Catalog.fetch (method)">fetch</a></span></span><span class='lparen'>(</span><span class='symbol'>:destroyed</span><span class='comma'>,</span> <span class='symbol'>:queen</span><span class='comma'>,</span> <span class='int'>0</span><span class='rparen'>)</span>
987
+ <span class='id identifier rubyid_stats'>stats</span><span class='lbracket'>[</span><span class='symbol'>:deaths</span><span class='rbracket'>]</span> <span class='op'>+=</span> <span class='const'><span class='object_link'><a href="Catalog.html" title="Swarm::Catalog (class)">Catalog</a></span></span><span class='period'>.</span><span class='id identifier rubyid_fetch'><span class='object_link'><a href="Catalog.html#fetch-class_method" title="Swarm::Catalog.fetch (method)">fetch</a></span></span><span class='lparen'>(</span><span class='symbol'>:destroyed</span><span class='comma'>,</span> <span class='symbol'>:player</span><span class='comma'>,</span> <span class='int'>0</span><span class='rparen'>)</span>
988
+ <span class='id identifier rubyid_stats'>stats</span><span class='lbracket'>[</span><span class='symbol'>:points</span><span class='rbracket'>]</span> <span class='op'>+=</span>
989
+ <span class='lparen'>(</span><span class='id identifier rubyid_stats'>stats</span><span class='lbracket'>[</span><span class='symbol'>:eggs</span><span class='rbracket'>]</span> <span class='op'>*</span> <span class='int'>20</span><span class='rparen'>)</span> <span class='op'>+</span>
990
+ <span class='lparen'>(</span><span class='id identifier rubyid_stats'>stats</span><span class='lbracket'>[</span><span class='symbol'>:workers</span><span class='rbracket'>]</span> <span class='op'>*</span> <span class='int'>20</span><span class='rparen'>)</span> <span class='op'>+</span>
991
+ <span class='lparen'>(</span><span class='id identifier rubyid_stats'>stats</span><span class='lbracket'>[</span><span class='symbol'>:soldiers</span><span class='rbracket'>]</span> <span class='op'>*</span> <span class='int'>50</span><span class='rparen'>)</span> <span class='op'>+</span>
992
+ <span class='lparen'>(</span><span class='id identifier rubyid_stats'>stats</span><span class='lbracket'>[</span><span class='symbol'>:queens</span><span class='rbracket'>]</span> <span class='op'>*</span> <span class='int'>50</span><span class='rparen'>)</span> <span class='op'>-</span>
993
+ <span class='lparen'>(</span><span class='id identifier rubyid_stats'>stats</span><span class='lbracket'>[</span><span class='symbol'>:deaths</span><span class='rbracket'>]</span> <span class='op'>*</span> <span class='int'>100</span><span class='rparen'>)</span>
994
+ <span class='kw'>end</span>
995
+ <span class='kw'>end</span></pre>
996
+ </td>
997
+ </tr>
998
+ </table>
999
+ </div>
1000
+
1001
+ <div class="method_details ">
1002
+ <h3 class="signature " id="stop-instance_method">
1003
+
1004
+ #<strong>stop</strong> &#x21d2; <tt>true</tt>
1005
+
1006
+
1007
+
1008
+
1009
+
1010
+ </h3><div class="docstring">
1011
+ <div class="discussion">
1012
+
1013
+ <p>Set the “stop game” flag.</p>
1014
+
1015
+
1016
+ </div>
1017
+ </div>
1018
+ <div class="tags">
1019
+
1020
+ <p class="tag_title">Returns:</p>
1021
+ <ul class="return">
1022
+
1023
+ <li>
1024
+
1025
+
1026
+ <span class='type'>(<tt>true</tt>)</span>
1027
+
1028
+
1029
+
1030
+ </li>
1031
+
1032
+ </ul>
1033
+
1034
+ </div><table class="source_code">
1035
+ <tr>
1036
+ <td>
1037
+ <pre class="lines">
1038
+
1039
+
1040
+ 41
1041
+ 42
1042
+ 43
1043
+ 44
1044
+ 45</pre>
1045
+ </td>
1046
+ <td>
1047
+ <pre class="code"><span class="info file"># File 'lib/swarm/game.rb', line 41</span>
1048
+
1049
+ <span class='kw'>def</span> <span class='id identifier rubyid_stop'>stop</span>
1050
+ <span class='ivar'>@status</span> <span class='op'>=</span> <span class='kw'>false</span>
1051
+
1052
+ <span class='kw'>true</span>
1053
+ <span class='kw'>end</span></pre>
1054
+ </td>
1055
+ </tr>
1056
+ </table>
1057
+ </div>
1058
+
1059
+ <div class="method_details ">
1060
+ <h3 class="signature " id="stopped?-instance_method">
1061
+
1062
+ #<strong>stopped?</strong> &#x21d2; <tt>Boolean</tt>
1063
+
1064
+
1065
+
1066
+
1067
+
1068
+ </h3><div class="docstring">
1069
+ <div class="discussion">
1070
+
1071
+
1072
+ </div>
1073
+ </div>
1074
+ <div class="tags">
1075
+
1076
+ <p class="tag_title">Returns:</p>
1077
+ <ul class="return">
1078
+
1079
+ <li>
1080
+
1081
+
1082
+ <span class='type'>(<tt>Boolean</tt>)</span>
1083
+
1084
+
1085
+
1086
+ </li>
1087
+
1088
+ </ul>
1089
+
1090
+ </div><table class="source_code">
1091
+ <tr>
1092
+ <td>
1093
+ <pre class="lines">
1094
+
1095
+
1096
+ 48
1097
+ 49
1098
+ 50</pre>
1099
+ </td>
1100
+ <td>
1101
+ <pre class="code"><span class="info file"># File 'lib/swarm/game.rb', line 48</span>
1102
+
1103
+ <span class='kw'>def</span> <span class='id identifier rubyid_stopped?'>stopped?</span>
1104
+ <span class='op'>!</span><span class='ivar'>@status</span>
1105
+ <span class='kw'>end</span></pre>
1106
+ </td>
1107
+ </tr>
1108
+ </table>
1109
+ </div>
1110
+
1111
+ <div class="method_details ">
1112
+ <h3 class="signature " id="to_s-instance_method">
1113
+
1114
+ #<strong>to_s</strong> &#x21d2; <tt>String</tt>
1115
+
1116
+
1117
+
1118
+
1119
+
1120
+ </h3><div class="docstring">
1121
+ <div class="discussion">
1122
+
1123
+
1124
+ </div>
1125
+ </div>
1126
+ <div class="tags">
1127
+
1128
+ <p class="tag_title">Returns:</p>
1129
+ <ul class="return">
1130
+
1131
+ <li>
1132
+
1133
+
1134
+ <span class='type'>(<tt>String</tt>)</span>
1135
+
1136
+
1137
+
1138
+ </li>
1139
+
1140
+ </ul>
1141
+
1142
+ </div><table class="source_code">
1143
+ <tr>
1144
+ <td>
1145
+ <pre class="lines">
1146
+
1147
+
1148
+ 64
1149
+ 65
1150
+ 66
1151
+ 67
1152
+ 68
1153
+ 69
1154
+ 70
1155
+ 71
1156
+ 72
1157
+ 73
1158
+ 74
1159
+ 75
1160
+ 76
1161
+ 77</pre>
1162
+ </td>
1163
+ <td>
1164
+ <pre class="code"><span class="info file"># File 'lib/swarm/game.rb', line 64</span>
1165
+
1166
+ <span class='kw'>def</span> <span class='id identifier rubyid_to_s'>to_s</span>
1167
+ <span class='heredoc_beg'>&lt;&lt;-TO_S</span><span class='period'>.</span><span class='id identifier rubyid_gsub'>gsub</span><span class='lparen'>(</span><span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>^[ ]{8}</span><span class='regexp_end'>/</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_end'>&#39;</span></span><span class='rparen'>)</span> <span class='op'>%</span> <span class='id identifier rubyid_statistics'>statistics</span>
1168
+ <span class='tstring_content'> GAME OVER!
1169
+
1170
+ + %&lt;eggs&gt;4i x oo (eggs) squished (x20)
1171
+ + %&lt;workers&gt;4i x ├┤ (workers) killed (x20)
1172
+ + %&lt;soldiers&gt;4i x ╟╢ (soldiers) crushed (x50)
1173
+ + %&lt;queens&gt;4i x ╬╬ (queens) defeated (x50)
1174
+
1175
+ - %&lt;deaths&gt;4i x ◄▶ (players) destroyed (x100)
1176
+ -------------------------------
1177
+ %&lt;points&gt;6i points
1178
+ </span><span class='heredoc_end'> TO_S
1179
+ </span><span class='kw'>end</span></pre>
1180
+ </td>
1181
+ </tr>
1182
+ </table>
1183
+ </div>
1184
+
1185
+ </div>
1186
+
1187
+ </div>
1188
+
1189
+ <div id="footer">
1190
+ Generated on Wed Aug 30 07:17:59 2017 by
1191
+ <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
1192
+ 0.9.9 (ruby-2.4.1).
1193
+ </div>
1194
+
1195
+ </div>
1196
+ </body>
1197
+ </html>