bato 0.0.9 → 0.0.13

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 +0 -1
  3. data/Gemfile +2 -0
  4. data/Gemfile.lock +42 -0
  5. data/README.md +106 -74
  6. data/Rakefile +2 -0
  7. data/_config.yml +1 -0
  8. data/bato.gemspec +6 -5
  9. data/bin/bato +17 -11
  10. data/lib/bato/bersiyon.rb +3 -1
  11. data/lib/bato/core_ext/array.rb +5 -0
  12. data/lib/bato/core_ext/class.rb +3 -1
  13. data/lib/bato/core_ext/enumerator.rb +2 -0
  14. data/lib/bato/core_ext/integer.rb +2 -0
  15. data/lib/bato/core_ext/kernel.rb +8 -0
  16. data/lib/bato/core_ext/module.rb +4 -0
  17. data/lib/bato/core_ext/range.rb +2 -0
  18. data/lib/bato/core_ext/string.rb +2 -0
  19. data/lib/bato/core_ext.rb +2 -0
  20. data/lib/bato/ruby_parser_patches.rb +140 -180
  21. data/lib/bato/tagatala.rb +3 -1
  22. data/lib/bato.rb +2 -0
  23. data/mga_halimbawa/agapan.bt +5 -0
  24. data/mga_halimbawa/{alyas.bato → alyas.bt} +1 -1
  25. data/mga_halimbawa/batotris.bt +286 -0
  26. data/mga_halimbawa/{bilang.bato → bilang.bt} +1 -1
  27. data/mga_halimbawa/{dapat.bato → dapat.bt} +1 -1
  28. data/mga_halimbawa/{habang.bato → habang.bt} +1 -1
  29. data/mga_halimbawa/ihinto.bt +8 -0
  30. data/mga_halimbawa/{kontrol-sa-pagiikot.bato → kontrol-sa-pagiikot.bt} +7 -7
  31. data/mga_halimbawa/kumusta_mundo.bt +5 -0
  32. data/mga_halimbawa/{magbibigay.bato → magbibigay.bt} +3 -3
  33. data/mga_halimbawa/{maliban_na.bato → maliban_na.bt} +2 -2
  34. data/mga_halimbawa/{modyul.bato → modyul.bt} +3 -3
  35. data/mga_halimbawa/{nakatukoy.bato → nakatukoy.bt} +2 -2
  36. data/mga_halimbawa/{ngunit_kapag.bato → ngunit_kapag.bt} +3 -3
  37. data/mga_halimbawa/o_ang.bt +3 -0
  38. data/mga_halimbawa/{pamamaraan-sa-pagkakamali.bato → pamamaraan-sa-pagkakamali.bt} +1 -1
  39. data/mga_halimbawa/{pangalan.bato → pangalan.bt} +2 -2
  40. data/mga_halimbawa/panguri.bt +16 -0
  41. data/mga_halimbawa/{panuntunan.bato → panuntunan.bt} +1 -1
  42. data/mga_halimbawa/{para_sa.bato → para_sa.bt} +1 -1
  43. data/mga_halimbawa/{pibonasyi.bato → pibonasyi.bt} +6 -6
  44. data/mga_halimbawa/siguraduhin.bt +8 -0
  45. data/mga_halimbawa/{tanggalin.bato → tanggalin.bt} +3 -3
  46. data/mga_halimbawa/{timebomb.bato → timebomb.bt} +5 -5
  47. data/spec/bato/tagatala_spec.rb +6 -5
  48. data/spec/spec_helper.rb +1 -0
  49. metadata +48 -46
  50. data/mga_halimbawa/agapan.bato +0 -5
  51. data/mga_halimbawa/ihinto.bato +0 -8
  52. data/mga_halimbawa/kumusta_mundo.bato +0 -5
  53. data/mga_halimbawa/o_ang.bato +0 -3
  54. data/mga_halimbawa/panguri.bato +0 -13
  55. data/mga_halimbawa/siguraduhin.bato +0 -8
data/lib/bato/tagatala.rb CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'ruby2ruby'
2
4
  require 'ruby_parser'
3
5
  require 'bato/ruby_parser_patches'
@@ -6,7 +8,7 @@ module Bato
6
8
  class Tagatala
7
9
  def initialize; end
8
10
 
