road_to_rubykaigi 0.1.0

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 (37) hide show
  1. checksums.yaml +7 -0
  2. data/.rspec +3 -0
  3. data/.standard.yml +18 -0
  4. data/CHANGELOG.md +3 -0
  5. data/CODE_OF_CONDUCT.md +132 -0
  6. data/LICENSE.txt +21 -0
  7. data/README.md +49 -0
  8. data/Rakefile +10 -0
  9. data/bin/road_to_rubykaigi +5 -0
  10. data/lib/road_to_rubykaigi/ansi.rb +22 -0
  11. data/lib/road_to_rubykaigi/fireworks.rb +63 -0
  12. data/lib/road_to_rubykaigi/game.rb +97 -0
  13. data/lib/road_to_rubykaigi/graphics/fireworks.rb +16 -0
  14. data/lib/road_to_rubykaigi/graphics/fireworks.txt +369 -0
  15. data/lib/road_to_rubykaigi/graphics/map.rb +11 -0
  16. data/lib/road_to_rubykaigi/graphics/map.txt +30 -0
  17. data/lib/road_to_rubykaigi/graphics/mask.rb +11 -0
  18. data/lib/road_to_rubykaigi/graphics/mask.txt +30 -0
  19. data/lib/road_to_rubykaigi/graphics/player.rb +81 -0
  20. data/lib/road_to_rubykaigi/manager/collision_manager.rb +133 -0
  21. data/lib/road_to_rubykaigi/manager/drawing_manager.rb +48 -0
  22. data/lib/road_to_rubykaigi/manager/game_manager.rb +55 -0
  23. data/lib/road_to_rubykaigi/manager/update_manager.rb +27 -0
  24. data/lib/road_to_rubykaigi/map.rb +120 -0
  25. data/lib/road_to_rubykaigi/opening_screen.rb +56 -0
  26. data/lib/road_to_rubykaigi/score_board.rb +17 -0
  27. data/lib/road_to_rubykaigi/sprite/attack.rb +72 -0
  28. data/lib/road_to_rubykaigi/sprite/bonus.rb +127 -0
  29. data/lib/road_to_rubykaigi/sprite/deadline.rb +57 -0
  30. data/lib/road_to_rubykaigi/sprite/effect.rb +88 -0
  31. data/lib/road_to_rubykaigi/sprite/enemy.rb +178 -0
  32. data/lib/road_to_rubykaigi/sprite/player.rb +178 -0
  33. data/lib/road_to_rubykaigi/sprite/sprite.rb +22 -0
  34. data/lib/road_to_rubykaigi/version.rb +5 -0
  35. data/lib/road_to_rubykaigi.rb +46 -0
  36. data/sig/road_to_rubykaigi.rbs +4 -0
  37. metadata +82 -0
