bato 0.0.9 → 0.0.13
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.
- checksums.yaml +4 -4
- data/.gitignore +0 -1
- data/Gemfile +2 -0
- data/Gemfile.lock +42 -0
- data/README.md +106 -74
- data/Rakefile +2 -0
- data/_config.yml +1 -0
- data/bato.gemspec +6 -5
- data/bin/bato +17 -11
- data/lib/bato/bersiyon.rb +3 -1
- data/lib/bato/core_ext/array.rb +5 -0
- data/lib/bato/core_ext/class.rb +3 -1
- data/lib/bato/core_ext/enumerator.rb +2 -0
- data/lib/bato/core_ext/integer.rb +2 -0
- data/lib/bato/core_ext/kernel.rb +8 -0
- data/lib/bato/core_ext/module.rb +4 -0
- data/lib/bato/core_ext/range.rb +2 -0
- data/lib/bato/core_ext/string.rb +2 -0
- data/lib/bato/core_ext.rb +2 -0
- data/lib/bato/ruby_parser_patches.rb +140 -180
- data/lib/bato/tagatala.rb +3 -1
- data/lib/bato.rb +2 -0
- data/mga_halimbawa/agapan.bt +5 -0
- data/mga_halimbawa/{alyas.bato → alyas.bt} +1 -1
- data/mga_halimbawa/batotris.bt +286 -0
- data/mga_halimbawa/{bilang.bato → bilang.bt} +1 -1
- data/mga_halimbawa/{dapat.bato → dapat.bt} +1 -1
- data/mga_halimbawa/{habang.bato → habang.bt} +1 -1
- data/mga_halimbawa/ihinto.bt +8 -0
- data/mga_halimbawa/{kontrol-sa-pagiikot.bato → kontrol-sa-pagiikot.bt} +7 -7
- data/mga_halimbawa/kumusta_mundo.bt +5 -0
- data/mga_halimbawa/{magbibigay.bato → magbibigay.bt} +3 -3
- data/mga_halimbawa/{maliban_na.bato → maliban_na.bt} +2 -2
- data/mga_halimbawa/{modyul.bato → modyul.bt} +3 -3
- data/mga_halimbawa/{nakatukoy.bato → nakatukoy.bt} +2 -2
- data/mga_halimbawa/{ngunit_kapag.bato → ngunit_kapag.bt} +3 -3
- data/mga_halimbawa/o_ang.bt +3 -0
- data/mga_halimbawa/{pamamaraan-sa-pagkakamali.bato → pamamaraan-sa-pagkakamali.bt} +1 -1
- data/mga_halimbawa/{pangalan.bato → pangalan.bt} +2 -2
- data/mga_halimbawa/panguri.bt +16 -0
- data/mga_halimbawa/{panuntunan.bato → panuntunan.bt} +1 -1
- data/mga_halimbawa/{para_sa.bato → para_sa.bt} +1 -1
- data/mga_halimbawa/{pibonasyi.bato → pibonasyi.bt} +6 -6
- data/mga_halimbawa/siguraduhin.bt +8 -0
- data/mga_halimbawa/{tanggalin.bato → tanggalin.bt} +3 -3
- data/mga_halimbawa/{timebomb.bato → timebomb.bt} +5 -5
- data/spec/bato/tagatala_spec.rb +6 -5
- data/spec/spec_helper.rb +1 -0
- metadata +48 -46
- data/mga_halimbawa/agapan.bato +0 -5
- data/mga_halimbawa/ihinto.bato +0 -8
- data/mga_halimbawa/kumusta_mundo.bato +0 -5
- data/mga_halimbawa/o_ang.bato +0 -3
- data/mga_halimbawa/panguri.bato +0 -13
- 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"
|
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
@@ -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,17 +1,17 @@
|
|
1
1
|
# isaisahin loop
|
2
2
|
['a','b','c','d'].isaisahin na_ganito |titik|
|
3
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
44
|
+
mag_print "Ang numero ay #{numero} na"
|
45
45
|
wakas
|
@@ -1,14 +1,14 @@
|
|
1
1
|
ang gumawaNgID
|
2
|
-
|
2
|
+
mag_print "------------------------------------------"
|
3
3
|
|
4
4
|
magbigay_daan
|
5
5
|
|
6
|
-
|
6
|
+
mag_print "------------------------------------------"
|
7
7
|
wakas
|
8
8
|
|
9
9
|
ang ID(impormasyon = {})
|
10
10
|
gumawaNgID na_ganito
|
11
|
-
|
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
|
-
|
8
|
+
mag_print "si #{tao[:pangalan]} ay babae!"
|
9
9
|
maliban_dito
|
10
|
-
|
10
|
+
mag_print "si #{tao[:pangalan]} ay lalaki!"
|
11
11
|
wakas
|
12
12
|
wakas
|