9
- PASIMULANG_KODIGO = "# encoding: utf-8\nrequire \"bato/core_ext\"\n".freeze
11
+ PASIMULANG_KODIGO = "# encoding: utf-8\nrequire \"bato/core_ext\"\n"
10
12
 
11
13
  def sa_ruby(kodigo)
12
14
  ruby2ruby = Ruby2Ruby.new
data/lib/bato.rb CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'bato/bersiyon'
2
4
 
3
5
  module Bato; end
@@ -0,0 +1,5 @@
1
+ simulan
2
+ 1 / 0
3
+ agapan
4
+ mag_print "Hindi ito posible!"
5
+ wakas
@@ -1,6 +1,6 @@
1
1
  bilang Hayop
2
2
  ang aso
3
- iprint 'si browny ay mabait!'
3
+ mag_print 'si browny ay mabait!'
4
4
  wakas
5
5
  alyas browny aso
6
6
  wakas
@@ -0,0 +1,286 @@
1
+ require 'io/console'
2
+
3
+ grupo Batotris
4
+ BERSIYON = '0.1'.freeze
5
+ palawigin sarili
6
+
7
+ bilang Piyesa
8
+ MGA_PIYESA = [
9
+ [ [0, 1, 0, 0],
10
+ [1, 1, 1, 0],
11
+ [0, 0, 0, 0],
12
+ [0, 0, 0, 0], ],
13
+
14
+ [ [0, 1, 1, 0],
15
+ [1, 1, 0, 0],
16
+ [0, 0, 0, 0],
17
+ [0, 0, 0, 0], ],
18
+
19
+ [ [1, 1, 0, 0],
20
+ [0, 1, 1, 0],
21
+ [0, 0, 0, 0],
22
+ [0, 0, 0, 0], ],
23
+
24
+ [ [1, 1, 1, 1],
25
+ [0, 0, 0, 0],
26
+ [0, 0, 0, 0],
27
+ [0, 0, 0, 0], ],
28
+
29
+ [ [1, 1, 0, 0],
30
+ [1, 1, 0, 0],
31
+ [0, 0, 0, 0],
32
+ [0, 0, 0, 0], ],
33
+
34
+ [ [1, 0, 0, 0],
35
+ [1, 1, 1, 0],
36
+ [0, 0, 0, 0],
37
+ [0, 0, 0, 0], ],
38
+
39
+ [ [0, 0, 1, 0],
40
+ [1, 1, 1, 0],
41
+ [0, 0, 0, 0],
42
+ [0, 0, 0, 0], ],
43
+ ]
44
+
45
+ ang initialize(x, y, piyesa = bagong_bloke)
46
+ @x = x
47
+ @y = y
48
+ @piyesa = piyesa
49
+ wakas
50
+
51
+ ang magiba_ng_posisyon
52
+ bilang_ng_paglipat = 0
53
+ ang_posisyon = Array.kumatawan(4)
54
+ @piyesa.bilang_bawat_isa na_ganito |bloke, y|
55
+ bloke.bilang_bawat_isa na_ganito |b, x|
56
+ kapag b == 1
57
+ ang_posisyon[bilang_ng_paglipat] = [ @x + x, @y + y ]
58
+ bilang_ng_paglipat += 1
59
+ wakas
60
+ wakas
61
+ wakas
62
+ ang_posisyon
63
+ wakas
64
+
65
+ ang kanan
66
+ Piyesa.kumatawan(@x + 1, @y, @piyesa)
67
+ wakas
68
+
69
+ ang kaliwa
70
+ Piyesa.kumatawan(@x - 1, @y, @piyesa)
71
+ wakas
72
+
73
+ ang mahulog
74
+ Piyesa.kumatawan(@x, @y + 1, @piyesa)
75
+ wakas
76
+
77
+ ang pagikot
78
+ pansamantala = Array.kumatawan(4){ Array.kumatawan(4, 0)}
79
+ @piyesa.bilang_bawat_isa na_ganito |linya, y|
80
+ linya.bilang_bawat_isa na_ganito |l, x|
81
+ pansamantala[x][y] = l
82
+ wakas
83
+ wakas
84
+ pansamantala.bilang_bawat_isa na_ganito |linya, i|
85
+ pansamantala[i] = linya.baliktad
86
+ wakas
87
+ Piyesa.kumatawan(@x, @y, pansamantala)
88
+ wakas
89
+
90
+ ang bagong_bloke
91
+ rnd = rand(MGA_PIYESA.haba)
92
+ MGA_PIYESA[rnd]
93
+ wakas
94
+ wakas
95
+
96
+ grupo Pananda
97
+ WALA = 0
98
+ PADER = 1
99
+ AKTIBO = 2
100
+ NAKALINYA = 3
101
+ wakas
102
+
103
+ bilang Babagsakan
104
+ LAWAK = 11
105
+ TAAS = 20
106
+ DAMI = 40
107
+ PADER_LETRA = "🀫 "
108
+ BLOCK_LETRA = "⚀ "
109
+ WALA_LETRA = " "
110
+ katangian :dako
111
+
112
+ ang initialize
113
+ @sakop = gagalawan
114
+ @dako = 0
115
+ wakas
116
+
117
+ ang burahin
118
+ @sakop.bilang_bawat_isa na_ganito |linya, y|
119
+ linya.bilang_bawat_isa na_ganito |l, x|
120
+ @sakop[y][x] = 0 kapag l == Pananda::AKTIBO
121
+ wakas
122
+ wakas
123
+ wakas
124
+
125
+ ang burahin_ang_linya
126
+ @sakop.bilang_bawat_isa na_ganito |linya, y|
127
+ kapag linya == [Pananda::PADER, Pananda::NAKALINYA, Pananda::NAKALINYA, Pananda::NAKALINYA, Pananda::NAKALINYA, Pananda::NAKALINYA, Pananda::NAKALINYA, Pananda::NAKALINYA, Pananda::NAKALINYA, Pananda::NAKALINYA, Pananda::PADER]
128
+ @dako += 1
129
+ @sakop.delete_at(y)
130
+ @sakop.insert(0, [Pananda::PADER, Pananda::WALA, Pananda::WALA, Pananda::WALA, Pananda::WALA, Pananda::WALA, Pananda::WALA, Pananda::WALA, Pananda::WALA, Pananda::WALA, Pananda::PADER])
131
+ wakas
132
+ wakas
133
+ wakas
134
+
135
+ ang tapos_na?
136
+ @dako >= 40
137
+ wakas
138
+
139
+ ang ay_bloke?(susunod_na_posisyon)
140
+ resulta = mali
141
+ susunod_na_posisyon.isaisahin na_ganito |pos|
142
+ kapag isang_bloke?(pos[0], pos[1])
143
+ resulta = tama
144
+ wakas
145
+ wakas
146
+ resulta
147
+ wakas
148
+
149
+ ang ipirme(kasulukuyang_posisyon)
150
+ kasulukuyang_posisyon.isaisahin na_ganito |pos|
151
+ @sakop[pos[1]][pos[0]] = Pananda::NAKALINYA
152
+ wakas
153
+ wakas
154
+
155
+ ang bago_ipirme(kasulukuyang_posisyon)
156
+ kasulukuyang_posisyon.isaisahin na_ganito |pos|
157
+ @sakop[pos[1]][pos[0]] = Pananda::AKTIBO
158
+ wakas
159
+ wakas
160
+
161
+ ang write
162
+ teksto = "\n\e[25D"
163
+ @sakop.isaisahin na_ganito |linya|
164
+ linya.isaisahin na_ganito |l|
165
+ kapag l == Pananda::WALA
166
+ teksto += WALA_LETRA
167
+ kung_kapag l == Pananda::AKTIBO || l == Pananda::NAKALINYA
168
+ teksto += BLOCK_LETRA
169
+ kung_hindi
170
+ teksto += PADER_LETRA
171
+ wakas
172
+ wakas
173
+ teksto += "\n\e[25D"
174
+ wakas
175
+ mag_print teksto
176
+ wakas
177
+
178
+ private
179
+
180
+ ang isang_bloke?(x, y)
181
+ @sakop[y][x] == Pananda::PADER || @sakop[y][x] == Pananda::NAKALINYA
182
+ wakas
183
+
184
+ ang gagalawan
185
+ f = []
186
+ TAAS.beses na_ganito |i|
187
+ linya = []
188
+ LAWAK.beses na_ganito |j|
189
+ linya[j] = (j == 0 || j == LAWAK - 1 || i == TAAS - 1) ? Pananda::PADER : Pananda::WALA
190
+ wakas
191
+ f[i] = linya
192
+ wakas
193
+ ibalik_ang f
194
+ wakas
195
+ wakas
196
+
197
+ ang burahin_ang_screen
198
+ print "\x1b[2J\x1b[0;0H"
199
+ wakas
200
+
201
+ ang mahulog_to_bloke(piyesa, sakop)
202
+ resulta = piyesa
203
+ loop na_ganito
204
+ susunod_na_posisyon = resulta.mahulog.magiba_ng_posisyon
205
+ kapag sakop.ay_bloke?(susunod_na_posisyon)
206
+ isauli_ang resulta
207
+ kung_hindi
208
+ resulta = resulta.mahulog
209
+ wakas
210
+ wakas
211
+ wakas
212
+
213
+ ang tetris
214
+ burahin_ang_screen
215
+
216
+ sakop = Babagsakan.kumatawan
217
+ sakop.write
218
+
219
+ piyesa = Piyesa.kumatawan(5, 0)
220
+
221
+ pinindot = 'n'
222
+ thread = Thread::start na_ganito
223
+ habang (pinindot = STDIN.getch)
224
+ kapag pinindot == "\C-c"
225
+ ihinto
226
+ wakas
227
+ wakas
228
+ wakas
229
+
230
+ loop na_ganito
231
+ matulog(0.2)
232
+ sarili.burahin_ang_screen
233
+ mag_print "kaliwa: [left key], kanan: [right key], mahulog: [space], ikutin: [up key], q: exit \e[25D"
234
+ mag_print "\e[25D#{sakop.dako}\e[25D"
235
+
236
+ kung_sakaling pinindot
237
+ ay 'q' dapat
238
+ exit
239
+ ay "D" dapat
240
+ pansamantala = piyesa.kaliwa
241
+ ay "C" dapat
242
+ pansamantala = piyesa.kanan
243
+ ay 'B' dapat
244
+ pansamantala = sarili.mahulog_to_bloke(piyesa, sakop)
245
+ ay ' ' dapat
246
+ pansamantala = sarili.mahulog_to_bloke(piyesa, sakop)
247
+ ay "A" dapat
248
+ pansamantala = piyesa.pagikot
249
+ kung_hindi
250
+ pansamantala = piyesa.mahulog
251
+ wakas
252
+
253
+ susunod_na_posisyon = pansamantala.magiba_ng_posisyon
254
+
255
+ kapag !sakop.ay_bloke?(susunod_na_posisyon)
256
+ sakop.bago_ipirme(susunod_na_posisyon)
257
+ piyesa = pansamantala
258
+
259
+ kung_kapag pinindot != 'n'
260
+ piyesa = piyesa
261
+ kung_hindi
262
+ sakop.ipirme(piyesa.magiba_ng_posisyon)
263
+ piyesa = Piyesa.kumatawan(5, 0)
264
+ susunod_na_posisyon = piyesa.magiba_ng_posisyon
265
+ kapag sakop.ay_bloke?(susunod_na_posisyon)
266
+ mag_print "game over"
267
+ ihinto
268
+ wakas
269
+ wakas
270
+
271
+ sakop.write
272
+ sakop.burahin
273
+ sakop.burahin_ang_linya
274
+
275
+ pinindot = 'n'
276
+ kapag sakop.tapos_na?
277
+ mag_print "matagumpay!"
278
+ ihinto
279
+ wakas
280
+ wakas
281
+ Thread.kill(thread)
282
+ wakas
283
+ wakas
284
+
285
+
286
+ Batotris.tetris
@@ -1,7 +1,7 @@
1
1
  grupo Tinapay