@@ -0,0 +1,369 @@
1
+ ---------------------------------------------
2
+
3
+
4
+
5
+
6
+
7
+
8
+
9
+
10
+
11
+
12
+
13
+
14
+
15
+
16
+ -------------:-------------------------------
17
+ ---------------------------------------------
18
+
19
+
20
+
21
+
22
+
23
+
24
+
25
+
26
+
27
+
28
+
29
+
30
+
31
+ :
32
+ -------------;-------------------------------
33
+ ---------------------------------------------
34
+
35
+
36
+
37
+
38
+
39
+
40
+
41
+
42
+
43
+
44
+
45
+ :
46
+ :
47
+ ; :
48
+ ---------------------------------------------
49
+ ---------------------------------------------
50
+
51
+
52
+
53
+
54
+
55
+
56
+
57
+
58
+
59
+
60
+ :
61
+ :
62
+ ; :
63
+ :
64
+ ---------------------------------------------
65
+ ---------------------------------------------
66
+
67
+
68
+
69
+
70
+
71
+
72
+
73
+
74
+
75
+
76
+ :
77
+ ; :
78
+
79
+
80
+ ---------------------------------------------
81
+ ---------------------------------------------
82
+
83
+
84
+
85
+
86
+
87
+
88
+
89
+
90
+ :
91
+
92
+ : :
93
+ ; :
94
+
95
+
96
+ ---------------------------------------------
97
+ ---------------------------------------------
98
+
99
+
100
+
101
+
102
+
103
+
104
+
105
+ :
106
+ :
107
+ :
108
+ : :
109
+ :
110
+
111
+
112
+ ---------------------------------------------
113
+ ---------------------------------------------
114
+
115
+
116
+
117
+
118
+
119
+
120
+
121
+ :
122
+ : :
123
+ :
124
+ :
125
+
126
+
127
+
128
+
129
+ ---------------------------------------------
130
+
131
+
132
+ *
133
+
134
+
135
+
136
+
137
+ : :
138
+ : :
139
+
140
+
141
+
142
+
143
+
144
+ ---------------------------------------------
145
+ ---------------------------------------------
146
+
147
+
148
+
149
+
150
+
151
+
152
+
153
+
154
+
155
+
156
+
157
+
158
+
159
+
160
+ ---------------------------------------------
161
+ ---------------------------------------------
162
+
163
+
164
+ ◃ ◊ ▹ *
165
+
166
+
167
+
168
+
169
+
170
+
171
+
172
+
173
+
174
+
175
+
176
+ ---------------------------------------------
177
+ ---------------------------------------------
178
+
179
+
180
+ ◃ ◊ ▹ ◊
181
+
182
+
183
+
184
+
185
+
186
+
187
+
188
+
189
+
190
+
191
+
192
+ ---------------------------------------------
193
+ -------------*-------------------------------
194
+ ◇ ◇ ▵
195
+ ◇ ◇
196
+ * * * ◃ ◊ ▹
197
+ ◇ ◇
198
+ ◇ ◇ ▿
199
+ *
200
+
201
+
202
+
203
+
204
+
205
+
206
+
207
+
208
+ ---------------------------------------------
209
+ -------------*---------------------------------------------------------*
210
+ ◇ ◇ ◇ ◇
211
+ ◇ ◇ ◇ ◇
212
+ * * * * * *
213
+ ◇ ◇ ◇ ◇
214
+ ◇ ◇ ◇ ◇
215
+ * *
216
+
217
+
218
+
219
+
220
+
221
+
222
+
223
+
224
+ ---------------------------------------------
225
+ -------------*---------------------------------------------------------*
226
+ ◇ ◇ ◇ ◇
227
+ ◇ ◇ ◇ ◇
228
+ * * * * * *
229
+ ◇ ◇ ◇ ◇
230
+ ◇ ◇ ◇ ◇
231
+ * *
232
+
233
+
234
+
235
+
236
+
237
+
238
+
239
+
240
+ ---------------------------------------------
241
+ -------------*---------------------------------------------------------*
242
+ ◇ ◇ ◇ ◇
243
+ ◇ ◇ ◇ ◇
244
+ * * * * * *
245
+ ◇ ◇ ◇ ◇
246
+ ◇ ◇ ◇ ◇
247
+ * *
248
+
249
+
250
+
251
+
252
+
253
+
254
+
255
+
256
+ ---------------------------------------------
257
+ -------------*---------------------------------------------------------*
258
+ ◇ ◇ ◇ ◇
259
+ ◇ ◇ ◇ ◇
260
+ * * * * * *
261
+ ◇ ◇ ◇ ◇
262
+ ◇ ◇ ◇ ◇
263
+ * *
264
+
265
+
266
+
267
+
268
+
269
+
270
+
271
+
272
+ ---------------------------------------------
273
+ -------------*---------------------------------------------------------*
274
+ ◇ ◇ ◇ ◇
275
+ ◇ ◇ ◇ ◇
276
+ * * * * * *
277
+ ◇ ◇ ◇ ◇
278
+ ◇ ◇ ◇ ◇
279
+ * *
280
+
281
+
282
+
283
+
284
+
285
+
286
+
287
+
288
+ ---------------------------------------------
289
+ -------------*---------------------------------------------------------*
290
+ ◇ ◇
291
+ ◇ ◇
292
+ * * * * * *
293
+ ◇ ◇
294
+ ◇ ◇
295
+ * *
296
+
297
+
298
+
299
+
300
+
301
+
302
+
303
+
304
+ ---------------------------------------------
305
+ ------------- ---------------------------------------------------------*
306
+
307
+
308
+ * * *
309
+
310
+
311
+ *
312
+
313
+
314
+
315
+
316
+
317
+
318
+
319
+
320
+
321
+ ---------------------------------------------
322
+ ------------- ---------------------------------------------------------
323
+
324
+
325
+
326
+
327
+
328
+
329
+
330
+
331
+
332
+
333
+
334
+
335
+
336
+
337
+ ---------------------------------------------
338
+ ------------- ---------------------------------------------------------
339
+
340
+
341
+
342
+
343
+
344
+
345
+
346
+
347
+
348
+
349
+
350
+
351
+
352
+
353
+ ---------------------------------------------
354
+ ------------- ---------------------------------------------------------
355
+
356
+
357
+
358
+
359
+
360
+
361
+
362
+
363
+
364
+
365
+
366
+
367
+
368
+
369
+ ---------------------------------------------
@@ -0,0 +1,11 @@
1
+ module RoadToRubykaigi
2
+ module Graphics
3
+ module Map
4
+ FILE_PATH = "map.txt"
5
+
6
+ def self.data
7
+ File.read("#{__dir__}/#{FILE_PATH}").split("\n")
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,30 @@
1
+ ┌──────────────────────────────────────────────────────────────────────────────────────────┬──────────────────────────────────────────────────┬────────────────────────────────────────────────┬─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
2
+ │ │ │ │ │
3
+ │ │ │ │ │
4
+ │ ┌──────────────────────────────────────────────┐ .─┴─. .─┴─. .─┴─. ⣰⣾⣾⣿⣿⣿⣿⣆ │
5
+ │ │ │ ( ) ( ) ( ) ⣰⣾⣾⣾⣾⡀⣾⣾⣾⣾⣾⣷⣄ │
6
+ │ │ Walk with ← → key │ '───' '───' '───' ⢀⣰⣾⣾⣾⣾⣾⣾⣾⣾⣾⣾⣾⣾⣾⣾⣾⣷⣄ │
7
+ │ │ Jump with ↑ key │ ⣰⣾⣾⣾⣾⣾⣾⣾⣾⣾⣾⣾⣾⣾⣾⣾⣾⣾⣾⣾⣾⣿⣷⣄ ╔═══════╗ ║ ║ │
8
+ │ │ Stomp bugs for bonus │ ⢀⣰⣾⣾⣾⣾⣾⣾⣾⣾⣾⣾⣾⣾⣾⣾⣾⣾ ⣾⣾⣾⣾⣾⣾⣾⣾⣾⣷⣄ ║ ║ ║ ║ │
9
+ │ │ Bumping into bugs stuns you │ ┌────────────────────────────────┐ ┌────────────────────────────────┐ ┌────────────────────────────────┐ ⣴⣿⣿⣷⣾⣿⣿⣆ ⣰⣾⣾⣾⣾⣾⣾ ⣾⣾⣾⣾⣾⣾⣾⣾⣾ ⣾⣾⣾⣾⣾ ⣾⣾⣾⣾⣾⣾⣾⣾⣾⣾⣶⣄⡀ ║ ║ ║ ║ ║ ║ ║ ╔═══════║ │
10
+ │ │ │ │ │ │ │ │ ▷▷ │ ⢾⣿⡿⢿⣿⣿⣿⠟ ⢀⣰⣾⣾⣾⣾⣾⣾ ⠟ ⡞ ⣾ ⣾⣾ ⣾⣾⣾⣾⣾ ⣾⣾⣾⣾⣾ ⣾⣾⣾⣾⣷⣄ ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ │
11
+ │ │ Escape the deadline to attend RubyKaigi! │ │ ╔═════╗ ═══╦═══ ╔══════╗ │ │ ╔═════╗ ═══╦═══ ║║ ║║ │ │ ▷ ▷▷ │ ⢀⣰⣾⣾⣾⣾⣾⣾⣾⠟ ⡞ ⣾ ⣾⣾⣾ ⣾ ⠈⠻⣾⣷⣦⣄ ╠═════╦═╝ ║ ║ ╠══════╗ ║ ║ ╠═════╦═╝ ╔═══════║ ║ ║ │
12
+ │ │ │ │ ║ ║ ║ ║ ║ │ │ ║ ║ ║ ║║ ║║ │ │ ▷▷▷▷▷▷▷▷▷▷▷▷▷▷▷▷▷▷▷▷ ▷▷ │ ┌──────────┐ ╔═══════╗ ⢀⣰⣾⣾⠟ ⠟ ⣾⡞ ⡌⢿⣷⣄ ║ ╚═╗ ║ ║ ║ ╚╗ ╚═══════╣ ║ ╚═╗ ║ ║ ║ ╚═══════╣ ║ │
13
+ │ └──────────────────────────────────────────────┘ │ ║ ║ ║ ║ │ │ ║ ║ ║ ║║ ║║ │ │ ▷ ▷▷ │ │ □ □ □ □ │ ║ ║ ⣀⣾⣾⣾⠟ ⡞ ⠈⢿⣷⣄ ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ │
14
+ │ │ ╚═════╗ ║ ╠══════╣ │ │ ╠═══╦═╝ ║ ║║ ║║ │ │ ▷▷▷▷▷▷▷▷▷▷▷▷▷▷▷▷▷▷▷▷ ▷▷ │ │ │ ║ ║ ║ ⢀⣰⣾⣾⣾⣾⠟ ⠈⠻⣦⡀ ║ ║ ╚═══════║ ╚═══════╝ ════════╝ ║ ║ ╚═══════║ ║ ════════╝ ║ │
15
+ │ │ ║ ║ ║ ║ │ │ ║ ╚═╗ ║ │ │ ▷ ▷▷ │ └──────────┘ ║ ║ ║ ⢀⣰⣾⣾⣾⣾⠟ ⠈⠻⣷⣦⣄ │
16
+ │ │ ╚═════╝ ║ ║ ║ │ │ ║ ║ ║ ║║ ║║ │ │ ▷▷ │ ╠═════╦═╝ ╔═══════╗ ╔═══════║ ╔══════╣ ⣀⣀⣀⣀⣀⠤⣾⣾⣾⠟ ⠈⠻⣷⣦⣄ │
17
+ │ └────────────────────────────────┘ └────────────────────────────────┘ └────────────────────────────────┘ ║ ╚═╗ ║ ║ ║ ║ ╔╝ ║ ╭─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ ╭────────────────────────────────────╮ │
18
+ │ ║ ║ ║ ║ ║ ║ ║ ║ ┌────────┐ ╭─┼─╮ ╭─┼─╮ │ │ │
19
+ │ ┌──────────┐ ║ ║ ╚═══════╝ ╚═══════║ ╚═══════╝ │ │ ╭─╯ │ ╰──╮ ╭──╯ │ ╰─╮ ├▄─▄─▄─▄─▄─▄─▄─▄─▄─▄─▄─▄─▄─▄─▄─▄─▄─▄─┤ │
20
+ │ │ □ □ □ □ │ │ │ ╭─╯ ╰─╮ ╰─╮ ⣠⣤⣤⣤⣤⣤⣄ ⣠⣤⣤⣤⣤⣤⣄ ╭─╯ ╭─╯ ╰─╮ ╭────────────┼─▀─▀─▀─▀─▀─▀─▀─▀─▀─▀─▀─▀─▀─▀─▀─▀─▀─▀┼────────────╮ │
21
+ │ ████████ ████████ ████████ ████████ │ │ │ │ ╭─╯ ╰─╮ ╰─╮ ⣿⠋⠉⠉⠉⠙⣿ ⣠⣤⣤⣤⣤⣄ ⣠⣤⣤⣤⣤⣄ ⣠⣤⣤⣤⣤⣄ ⣠⣤⣤⣤⣤⣄ ⣠⣤⣤⣤⣤⣄ ⣠⣤⣤⣤⣤⣄ ⣠⣤⣤⣤⣤⣄ ⣠⣤⣤⣤⣤⣄ ⣠⣤⣤⣤⣤⣄ ⣠⣤⣤⣤⣤⣄ ⣠⣤⣤⣤⣤⣄ ⣠⣤⣤⣤⣤⣄ ⣠⣤⣤⣤⣤⣄ ⣠⣤⣤⣤⣤⣄ ⣠⣤⣤⣤⣤⣄ ⣠⣤⣤⣤⣤⣄ ⣠⣤⣤⣤⣤⣄ ⣠⣤⣤⣤⣤⣄ ⣿⠋⠉⠉⠉⠙⣿ ╭─╯ ╭─╯ ╰─╮ │ │ ▗▄▄▄▄▄▄▖ │ │ │
22
+ │ ████████ ████████ ▓░▓ ████████ ████████ ░ └──────────┘ │ │ ╭─╯ ╰──╮ ╰──╮ ⣿⠀⠀⠀⠀⠀⣿ ⣿⣿⣿⣿⣿⣿ ⣿⣿⣿⣿⣿⣿ ⣿⣿⣿⣿⣿⣿ ⣿⣿⣿⣿⣿⣿ ⣿⣿⣿⣿⣿⣿ ⣿⣿⣿⣿⣿⣿ ⣿⣿⣿⣿⣿⣿ ⣿⣿⣿⣿⣿⣿ ⣿⣿⣿⣿⣿⣿ ⣿⣿⣿⣿⣿⣿ ⣿⣿⣿⣿⣿⣿ ⣿⣿⣿⣿⣿⣿ ⣿⣿⣿⣿⣿⣿ ⣿⣿⣿⣿⣿⣿ ⣿⣿⣿⣿⣿⣿ ⣿⣿⣿⣿⣿⣿ ⣿⣿⣿⣿⣿⣿ ⣿⣿⣿⣿⣿⣿ ⣿⠀ ⠀⣿ ╭──╯ ╭──╯ ╰─╮ │ ▯ ▯ ▯ │ ▐██████▌ │ ▯ ▯ ▯ │ │
23
+ │ ▀▀▀▜▛▀▀▀ ▀▀▀▜▛▀▀▀ █ ▓░▓ █ ▀▀▀▜▛▀▀▀ ▀▀▀▜▛▀▀▀ █▘ ░ ┌──────────┐ │ │ ╭─┴╮ ╰────╯ ⣿⣄⣀⣀⣀⣠⣿ ⣿⣿⣿⣿⣿⣿ ⣿⣿⣿⣿⣿⣿ ⣿⣿⣿⣿⣿⣿ ⣿⣿⣿⣿⣿⣿ ⣿⣿⣿⣿⣿⣿ ⣿⣿⣿⣿⣿⣿ ⣿⣿⣿⣿⣿⣿ ⣿⣿⣿⣿⣿⣿ ⣿⣿⣿⣿⣿⣿ ⣿⣿⣿⣿⣿⣿ ⣿⣿⣿⣿⣿⣿ ⣿⣿⣿⣿⣿⣿ ⣿⣿⣿⣿⣿⣿ ⣿⣿⣿⣿⣿⣿ ⣿⣿⣿⣿⣿⣿ ⣿⣿⣿⣿⣿⣿ ⣿⣿⣿⣿⣿⣿ ⣿⣿⣿⣿⣿⣿ ⣿⣄⣀⣀⣀⣠⣿ ╰────╯ ╭┴─╮ │ ▯ ▯ ▯ │ │ │ │ ▯ ▯ ▯ │ │
24
+ │ ══╦═════▝▘══════════╦══ ══╦═════▝▘════════════════════▝▘═════╦══ ══╦═════▝▘══════════╦══ │ □ □ □ □ │ ══╦═════════════════╦══ │ ◯ │ ╭─╯ ╰─╮ ⣿⣿⣿⣿⣿⣿⣿ ⢿⣿⣿⣿⣿⡿ ⢿⣿⣿⣿⣿⡿ ⢿⣿⣿⣿⣿⡿ ⢿⣿⣿⣿⣿⡿ ⢿⣿⣿⣿⣿⡿ ⢿⣿⣿⣿⣿⡿ ⢿⣿⣿⣿⣿⡿ ⢿⣿⣿⣿⣿⡿ ⢿⣿⣿⣿⣿⡿ ⢿⣿⣿⣿⣿⡿ ⢿⣿⣿⣿⣿⡿ ⢿⣿⣿⣿⣿⡿ ⢿⣿⣿⣿⣿⡿ ⢿⣿⣿⣿⣿⡿ ⢿⣿⣿⣿⣿⡿ ⢿⣿⣿⣿⣿⡿ ⢿⣿⣿⣿⣿⡿ ⢿⣿⣿⣿⣿⡿ ⣿⣿⣿⣿⣿⣿⣿ ╭─╯ ╰─╮ │ │ └──────┘ │ │ │
25
+ │ ║ ║ ║ ║ ║ ║ ┌──────────┐ │ │ ║ ║ │ │ ╭─╯ ╰─╮ ⣿⣿⣿⣿⣿⣿⣿ ⣿⣿⣿⣿⣿⣿⣿ ╭─╯ ╰─╮ │ ▯ ▯ ▯ ├─▄─▄─▄┐ ┌▄─▄─▄─▄─▄─▄─▄─▄─▄─▖ ▗─▄─▄─▄┤ ▯ ▯ ▯ │ │
26
+ │ ║ ║ ║ ║ ║ ║ │ □ □ □ □ │ └──────────┘ ║ ║ │ │ │ ╰─╮ ⢿⣿⣿⣿⣿⣿⡿ ⣿⣿⣿⣿⣿⣿⣿ ╭─╯ │ │ ▯ ▯ ▯ ├▀─▀─▀─▘ ▝─▀─▀─▀─▀─▀─▀─▀─▀─▀┘ └▀─▀─▀─┤ ▯ ▯ ▯ │ │
27
+ │ ║ ║ ║ ║ ║ ║ │ │ ║ ║ │ │ │ ╰─╮ ⠀⠀⠀⠀⠀⠀⠀ ⢿⣿⣿⣿⣿⣿⡿ ╭─╯ │ │ ▯ ▯ ▯ │ ▄▄▄▄▄▖ ╔═══╗ ▗▄▄▄▄▄▄▖ ╔═══╗ ▗▄▄▄▄▄ │ ▯ ▯ ▯ │ │
28
+ │ ╨ ╨ ╨ ╨ ╨ ╨ └──────────┘ ╨ ╨ │ │ ╰──────────────┴┬───┬───┬───┬───────────────────────────────────────────────────────┬───┬───┬───┬─────────────────────────────────────────────────────────────────────────────────────────────┬───┬───┬───┬───────────────────────────────────────────────────────┬───┬───┬───┬┴──────────────╯ │ ▯ ▯ ▯ │ █████▌ ║▐█▌║ ▐██████▌ ║▐█▌║ ▐█████ │ ▯ ▯ ▯ │ │
29
+ │ └────────┘ ╰◯◯◯╯ ╰◯◯◯╯ ╰◯◯◯╯ ╰◯◯◯╯ ╰◯◯◯╯ ╰◯◯◯╯ ╰◯◯◯╯ ╰◯◯◯╯ ╰────────────╯ ╰────────────╯ │
30
+ └────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
@@ -0,0 +1,11 @@
1
+ module RoadToRubykaigi
2
+ module Graphics
3
+ module Mask
4
+ FILE_PATH = "mask.txt"
5
+ MASK_CHARAS = "[╭─╮╰│╯┬◯╔═║╠╚╦╝╗╣┤┴┼├╽▐▗▖▌◻▥▞▟█▙◺◸┌┐┘└╨▝▘▄▜▛▀░▓]"
6
+ def self.data
7
+ File.read("#{__dir__}/#{FILE_PATH}").split("\n")
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,30 @@
1
+ ######################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
2
+ # # # # #
3
+ # # # # #
4
+ # ################################################ .---. .---. .---. ⣰⣾⣾⣿⣿⣿⣿⣆ #
5
+ # # # ( ) ( ) ( ) ⣰⣾⣾⣾⣾⡀⣾⣾⣾⣾⣾⣷⣄ #
6
+ # # Walk with ← → key # '---' '---' '---' ⢀⣰⣾⣾⣾⣾⣾⣾⣾⣾⣾⣾⣾⣾⣾⣾⣾⣷⣄ #
7
+ # # Jump with ↑ key # ⣰⣾⣾⣾⣾⣾⣾⣾⣾⣾⣾⣾⣾⣾⣾⣾⣾⣾⣾⣾⣾⣿⣷⣄ ######### # # #
8
+ # # Stomp bugs for bonus # ⢀⣰⣾⣾⣾⣾⣾⣾⣾⣾⣾⣾⣾⣾⣾⣾⣾⣾ ⣾⣾⣾⣾⣾⣾⣾⣾⣾⣷⣄ # # # # #
9
+ # # Bumping into bugs stuns you # ################################## ################################## ################################## ⣴⣿⣿⣷⣾⣿⣿⣆ ⣰⣾⣾⣾⣾⣾⣾ ⣾⣾⣾⣾⣾⣾⣾⣾⣾ ⣾⣾⣾⣾⣾ ⣾⣾⣾⣾⣾⣾⣾⣾⣾⣾⣶⣄⡀ # # # # # # # ######### #
10
+ # # # - - - - - ▷▷ - ⢾⣿⡿⢿⣿⣿⣿⠟ ⢀⣰⣾⣾⣾⣾⣾⣾ ⠟ ⡞ ⣾ ⣾⣾ ⣾⣾⣾⣾⣾ ⣾⣾⣾⣾⣾ ⣾⣾⣾⣾⣷⣄ # # # # # # # # # # # #
11
+ # # Escape the deadline to attend RubyKaigi! # - ------- ------- -------- - - ------- ------- -- -- - - ▷ ▷▷ - ⢀⣰⣾⣾⣾⣾⣾⣾⣾⠟ ⡞ ⣾ ⣾⣾⣾ ⣾ ⠈⠻⣾⣷⣦⣄ ######### # # ######## # # ######### ######### # # #
12
+ # # # - - - - - - - - - - - -- -- - - ▷▷▷▷▷▷▷▷▷▷▷▷▷▷▷▷▷▷▷▷ ▷▷ - ############ ######### ⢀⣰⣾⣾⠟ ⠟ ⣾⡞ ⡌⢿⣷⣄ # ### # # # ## ######### # ### # # # ######### # #
13
+ # ################################################ - - - - - - - - - - -- -- - - ▷ ▷▷ - # □ □ □ □ # # # ⣀⣾⣾⣾⠟ ⡞ ⠈⢿⣷⣄ # # # # # # # # # # # # # # #
14
+ # - ------- - -------- - - ------- - -- -- - - ▷▷▷▷▷▷▷▷▷▷▷▷▷▷▷▷▷▷▷▷ ▷▷ - # # # # # ⢀⣰⣾⣾⣾⣾⠟ ⠈⠻⣦⡀ # # ######### ######### ######### # # ######### # ######### # #
15
+ # - - - - - - - - --- - - - ▷ ▷▷ - ############ # # # ⢀⣰⣾⣾⣾⣾⠟ ⠈⠻⣷⣦⣄ #
16
+ # - ------- - - - - - - - - -- -- - - ▷▷ - ######### ######### ######### ######## ⣀⣀⣀⣀⣀⠤⣾⣾⣾⠟ ⠈⠻⣷⣦⣄ #
17
+ # ################################## ################################## ################################## # ### # # # # ## # ############################################################################################################################################################################################################################################################### ###################################### #
18
+ # # # # # # # # # ########## ##### ##### # # #
19
+ # ############ # # ######### ######### ######### # # --- # #### #### # --- ###################################### #
20
+ # # □ □ □ □ # # # --- ### ### ⣠⣤⣤⣤⣤⣤⣄ ⣠⣤⣤⣤⣤⣤⣄ ### ### --- ################################################################ #
21
+ # ######## ######## ######## ######## # # # # --- ### ### ⣿⠋⠉⠉⠉⠙⣿ ⣠⣤⣤⣤⣤⣄ ⣠⣤⣤⣤⣤⣄ ⣠⣤⣤⣤⣤⣄ ⣠⣤⣤⣤⣤⣄ ⣠⣤⣤⣤⣤⣄ ⣠⣤⣤⣤⣤⣄ ⣠⣤⣤⣤⣤⣄ ⣠⣤⣤⣤⣤⣄ ⣠⣤⣤⣤⣤⣄ ⣠⣤⣤⣤⣤⣄ ⣠⣤⣤⣤⣤⣄ ⣠⣤⣤⣤⣤⣄ ⣠⣤⣤⣤⣤⣄ ⣠⣤⣤⣤⣤⣄ ⣠⣤⣤⣤⣤⣄ ⣠⣤⣤⣤⣤⣄ ⣠⣤⣤⣤⣤⣄ ⣠⣤⣤⣤⣤⣄ ⣿⠋⠉⠉⠉⠙⣿ ### ### --- - - -------- # # #
22
+ # ######## ######## ### ######## ######## # ############ # # --- #### #### ⣿⠀⠀⠀⠀⠀⣿ ⣿⣿⣿⣿⣿⣿ ⣿⣿⣿⣿⣿⣿ ⣿⣿⣿⣿⣿⣿ ⣿⣿⣿⣿⣿⣿ ⣿⣿⣿⣿⣿⣿ ⣿⣿⣿⣿⣿⣿ ⣿⣿⣿⣿⣿⣿ ⣿⣿⣿⣿⣿⣿ ⣿⣿⣿⣿⣿⣿ ⣿⣿⣿⣿⣿⣿ ⣿⣿⣿⣿⣿⣿ ⣿⣿⣿⣿⣿⣿ ⣿⣿⣿⣿⣿⣿ ⣿⣿⣿⣿⣿⣿ ⣿⣿⣿⣿⣿⣿ ⣿⣿⣿⣿⣿⣿ ⣿⣿⣿⣿⣿⣿ ⣿⣿⣿⣿⣿⣿ ⣿⠀ ⠀⣿ #### #### --- - ▯ ▯ ▯ - -------- # ▯ ▯ ▯ # #
23
+ # ######## ######## # ### # ######## ######## ## # ############ # # #### ###### ⣿⣄⣀⣀⣀⣠⣿ ⣿⣿⣿⣿⣿⣿ ⣿⣿⣿⣿⣿⣿ ⣿⣿⣿⣿⣿⣿ ⣿⣿⣿⣿⣿⣿ ⣿⣿⣿⣿⣿⣿ ⣿⣿⣿⣿⣿⣿ ⣿⣿⣿⣿⣿⣿ ⣿⣿⣿⣿⣿⣿ ⣿⣿⣿⣿⣿⣿ ⣿⣿⣿⣿⣿⣿ ⣿⣿⣿⣿⣿⣿ ⣿⣿⣿⣿⣿⣿ ⣿⣿⣿⣿⣿⣿ ⣿⣿⣿⣿⣿⣿ ⣿⣿⣿⣿⣿⣿ ⣿⣿⣿⣿⣿⣿ ⣿⣿⣿⣿⣿⣿ ⣿⣿⣿⣿⣿⣿ ⣿⣄⣀⣀⣀⣠⣿ ###### #### - ▯ ▯ ▯ - - - # ▯ ▯ ▯ # #
24
+ # ####################### ######################################## ####################### # □ □ □ □ # ####################### # # # ### ### ⣿⣿⣿⣿⣿⣿⣿ ⢿⣿⣿⣿⣿⡿ ⢿⣿⣿⣿⣿⡿ ⢿⣿⣿⣿⣿⡿ ⢿⣿⣿⣿⣿⡿ ⢿⣿⣿⣿⣿⡿ ⢿⣿⣿⣿⣿⡿ ⢿⣿⣿⣿⣿⡿ ⢿⣿⣿⣿⣿⡿ ⢿⣿⣿⣿⣿⡿ ⢿⣿⣿⣿⣿⡿ ⢿⣿⣿⣿⣿⡿ ⢿⣿⣿⣿⣿⡿ ⢿⣿⣿⣿⣿⡿ ⢿⣿⣿⣿⣿⡿ ⢿⣿⣿⣿⣿⡿ ⢿⣿⣿⣿⣿⡿ ⢿⣿⣿⣿⣿⡿ ⢿⣿⣿⣿⣿⡿ ⣿⣿⣿⣿⣿⣿⣿ ### ### - - -------- # # #
25
+ # # # # # # # ############ # # # # # # ### ### ⣿⣿⣿⣿⣿⣿⣿ ⣿⣿⣿⣿⣿⣿⣿ ### ### - ▯ ▯ ▯ -------- -------------------- -------- ▯ ▯ ▯ # #
26
+ # # # # # # # # □ □ □ □ # ############ # # # # # ### ⢿⣿⣿⣿⣿⣿⡿ ⣿⣿⣿⣿⣿⣿⣿ ### # - ▯ ▯ ▯ -------- -------------------- -------- ▯ ▯ ▯ # #
27
+ # # # # # # # # # # # # # # ### ⠀⠀⠀⠀⠀⠀⠀ ⢿⣿⣿⣿⣿⣿⡿ ### # - ▯ ▯ ▯ - ------ ----- -------- ----- ------ - ▯ ▯ ▯ # #
28
+ # # # # # # # ############ # # # # ############################################################################################################################################################################################################################################################################################### - ▯ ▯ ▯ - ------ ----- -------- ----- ------ - ▯ ▯ ▯ # #
29
+ # ########## ##### ##### ##### ##### ##### ##### ##### ##### ############## ############## #
30
+ ######################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
@@ -0,0 +1,81 @@
1
+ module RoadToRubykaigi
2
+ module Graphics
3
+ module Player
4
+ RIGHT = RoadToRubykaigi::Sprite::Player::RIGHT
5
+ LEFT = RoadToRubykaigi::Sprite::Player::LEFT
6
+
7
+ CHARACTERS = {
8
+ normal: {
9
+ RIGHT => [
10
+ <<~SPRITE,
11
+ ╭──────╮
12
+ │。・◡・│
13
+ ╰ᜊ───ᜊ─╯
14
+ SPRITE
15
+ <<~SPRITE,
16
+ ╭──────╮
17
+ │。・◡・│
18
+ ╰─∪───∪╯
19
+ SPRITE
20
+ ],
21
+ LEFT => [
22
+ <<~SPRITE,
23
+ ╭──────╮
24
+ │・◡・。│
25
+ ╰─ᜊ───ᜊ╯
26
+ SPRITE
27
+ <<~SPRITE,
28
+ ╭──────╮
29
+ │・◡・。│
30
+ ╰∪───∪─╯
31
+ SPRITE
32
+ ],
33
+ },
34
+ stunned: {
35
+ RIGHT => [
36
+ <<~SPRITE,
37
+ ╭──────╮
38
+ │ ´×⌓× │
39
+ ╰─ᜊ───ᜊ╯
40
+ SPRITE
41
+ <<~SPRITE,
42
+ ╭──────╮
43
+ │ ´×⌓× │
44
+ ╰─∪───∪╯
45
+ SPRITE
46
+ ],
47
+ LEFT => [
48
+ <<~SPRITE,
49
+ ╭──────╮
50
+ │ ×⌓×` │
51
+ ╰─ᜊ───ᜊ╯
52
+ SPRITE
53
+ <<~SPRITE,
54
+ ╭──────╮
55
+ │ ×⌓×` │
56
+ ╰─∪───∪╯
57
+ SPRITE
58
+ ],
59
+ },
60
+ }
61
+
62
+ class << self
63
+ def character(status, direction)
64
+ CHARACTERS[status][direction].map do |lines|
65
+ lines.split("\n").map do |line|
66
+ line.chars.map do |character|
67
+ fullwidth?(character) ? [character, ANSI::NULL] : character
68
+ end.flatten
69
+ end
70
+ end
71
+ end
72
+
73
+ private
74
+
75
+ def fullwidth?(character)
76
+ %w[・].include? character
77
+ end
78
+ end
79
+ end
80
+ end
81
+ end