cetragm 0.1.3__py3-none-any.whl
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.
- cetragm/__init__.py +16 -0
- cetragm/audio.py +1 -0
- cetragm/bag.py +24 -0
- cetragm/config.py +18 -0
- cetragm/controls.py +102 -0
- cetragm/draw.py +154 -0
- cetragm/game.py +101 -0
- cetragm/main.py +322 -0
- cetragm/player.py +78 -0
- cetragm/srs.py +1 -0
- cetragm/tables.py +416 -0
- cetragm/ui.txt +48 -0
- cetragm-0.1.3.dist-info/METADATA +71 -0
- cetragm-0.1.3.dist-info/RECORD +17 -0
- cetragm-0.1.3.dist-info/WHEEL +4 -0
- cetragm-0.1.3.dist-info/entry_points.txt +4 -0
- cetragm-0.1.3.dist-info/licenses/LICENSE +674 -0
cetragm/tables.py
ADDED
|
@@ -0,0 +1,416 @@
|
|
|
1
|
+
# tetromino shapes and metadata (kick tables?)
|
|
2
|
+
|
|
3
|
+
pieces = {
|
|
4
|
+
"i": {
|
|
5
|
+
"name": "i",
|
|
6
|
+
"col": "00FFFF",
|
|
7
|
+
"rgb": (0, 255, 255),
|
|
8
|
+
"piece": [
|
|
9
|
+
"\x1b[38;2;0;255;255m \x1b[0m",
|
|
10
|
+
"\x1b[38;2;0;255;255m████████\x1b[0m",
|
|
11
|
+
],
|
|
12
|
+
"rotations": {
|
|
13
|
+
"0": [
|
|
14
|
+
[0, 0, 0, 0],
|
|
15
|
+
[1, 1, 1, 1],
|
|
16
|
+
[0, 0, 0, 0],
|
|
17
|
+
[0, 0, 0, 0],
|
|
18
|
+
],
|
|
19
|
+
"r": [
|
|
20
|
+
[0, 0, 1, 0],
|
|
21
|
+
[0, 0, 1, 0],
|
|
22
|
+
[0, 0, 1, 0],
|
|
23
|
+
[0, 0, 1, 0],
|
|
24
|
+
],
|
|
25
|
+
"2": [
|
|
26
|
+
[0, 0, 0, 0],
|
|
27
|
+
[0, 0, 0, 0],
|
|
28
|
+
[1, 1, 1, 1],
|
|
29
|
+
[0, 0, 0, 0],
|
|
30
|
+
],
|
|
31
|
+
"l": [
|
|
32
|
+
[0, 1, 0, 0],
|
|
33
|
+
[0, 1, 0, 0],
|
|
34
|
+
[0, 1, 0, 0],
|
|
35
|
+
[0, 1, 0, 0],
|
|
36
|
+
]
|
|
37
|
+
}
|
|
38
|
+
},
|
|
39
|
+
"j": {
|
|
40
|
+
"name": "j",
|
|
41
|
+
"col": "0000FF",
|
|
42
|
+
"rgb": (0, 0, 255),
|
|
43
|
+
"piece": [
|
|
44
|
+
"\x1b[38;2;0;0;255m ██ \x1b[0m",
|
|
45
|
+
"\x1b[38;2;0;0;255m ██████ \x1b[0m",
|
|
46
|
+
],
|
|
47
|
+
"rotations": {
|
|
48
|
+
"0": [
|
|
49
|
+
[1, 0, 0],
|
|
50
|
+
[1, 1, 1],
|
|
51
|
+
[0, 0, 0],
|
|
52
|
+
],
|
|
53
|
+
"r": [
|
|
54
|
+
[0, 1, 1],
|
|
55
|
+
[0, 1, 0],
|
|
56
|
+
[0, 1, 0],
|
|
57
|
+
],
|
|
58
|
+
"2": [
|
|
59
|
+
[0, 0, 0],
|
|
60
|
+
[1, 1, 1],
|
|
61
|
+
[0, 0, 1],
|
|
62
|
+
],
|
|
63
|
+
"l": [
|
|
64
|
+
[0, 1, 0],
|
|
65
|
+
[0, 1, 0],
|
|
66
|
+
[1, 1, 0],
|
|
67
|
+
]
|
|
68
|
+
}
|
|
69
|
+
},
|
|
70
|
+
"l": {
|
|
71
|
+
"name": "l",
|
|
72
|
+
"col": "FFA500",
|
|
73
|
+
"rgb": (255, 165, 0),
|
|
74
|
+
"piece": [
|
|
75
|
+
"\x1b[38;2;255;165;0m ██ \x1b[0m",
|
|
76
|
+
"\x1b[38;2;255;165;0m ██████ \x1b[0m",
|
|
77
|
+
],
|
|
78
|
+
"rotations": {
|
|
79
|
+
"0": [
|
|
80
|
+
[0, 0, 1],
|
|
81
|
+
[1, 1, 1],
|
|
82
|
+
[0, 0, 0],
|
|
83
|
+
],
|
|
84
|
+
"r": [
|
|
85
|
+
[0, 1, 0],
|
|
86
|
+
[0, 1, 0],
|
|
87
|
+
[0, 1, 1],
|
|
88
|
+
],
|
|
89
|
+
"2": [
|
|
90
|
+
[0, 0, 0],
|
|
91
|
+
[1, 1, 1],
|
|
92
|
+
[1, 0, 0],
|
|
93
|
+
],
|
|
94
|
+
"l": [
|
|
95
|
+
[1, 1, 0],
|
|
96
|
+
[0, 1, 0],
|
|
97
|
+
[0, 1, 0],
|
|
98
|
+
]
|
|
99
|
+
}
|
|
100
|
+
},
|
|
101
|
+
"s": {
|
|
102
|
+
"name": "s",
|
|
103
|
+
"col": "00FF00",
|
|
104
|
+
"rgb": (0, 255, 0),
|
|
105
|
+
"piece": [
|
|
106
|
+
"\x1b[38;2;0;255;0m ████ \x1b[0m",
|
|
107
|
+
"\x1b[38;2;0;255;0m ████ \x1b[0m",
|
|
108
|
+
],
|
|
109
|
+
"rotations": {
|
|
110
|
+
"0": [
|
|
111
|
+
[0, 1, 1],
|
|
112
|
+
[1, 1, 0],
|
|
113
|
+
[0, 0, 0],
|
|
114
|
+
],
|
|
115
|
+
"r": [
|
|
116
|
+
[0, 1, 0],
|
|
117
|
+
[0, 1, 1],
|
|
118
|
+
[0, 0, 1],
|
|
119
|
+
],
|
|
120
|
+
"2": [
|
|
121
|
+
[0, 0, 0],
|
|
122
|
+
[0, 1, 1],
|
|
123
|
+
[1, 1, 0],
|
|
124
|
+
],
|
|
125
|
+
"l": [
|
|
126
|
+
[1, 0, 0],
|
|
127
|
+
[1, 1, 0],
|
|
128
|
+
[0, 1, 0],
|
|
129
|
+
]
|
|
130
|
+
}
|
|
131
|
+
},
|
|
132
|
+
"z": {
|
|
133
|
+
"name": "z", # ██
|
|
134
|
+
"col": "FF0000", # ██
|
|
135
|
+
"rgb": (255, 0, 0),
|
|
136
|
+
"piece": [
|
|
137
|
+
"\x1b[38;2;255;0;0m ████ \x1b[0m",
|
|
138
|
+
"\x1b[38;2;255;0;0m ████ \x1b[0m",
|
|
139
|
+
],
|
|
140
|
+
"rotations": {
|
|
141
|
+
"0": [
|
|
142
|
+
[1, 1, 0],
|
|
143
|
+
[0, 1, 1],
|
|
144
|
+
[0, 0, 0],
|
|
145
|
+
],
|
|
146
|
+
"r": [
|
|
147
|
+
[0, 0, 1],
|
|
148
|
+
[0, 1, 1],
|
|
149
|
+
[0, 1, 0],
|
|
150
|
+
],
|
|
151
|
+
"2": [
|
|
152
|
+
[0, 0, 0],
|
|
153
|
+
[1, 1, 0],
|
|
154
|
+
[0, 1, 1],
|
|
155
|
+
],
|
|
156
|
+
"l": [
|
|
157
|
+
[0, 1, 0],
|
|
158
|
+
[1, 1, 0],
|
|
159
|
+
[1, 0, 0],
|
|
160
|
+
]
|
|
161
|
+
}
|
|
162
|
+
},
|
|
163
|
+
"t": {
|
|
164
|
+
"name": "t", # █
|
|
165
|
+
"col": "800080", # ███
|
|
166
|
+
"rgb": (128, 0, 128),
|
|
167
|
+
"piece": [
|
|
168
|
+
"\x1b[38;2;128;0;128m ██ \x1b[0m",
|
|
169
|
+
"\x1b[38;2;128;0;128m ██████ \x1b[0m",
|
|
170
|
+
],
|
|
171
|
+
"rotations": {
|
|
172
|
+
"0": [
|
|
173
|
+
[0, 1, 0],
|
|
174
|
+
[1, 1, 1],
|
|
175
|
+
[0, 0, 0],
|
|
176
|
+
],
|
|
177
|
+
"r": [
|
|
178
|
+
[0, 1, 0],
|
|
179
|
+
[0, 1, 1],
|
|
180
|
+
[0, 1, 0],
|
|
181
|
+
],
|
|
182
|
+
"2": [
|
|
183
|
+
[0, 0, 0],
|
|
184
|
+
[1, 1, 1],
|
|
185
|
+
[0, 1, 0],
|
|
186
|
+
],
|
|
187
|
+
"l": [
|
|
188
|
+
[0, 1, 0],
|
|
189
|
+
[1, 1, 0],
|
|
190
|
+
[0, 1, 0],
|
|
191
|
+
]
|
|
192
|
+
}
|
|
193
|
+
},
|
|
194
|
+
"o": {
|
|
195
|
+
"name": "o", # ██
|
|
196
|
+
"col": "FFFF00", # ██
|
|
197
|
+
"rgb": (255, 255, 0),
|
|
198
|
+
"piece": [
|
|
199
|
+
"\x1b[38;2;255;255;0m ████ \x1b[0m",
|
|
200
|
+
"\x1b[38;2;255;255;0m ████ \x1b[0m",
|
|
201
|
+
],
|
|
202
|
+
"rotations": { # O spins when
|
|
203
|
+
"0": [
|
|
204
|
+
[0, 1, 1, 0],
|
|
205
|
+
[0, 1, 1, 0],
|
|
206
|
+
],
|
|
207
|
+
"r": [
|
|
208
|
+
[0, 1, 1, 0],
|
|
209
|
+
[0, 1, 1, 0],
|
|
210
|
+
],
|
|
211
|
+
"2": [
|
|
212
|
+
[0, 1, 1, 0],
|
|
213
|
+
[0, 1, 1, 0],
|
|
214
|
+
],
|
|
215
|
+
"l": [
|
|
216
|
+
[0, 1, 1, 0],
|
|
217
|
+
[0, 1, 1, 0],
|
|
218
|
+
]
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
grades = {
|
|
224
|
+
"9": [
|
|
225
|
+
"\x1b[38;2;112;0;0m ╔══════╗\x1b[39m",
|
|
226
|
+
"\x1b[38;2;112;0;0m ║ ┏━━┓ ║\x1b[39m",
|
|
227
|
+
"\x1b[38;2;112;0;0m ║ ┗━━┫ ║\x1b[39m",
|
|
228
|
+
"\x1b[38;2;112;0;0m ║ ╺━━┛ ║\x1b[39m",
|
|
229
|
+
"\x1b[38;2;112;0;0m ╚══════╝\x1b[39m"
|
|
230
|
+
],
|
|
231
|
+
"8": [
|
|
232
|
+
"\x1b[38;2;131;57;0m ╔══════╗\x1b[39m",
|
|
233
|
+
"\x1b[38;2;131;57;0m ║ ┏━━┓ ║\x1b[39m",
|
|
234
|
+
"\x1b[38;2;131;57;0m ║ ┣━━┫ ║\x1b[39m",
|
|
235
|
+
"\x1b[38;2;131;57;0m ║ ┗━━┛ ║\x1b[39m",
|
|
236
|
+
"\x1b[38;2;131;57;0m ╚══════╝\x1b[39m"
|
|
237
|
+
],
|
|
238
|
+
"7": [
|
|
239
|
+
"\x1b[38;2;96;80;0m ╔══════╗\x1b[39m",
|
|
240
|
+
"\x1b[38;2;96;80;0m ║ ┏━━┓ ║\x1b[39m",
|
|
241
|
+
"\x1b[38;2;96;80;0m ║ ━┫ ║\x1b[39m",
|
|
242
|
+
"\x1b[38;2;96;80;0m ║ ╹ ║\x1b[39m",
|
|
243
|
+
"\x1b[38;2;96;80;0m ╚══════╝\x1b[39m"
|
|
244
|
+
],
|
|
245
|
+
"6": [
|
|
246
|
+
"\x1b[38;2;75;90;0m ╔══════╗\x1b[39m",
|
|
247
|
+
"\x1b[38;2;75;90;0m ║ ┏━━┓ ║\x1b[39m",
|
|
248
|
+
"\x1b[38;2;75;90;0m ║ ┣━━┓ ║\x1b[39m",
|
|
249
|
+
"\x1b[38;2;75;90;0m ║ ┗━━┛ ║\x1b[39m",
|
|
250
|
+
"\x1b[38;2;75;90;0m ╚══════╝\x1b[39m"
|
|
251
|
+
],
|
|
252
|
+
"5": [
|
|
253
|
+
"\x1b[38;2;26;90;0m ╔══════╗\x1b[39m",
|
|
254
|
+
"\x1b[38;2;26;90;0m ║ ┏━━╸ ║\x1b[39m",
|
|
255
|
+
"\x1b[38;2;26;90;0m ║ ┗━━┓ ║\x1b[39m",
|
|
256
|
+
"\x1b[38;2;26;90;0m ║ ┗━━┛ ║\x1b[39m",
|
|
257
|
+
"\x1b[38;2;26;90;0m ╚══════╝\x1b[39m"
|
|
258
|
+
],
|
|
259
|
+
"4": [
|
|
260
|
+
"\x1b[38;2;16;72;96m ╔══════╗\x1b[39m",
|
|
261
|
+
"\x1b[38;2;16;72;96m ║ ╻ ╻ ║\x1b[39m",
|
|
262
|
+
"\x1b[38;2;16;72;96m ║ ┗━━┫ ║\x1b[39m",
|
|
263
|
+
"\x1b[38;2;16;72;96m ║ ╹ ║\x1b[39m",
|
|
264
|
+
"\x1b[38;2;16;72;96m ╚══════╝\x1b[39m"
|
|
265
|
+
],
|
|
266
|
+
"3": [
|
|
267
|
+
"\x1b[38;2;6;21;114m ╔══════╗\x1b[39m",
|
|
268
|
+
"\x1b[38;2;6;21;114m ║ ╺━━┓ ║\x1b[39m",
|
|
269
|
+
"\x1b[38;2;6;21;114m ║ ╺━━┫ ║\x1b[39m",
|
|
270
|
+
"\x1b[38;2;6;21;114m ║ ╺━━┛ ║\x1b[39m",
|
|
271
|
+
"\x1b[38;2;6;21;114m ╚══════╝\x1b[39m"
|
|
272
|
+
],
|
|
273
|
+
"2": [
|
|
274
|
+
"\x1b[38;2;74;16;100m ╔══════╗\x1b[39m",
|
|
275
|
+
"\x1b[38;2;74;16;100m ║ ┏━━┓ ║\x1b[39m",
|
|
276
|
+
"\x1b[38;2;74;16;100m ║ ┏━━┛ ║\x1b[39m",
|
|
277
|
+
"\x1b[38;2;74;16;100m ║ ┗━━╸ ║\x1b[39m",
|
|
278
|
+
"\x1b[38;2;74;16;100m ╚══════╝\x1b[39m"
|
|
279
|
+
],
|
|
280
|
+
"1": [
|
|
281
|
+
"\x1b[38;2;98;11;75m ╔══════╗\x1b[39m",
|
|
282
|
+
"\x1b[38;2;98;11;75m ║ ━┃ ║\x1b[39m",
|
|
283
|
+
"\x1b[38;2;98;11;75m ║ ┃ ║\x1b[39m",
|
|
284
|
+
"\x1b[38;2;98;11;75m ║ ━━┛ ║\x1b[39m",
|
|
285
|
+
"\x1b[38;2;98;11;75m ╚══════╝\x1b[39m"
|
|
286
|
+
],
|
|
287
|
+
"S1": [
|
|
288
|
+
"\x1b[38;2;162;50;50m ╔══════╗\x1b[39m",
|
|
289
|
+
"\x1b[38;2;162;50;50m ║┏━┓╺┓ ║\x1b[39m",
|
|
290
|
+
"\x1b[38;2;162;50;50m ║┗━┓ ┃ ║\x1b[39m",
|
|
291
|
+
"\x1b[38;2;162;50;50m ║┗━┛╺┻╸║\x1b[39m",
|
|
292
|
+
"\x1b[38;2;162;50;50m ╚══════╝\x1b[39m"
|
|
293
|
+
],
|
|
294
|
+
"S2": [
|
|
295
|
+
"\x1b[38;2;181;107;50m ╔══════╗\x1b[39m",
|
|
296
|
+
"\x1b[38;2;181;107;50m ║┏━┓┏━┓║\x1b[39m",
|
|
297
|
+
"\x1b[38;2;181;107;50m ║┗━┓┏━┛║\x1b[39m",
|
|
298
|
+
"\x1b[38;2;181;107;50m ║┗━┛┗━╸║\x1b[39m",
|
|
299
|
+
"\x1b[38;2;181;107;50m ╚══════╝\x1b[39m"
|
|
300
|
+
],
|
|
301
|
+
"S3": [
|
|
302
|
+
"\x1b[38;2;146;130;50m ╔══════╗\x1b[39m",
|
|
303
|
+
"\x1b[38;2;146;130;50m ║┏━┓┏━┓║\x1b[39m",
|
|
304
|
+
"\x1b[38;2;146;130;50m ║┗━┓╺━┫║\x1b[39m",
|
|
305
|
+
"\x1b[38;2;146;130;50m ║┗━┛┗━┛║\x1b[39m",
|
|
306
|
+
"\x1b[38;2;146;130;50m ╚══════╝\x1b[39m"
|
|
307
|
+
],
|
|
308
|
+
"S4": [
|
|
309
|
+
"\x1b[38;2;125;140;50m ╔══════╗\x1b[39m",
|
|
310
|
+
"\x1b[38;2;125;140;50m ║┏━┓╻ ╻║\x1b[39m",
|
|
311
|
+
"\x1b[38;2;125;140;50m ║┗━┓┗━┫║\x1b[39m",
|
|
312
|
+
"\x1b[38;2;125;140;50m ║┗━┛ ╹║\x1b[39m",
|
|
313
|
+
"\x1b[38;2;125;140;50m ╚══════╝\x1b[39m"
|
|
314
|
+
],
|
|
315
|
+
"S5": [
|
|
316
|
+
"\x1b[38;2;76;140;50m ╔══════╗\x1b[39m",
|
|
317
|
+
"\x1b[38;2;76;140;50m ║┏━┓┏━╸║\x1b[39m",
|
|
318
|
+
"\x1b[38;2;76;140;50m ║┗━┓┗━┓║\x1b[39m",
|
|
319
|
+
"\x1b[38;2;76;140;50m ║┗━┛┗━┛║\x1b[39m",
|
|
320
|
+
"\x1b[38;2;76;140;50m ╚══════╝\x1b[39m"
|
|
321
|
+
],
|
|
322
|
+
"S6": [
|
|
323
|
+
"\x1b[38;2;66;122;146m ╔══════╗\x1b[39m",
|
|
324
|
+
"\x1b[38;2;66;122;146m ║┏━┓┏━┓║\x1b[39m",
|
|
325
|
+
"\x1b[38;2;66;122;146m ║┗━┓┣━┓║\x1b[39m",
|
|
326
|
+
"\x1b[38;2;66;122;146m ║┗━┛┗━┛║\x1b[39m",
|
|
327
|
+
"\x1b[38;2;66;122;146m ╚══════╝\x1b[39m"
|
|
328
|
+
],
|
|
329
|
+
"S7": [
|
|
330
|
+
"\x1b[38;2;56;71;164m ╔══════╗\x1b[39m",
|
|
331
|
+
"\x1b[38;2;56;71;164m ║┏━┓┏━┓║\x1b[39m",
|
|
332
|
+
"\x1b[38;2;56;71;164m ║┗━┓ ━┫║\x1b[39m",
|
|
333
|
+
"\x1b[38;2;56;71;164m ║┗━┛ ╹║\x1b[39m",
|
|
334
|
+
"\x1b[38;2;56;71;164m ╚══════╝\x1b[39m"
|
|
335
|
+
],
|
|
336
|
+
"S8": [
|
|
337
|
+
"\x1b[38;2;124;66;150m ╔══════╗\x1b[39m",
|
|
338
|
+
"\x1b[38;2;124;66;150m ║┏━┓┏━┓║\x1b[39m",
|
|
339
|
+
"\x1b[38;2;124;66;150m ║┗━┓┣━┫║\x1b[39m",
|
|
340
|
+
"\x1b[38;2;124;66;150m ║┗━┛┗━┛║\x1b[39m",
|
|
341
|
+
"\x1b[38;2;124;66;150m ╚══════╝\x1b[39m"
|
|
342
|
+
],
|
|
343
|
+
"S9": [
|
|
344
|
+
"\x1b[38;2;148;61;125m ╔══════╗\x1b[39m",
|
|
345
|
+
"\x1b[38;2;148;61;125m ║┏━┓┏━┓║\x1b[39m",
|
|
346
|
+
"\x1b[38;2;148;61;125m ║┗━┓┗━┫║\x1b[39m",
|
|
347
|
+
"\x1b[38;2;148;61;125m ║┗━┛┗━┛║\x1b[39m",
|
|
348
|
+
"\x1b[38;2;148;61;125m ╚══════╝\x1b[39m"
|
|
349
|
+
],
|
|
350
|
+
|
|
351
|
+
"Gm": [
|
|
352
|
+
"\x1b[38;2;245;191;3m ╔══════╗\x1b[39m",
|
|
353
|
+
"\x1b[38;2;245;191;3m ║┏━┛┏┏ ║\x1b[39m",
|
|
354
|
+
"\x1b[38;2;245;191;3m ║┃ ┃┃┃┃║\x1b[39m",
|
|
355
|
+
"\x1b[38;2;245;191;3m ║━━┛┛┛┛║\x1b[39m",
|
|
356
|
+
"\x1b[38;2;245;191;3m ╚══════╝\x1b[39m",
|
|
357
|
+
],
|
|
358
|
+
}
|
|
359
|
+
|
|
360
|
+
thresholds = {
|
|
361
|
+
"9": 0,
|
|
362
|
+
"8": 400,
|
|
363
|
+
"7": 800,
|
|
364
|
+
"6": 1400,
|
|
365
|
+
"5": 2000,
|
|
366
|
+
"4": 3500,
|
|
367
|
+
"3": 5500,
|
|
368
|
+
"2": 8000,
|
|
369
|
+
"1": 12000,
|
|
370
|
+
"S1": 16000,
|
|
371
|
+
"S2": 22000,
|
|
372
|
+
"S3": 30000,
|
|
373
|
+
"S4": 40000,
|
|
374
|
+
"S5": 52000,
|
|
375
|
+
"S6": 66000,
|
|
376
|
+
"S7": 82000,
|
|
377
|
+
"S8": 100000,
|
|
378
|
+
"S9": 120000,
|
|
379
|
+
}
|
|
380
|
+
|
|
381
|
+
gravity = {
|
|
382
|
+
0: 4,
|
|
383
|
+
30: 6,
|
|
384
|
+
35: 8,
|
|
385
|
+
40: 10,
|
|
386
|
+
50: 12,
|
|
387
|
+
60: 16,
|
|
388
|
+
70: 32,
|
|
389
|
+
80: 48,
|
|
390
|
+
90: 64,
|
|
391
|
+
100: 80,
|
|
392
|
+
120: 96,
|
|
393
|
+
140: 112,
|
|
394
|
+
160: 128,
|
|
395
|
+
170: 144,
|
|
396
|
+
200: 4,
|
|
397
|
+
220: 32,
|
|
398
|
+
230: 64,
|
|
399
|
+
233: 96,
|
|
400
|
+
236: 128,
|
|
401
|
+
239: 160,
|
|
402
|
+
243: 192,
|
|
403
|
+
247: 224,
|
|
404
|
+
251: 256,
|
|
405
|
+
300: 512,
|
|
406
|
+
330: 768,
|
|
407
|
+
360: 1024,
|
|
408
|
+
400: 1280,
|
|
409
|
+
420: 1024,
|
|
410
|
+
450: 768,
|
|
411
|
+
500: 5120
|
|
412
|
+
}
|
|
413
|
+
|
|
414
|
+
ROT_CW = {"0": "r", "r": "2", "2": "l", "l": "0"}
|
|
415
|
+
ROT_CCW = {"0": "l", "l": "2", "2": "r", "r": "0"}
|
|
416
|
+
ROT_180 = {"0": "2", "r": "l", "2": "0", "l": "r"}
|
cetragm/ui.txt
ADDED
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
╭────────────────────┬────────╮
|
|
2
|
+
│--░░--░░--░░--░░--░░│ │
|
|
3
|
+
│░░--░░--░░--░░--░░--│████████│
|
|
4
|
+
│ ██ ██ ██ ██ ██├────────┤
|
|
5
|
+
│██ ██ ██ ██ ██ │ HOLD ▲ │
|
|
6
|
+
│ ██ ██ ██ ██ ██│ NEXT ▼ │
|
|
7
|
+
│██ ██ ██ ██ ██ ├────────┤
|
|
8
|
+
│ ██ ██ ██ ██ ██│ ████ │
|
|
9
|
+
│██ ██ ██ ██ ██ │ ████ │
|
|
10
|
+
│ ██ ██ ██ ██ ██│ -- │
|
|
11
|
+
│██ ██ ██ ██ ██ │ ████ │
|
|
12
|
+
│ ██ ██ ██ ██ ██│ ████ │
|
|
13
|
+
│██ ██ ██ ██ ██ │ -- │
|
|
14
|
+
│ ██ ██ ██ ██ ██│ ██ │
|
|
15
|
+
│██ ██ ██ ██ ██ │ ██████ │
|
|
16
|
+
│ ██ ██ ██ ██ ██│ -- │
|
|
17
|
+
│██ ██ ██ ██ ██ │ ██ │
|
|
18
|
+
│ ██ ██ ██ ██ ██│ ██████ │
|
|
19
|
+
│██ ██ ██ ██ ██ │ -- │
|
|
20
|
+
│ ██ ██ ██ ██ ██│ ██ │
|
|
21
|
+
│██ ██ ██ ██ ██ │ ██████ │
|
|
22
|
+
│ ██ ██ ██ ██ ██├────────┤
|
|
23
|
+
│██ ██ ██ ██ ██ │ LINES: │
|
|
24
|
+
├────────────────────┤999/1000│
|
|
25
|
+
│ 99:59:99 | 9999999 │ GR: GM │
|
|
26
|
+
╰────────────────────┴────────╯
|
|
27
|
+
|
|
28
|
+
9 - 112 0 0
|
|
29
|
+
8 - 131 57 0
|
|
30
|
+
7 - 96 80 0
|
|
31
|
+
6 - 75 90 0
|
|
32
|
+
5 - 26 90 0
|
|
33
|
+
4 - 16 72 96
|
|
34
|
+
3 - 6 21 114
|
|
35
|
+
2 - 74 16 100
|
|
36
|
+
1 - 98 11 75
|
|
37
|
+
|
|
38
|
+
Gm - 245 191 3
|
|
39
|
+
|
|
40
|
+
to add:
|
|
41
|
+
IRS + IHS
|
|
42
|
+
SRS and kick tables
|
|
43
|
+
t spin detection
|
|
44
|
+
rebindable movement controls
|
|
45
|
+
bgm
|
|
46
|
+
sfx
|
|
47
|
+
menu and game over / restart logic
|
|
48
|
+
skill of some kind
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: cetragm
|
|
3
|
+
Version: 0.1.3
|
|
4
|
+
Summary: Cetra Grand Master | An oddly familiar block stacker in the command line!
|
|
5
|
+
License-Expression: GPL-3.0-only
|
|
6
|
+
License-File: LICENSE
|
|
7
|
+
Requires-Dist: pygame>=2.6.1
|
|
8
|
+
Requires-Python: >=3.12
|
|
9
|
+
Description-Content-Type: text/markdown
|
|
10
|
+
|
|
11
|
+
# cgm
|
|
12
|
+
### Cetra Grand Master!
|
|
13
|
+
|
|
14
|
+
A block stacker game that you might find very familiar. Built with similar design to Tetris Grand Master in mind, but runs entirely in your terminal with much more modern mechanics.
|
|
15
|
+
|
|
16
|
+
## how
|
|
17
|
+
`pip install cetragm`, or `pipx install cetragm` if you're on an externally managed system like Arch Linux. You may need the `pygame` module if you don't have it or if pip doesn't install it for you. Run `cgm`.
|
|
18
|
+
|
|
19
|
+
If you'd like to customise your controls, you may change them in `/src/cgm/config.py` under the project directory.
|
|
20
|
+
|
|
21
|
+
To change DAS (how long until inputs repeat) and ARR (how fast inputs repeat), you'll have to do it under your OS' settings for now. On Windows, it should be under the Mouse and Keyboard controls. On KDE Plasma, under System Settings > Keyboard > Repeat Rate. On Mac, go ask Tim Cook. On Gnome, go ask Richard Stallman's left foot. Otherwise, I'm sure you can figure it out.
|
|
22
|
+
|
|
23
|
+
## what
|
|
24
|
+
Features:
|
|
25
|
+
- Supports any terminal emulator, Windows or Linux. (Not tested on Mac but may work.)
|
|
26
|
+
- Rebindable controls, including hard and soft drops as well as holds.
|
|
27
|
+
- Grade system, up to the Gm grade (which I guarantee you won't get)
|
|
28
|
+
- Full color!
|
|
29
|
+
- Dynamic gravity (speed) as your level increases
|
|
30
|
+
- Scoring system
|
|
31
|
+
- Gameplay timer
|
|
32
|
+
- 7-bag piece drawing and standard NEStris rotation system
|
|
33
|
+
- 5-piece next queue and level display
|
|
34
|
+
- Persistent TLS (or shadow piece)
|
|
35
|
+
- TGM's 20G gravity after level 500
|
|
36
|
+
- Proper ARE, lock delay, and line clear delay
|
|
37
|
+
- Real-time gravity (not tied to frame rates)
|
|
38
|
+
|
|
39
|
+
Drawbacks:
|
|
40
|
+
- Requires manual ARR/DAS and can't press two keys at once
|
|
41
|
+
- Very sub-par rotation system
|
|
42
|
+
- Scoring is slightly off
|
|
43
|
+
- Lack of theming or menus at all, as well as a lose state
|
|
44
|
+
- No sound (background or effect)
|
|
45
|
+
|
|
46
|
+
To add by next week:
|
|
47
|
+
- The Super Rotation System and standard wallkicks
|
|
48
|
+
- T-spins and detection for them
|
|
49
|
+
- IHS and IRS (Inital Hold/Rotation System)
|
|
50
|
+
- Full menu with configuration
|
|
51
|
+
- Tiny optional input window via Pygame to add proper multi-key controls and DAS/ARR
|
|
52
|
+
- Config config config! maybe even a new gamemode...
|
|
53
|
+
|
|
54
|
+
## controls
|
|
55
|
+
You may configure these in `config.py`, but the defaults (and what I use) follow:
|
|
56
|
+
|
|
57
|
+
| Buttons | Function | huh |
|
|
58
|
+
| :---------: | :--------: | :---- |
|
|
59
|
+
| `←` `a` `j` | Move Left | |
|
|
60
|
+
| `→` `d` `l` | Move Right | |
|
|
61
|
+
| `↑` `space` `/` `c` | Rotate CW | |
|
|
62
|
+
| `z` `,` `q` | Rotate CCW | |
|
|
63
|
+
| `tab` `x` `.` | Rotate 180 | |
|
|
64
|
+
| `↓` `s` `k` | Soft Drop | move your piece down faster, but don't immediately lock it into place |
|
|
65
|
+
| `w` `i` | Hard Drop | move your piece as far down as it will go and lock it in place, skipping the delay |
|
|
66
|
+
| `e` `v` | Hold Piece | put a piece aside or switch to your held piece when it doesn't fit |
|
|
67
|
+
| `esc` `p` | quit | why would you ever want to do that? |
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
## why
|
|
71
|
+
Built for [Hack Club](https://hack.club)'s [Siege](https://siege.hackclub.com) program (week 10 and 11). Also, I like block stackers.
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
cetragm/__init__.py,sha256=okJMmUyau9oeoBfxhg6AYZn4nPvcTqLrAgzIDpUXMz8,382
|
|
2
|
+
cetragm/audio.py,sha256=-w9omAYlvbUPRHuOe0IOBCSbBnjaOM9MjQy6oRU-hgA,47
|
|
3
|
+
cetragm/bag.py,sha256=qPvDmKoduJPZuwz5DMhh9rp85MUEfUPuiFsqOfJNq2U,704
|
|
4
|
+
cetragm/config.py,sha256=tJjbKxtwIWb3AMmIyBUosWkyHFO0OEzpYbqO5PHxz84,550
|
|
5
|
+
cetragm/controls.py,sha256=iR-ZpudiE6J92FMZmOwZlZpcOUhxfc1bWvb18VR4Cbk,3165
|
|
6
|
+
cetragm/draw.py,sha256=F4GZhNAXhxyPCksY0Pq4wjJQ904pgqCrCZ2ZDfgZHlU,6459
|
|
7
|
+
cetragm/game.py,sha256=TF4Xlcp3OgOFVQSKjStN11hlQxZEVUVAn_ifxMOTxRk,3190
|
|
8
|
+
cetragm/main.py,sha256=5Y7dd7mE0V5PHNo78YfSO9YAkKHpG3eSNzUYTgd0RRI,9995
|
|
9
|
+
cetragm/player.py,sha256=kIdc6E0xmpykAp1MrODM6Jm5kvHBp_SgOiU7ZcX8zmI,2440
|
|
10
|
+
cetragm/srs.py,sha256=AV-JXtGqX6bc9mvSSlSngL5squr4P_qYz7tbBghZBB0,86
|
|
11
|
+
cetragm/tables.py,sha256=MCLD4tz5fO0YJJwEqdqmXegR24kzjWkzvZP5Ev6fQEQ,12220
|
|
12
|
+
cetragm/ui.txt,sha256=7wSQU8ht-5A2Fz5iFbuLTdzc1Cl6otcnqIRUw5_wZoM,2006
|
|
13
|
+
cetragm-0.1.3.dist-info/licenses/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
|
|
14
|
+
cetragm-0.1.3.dist-info/WHEEL,sha256=Jb20R3Ili4n9P1fcwuLup21eQ5r9WXhs4_qy7VTrgPI,79
|
|
15
|
+
cetragm-0.1.3.dist-info/entry_points.txt,sha256=8jMkTAJSkUBD_f2FGMlk9_AdrWzhj9Ohv8TKfA1kSuk,71
|
|
16
|
+
cetragm-0.1.3.dist-info/METADATA,sha256=wWMjy847ZUaY-JI06REMVJWrV3YIz1Dl_NxhHJ-_JN0,3191
|
|
17
|
+
cetragm-0.1.3.dist-info/RECORD,,
|