2
2
  bilang Donut
3
3
  ang flavor
4
- iprint 'Strawberry!'
4
+ mag_print 'Strawberry!'
5
5
  wakas
6
6
  wakas
7
7
  wakas
@@ -6,4 +6,4 @@ papel = sakaling panulat_mo
6
6
  maliban_sa_mga_ito "intermediate paper"
7
7
  wakas
8
8
 
9
- iprint "Ang papel na gagamitin mo ay #{papel}"
9
+ mag_print "Ang papel na gagamitin mo ay #{papel}"
@@ -1,7 +1,7 @@
1
1
  may_buhay = totoo
2
2
 
3
3
  habang may_buhay
4
- iprint 'may pag-asa!'
4
+ mag_print 'may pag-asa!'
5
5
 
6
6
  hinto
7
7
  wakas
@@ -0,0 +1,8 @@
1
+ nakamit = mali
2
+
3
+ habang nakamit == mali
4
+ mag_print 'hindi pa nakakamit!'
5
+ hinto
6
+ wakas
7
+
8
+ mag_print 'nakamit na!'
@@ -1,17 +1,17 @@
1
1
  # isaisahin loop
2
2
  ['a','b','c','d'].isaisahin na_ganito |titik|
3
- iprint "Ang titik ay #{titik}"
3
+ mag_print "Ang titik ay #{titik}"
4
4
  wakas
5
5
 
6
6
  # isaisahin loop on range
7
7
  (1..10).isaisahin na_ganito |numero|
8
- iprint "Ang numero ay #{numero}"
8
+ mag_print "Ang numero ay #{numero}"
9
9
  wakas
10
10
 
11
11
  # while loop
12
12
  numero = 1
13
13
  habang numero < 10 ganito
14
- iprint "Ang numero ay #{numero} na"
14
+ mag_print "Ang numero ay #{numero} na"
15
15
  numero += 1
16
16
  wakas
17
17
 
@@ -19,7 +19,7 @@ wakas
19
19
  numero = 0
20
20
  panghuling_numero = 5
21
21
  simula
22
- iprint "Ang numero ay #{numero} na"
22
+ mag_print "Ang numero ay #{numero} na"
23
23
  numero += 1
24
24
  wakas habang numero < panghuling_numero
25
25
 
@@ -27,7 +27,7 @@ wakas habang numero < panghuling_numero
27
27
  numero = 0
28
28
  panghuling_numero = 5
29
29
  hanggang numero > panghuling_numero ganito
30
- iprint "Ang numero ay #{numero} na"
30
+ mag_print "Ang numero ay #{numero} na"
31
31
  numero += 1
32
32
  wakas
33
33
 
@@ -35,11 +35,11 @@ wakas
35
35
  numero = 0
36
36
  panghuling_numero = 5
37
37
  simula
38
- iprint "Ang numero ay #{numero} na"
38
+ mag_print "Ang numero ay #{numero} na"
39
39
  numero += 1
40
40
  wakas hanggang numero < panghuling_numero
41
41
 
42
42
  # for loop
43
43
  para_ang numero na_nasa 0..5
44
- iprint "Ang numero ay #{numero} na"
44
+ mag_print "Ang numero ay #{numero} na"
45
45
  wakas
@@ -0,0 +1,5 @@
1
+ kapag 1 > 0
2
+ mag_print "Kumusta mundo!"
3
+ kung_hindi
4
+ mag_print "Mayroong sira"
5
+ wakas
@@ -1,14 +1,14 @@
1
1
  ang gumawaNgID
2
- iprint "------------------------------------------"
2
+ mag_print "------------------------------------------"
3
3
 
4
4
  magbigay_daan
5
5
 
6
- iprint "------------------------------------------"
6
+ mag_print "------------------------------------------"
7
7
  wakas
8
8
 
9
9
  ang ID(impormasyon = {})
10
10
  gumawaNgID na_ganito
11
- iprint <<-KATAPUSAN
11
+ mag_print <<-KATAPUSAN
12
12
  Pangalan: #{impormasyon[:pangalan]}
13
13
  Edad: #{impormasyon[:edad]}
14
14
  Tirahan: #{impormasyon[:tirahan]}
@@ -5,8 +5,8 @@ mga_persona = [
5
5
 
6
6
  mga_persona.isaisahin ng_ganito |tao|
7
7
  malibang tao[:kasarian] == 'lalaki'
8
- iprint "si #{tao[:pangalan]} ay babae!"
8
+ mag_print "si #{tao[:pangalan]} ay babae!"
9
9
  maliban_dito
10
- iprint "si #{tao[:pangalan]} ay lalaki!"
10
+ mag_print "si #{tao[:pangalan]} ay lalaki!"
11
11
  wakas
12
12
  wakas