Tetris
Create a playable Tetris game.
- Task
- Requirements
- a left / right key
- a hard drop key (the current piece will be dropped and locked at once)
- a rotation key
- a preview piece
- full set of 7 kinds of shapes (ITOSZJL)
Applesoft BASIC
Bash
See Tetris/BASH.
Ansi94 Forth
See Tetris/Ansi94 Forth.
Go
See Tetris/Go
Java
See Tetris/Java.
JavaScript
See Tetris/JavaScript.
Julia
See Tetris/Julia.
Mathematica/Wolfram Language
See Tetris/Mathematica.
Microsoft Small Basic
Atari Basic
Atari Basic. Tetris programmed in Atari Basic for Atari 65 xe computer.
1 GRAPHICS 0
2 POKE 708,194
3 POKE 709,196
4 POKE 710,198
6 COLOR 2
7 POKE 752,1
10 DIM A(10,20)
11 FOR Y=0 TO 20:FOR X=0 TO 10:A(X,Y)=0:NEXT X:NEXT Y
30 FOR Y=0 TO 20
40 POSITION 13,Y
45 ? "á"
50 POSITION 24,Y
60 ? "á"
70 NEXT Y
80 POSITION 13,20
81 ? "áááááááááááá"
82 COLOR 2
160 POSITION 0,0
161 ? "ATARI TETRIS"
162 POSITION 0,2
163 ? "MATEUSZ"
164 POSITION 0,3
165 ? "PAWLOWSKI"
201 K=5:R=1
202 KX=0:KY=0
203 RYSUJ=1
205 CZAS=0
206 DELAY=1
207 DELAY=30
208 KOLIZJA=0
209 CZASROT=0
210 KOLIZJADOWN=0
211 CZASMOV=0
212 SCORE=0
213 LOS=INT(RND(0)*5)+1
300 REM CONTROLS
301 J=STICK(0)
302 KOLIZJA=0
303 CZASROT=CZASROT+1
304 IF CZASROT=10 THEN CZASROT=0
305 KOLIZJADOWN=0
306 CZASMOV=CZASMOV+1
307 IF CZASMOV=2 THEN CZASMOV=0
308 POSITION 26,3:? "SCORE:"
309 POSITION 33,3:? SCORE
310 IF CZASMOV=0 THEN IF J=11 THEN GOSUB 360:REM LEFT
320 IF CZASMOV=0 THEN IF J=7 THEN GOSUB 375:REM RIGHT
330 IF J=13 THEN GOSUB 390:REM DOWN
340 IF CZASROT=0 THEN IF J=14 THEN GOSUB 405:REM UP
343 CZAS=CZAS+1
344 IF CZAS=DELAY THEN CZAS=0:GOSUB 390
345 RYSUJ=0:GOSUB 900:RYSUJ=1:GOSUB 900
350 GOTO 300
360 REM KOLIZJA LEFT
365 GOSUB 5000:IF KOLIZJA=0 THEN GOSUB 500:REM LEFT
370 RETURN
375 REM KOLIZJA RIGHT
380 GOSUB 6000:IF KOLIZJA=0 THEN GOSUB 600:REM RIGHT
385 RETURN
390 REM KOLIZJA DOWN
395 GOSUB 7000:IF KOLIZJADOWN=0 THEN GOSUB 700:REM DOWN
396 IF KOLIZJADOWN=1 THEN GOSUB 20000
397 IF KOLIZJADOWN=1 THEN GOSUB 30000
400 RETURN
405 REM KOLIZJA UP ROTATE
410 GOSUB 8000:IF KOLIZJA=0 THEN GOSUB 800:REM UP ROTATE
415 RETURN
500 REM LEFT
501 RYSUJ=0:GOSUB 900:RYSUJ=1:KX=KX-1:GOSUB 900
503 RETURN
600 REM RIGHT
601 RYSUJ=0:GOSUB 900:RYSUJ=1:KX=KX+1:GOSUB 900
603 RETURN
700 REM DOWN
710 RYSUJ=0:GOSUB 900:RYSUJ=1:KY=KY+1:GOSUB 900
720 RETURN
800 REM UP ROTATE
801 RYSUJ=0:GOSUB 900
802 RYSUJ=1:R=R+1
810 GOSUB 900
825 RETURN
900 REM RYSUJE KLOCEK
901 IF R=5 THEN R=1
910 IF (K=1 AND R=1) THEN GOTO 1001
911 IF (K=1 AND R=2) THEN GOTO 1030
912 IF (K=1 AND R=3) THEN GOTO 1200
913 IF (K=1 AND R=4) THEN GOTO 1400
914 IF (K=2 AND R=1) THEN GOTO 1600
915 IF (K=2 AND R=2) THEN GOTO 1800
916 IF (K=2 AND R=3) THEN GOTO 2000
917 IF (K=2 AND R=4) THEN GOTO 2200
919 IF (K=3 AND R=1) THEN GOTO 2500
920 IF (K=3 AND R=2) THEN GOTO 2700
921 IF (K=3 AND R=3) THEN GOTO 2900
922 IF (K=3 AND R=4) THEN GOTO 3100
925 IF (K=4 AND R=1) THEN GOTO 3300
926 IF (K=4 AND R=2) THEN GOTO 3500
927 IF (K=4 AND R=3) THEN GOTO 3300
928 IF (K=4 AND R=4) THEN GOTO 3500
930 IF (K=5 AND R=1) THEN GOTO 3700
931 IF (K=5 AND R=2) THEN GOTO 3700
932 IF (K=5 AND R=3) THEN GOTO 3700
933 IF (K=5 AND R=4) THEN GOTO 3700
1001 REM K=1 R=1
1002 POSITION KX+14+1,KY
1003 IF RYSUJ=0 THEN ? " "
1004 IF RYSUJ=1 THEN ? "á"
1005 POSITION KX+14+0,KY+1
1006 IF RYSUJ=0 THEN ? " "
1007 IF RYSUJ=1 THEN ? "á"
1008 POSITION KX+14+1,KY+1
1009 IF RYSUJ=0 THEN ? " "
1010 IF RYSUJ=1 THEN ? "á"
1011 POSITION KX+14+2,KY+1
1012 IF RYSUJ=0 THEN ? " "
1013 IF RYSUJ=1 THEN ? "á"
1015 RETURN
1020 REM K=1 R=2
1030 POSITION KX+14+1,KY
1040 IF RYSUJ=0 THEN ? " "
1050 IF RYSUJ=1 THEN ? "á"
1060 POSITION KX+14+1,KY+1
1070 IF RYSUJ=0 THEN ? " "
1080 IF RYSUJ=1 THEN ? "á"
1090 POSITION KX+14+2,KY+1
1100 IF RYSUJ=0 THEN ? " "
1110 IF RYSUJ=1 THEN ? "á"
1120 POSITION KX+14+1,KY+2
1130 IF RYSUJ=0 THEN ? " "
1140 IF RYSUJ=1 THEN ? "á"
1149 RETURN
1200 REM K=1 R=3
1210 POSITION KX+14+0,KY+1
1220 IF RYSUJ=0 THEN ? " "
1230 IF RYSUJ=1 THEN ? "á"
1240 POSITION KX+14+1,KY+1
1250 IF RYSUJ=0 THEN ? " "
1260 IF RYSUJ=1 THEN ? "á"
1270 POSITION KX+14+2,KY+1
1280 IF RYSUJ=0 THEN ? " "
1290 IF RYSUJ=1 THEN ? "á"
1300 POSITION KX+14+1,KY+2
1310 IF RYSUJ=0 THEN ? " "
1320 IF RYSUJ=1 THEN ? "á"
1330 RETURN
1400 REM K=1 R=4
1410 POSITION KX+14+1,KY+0
1420 IF RYSUJ=0 THEN ? " "
1430 IF RYSUJ=1 THEN ? "á"
1440 POSITION KX+14+0,KY+1
1450 IF RYSUJ=0 THEN ? " "
1460 IF RYSUJ=1 THEN ? "á"
1470 POSITION KX+14+1,KY+1
1480 IF RYSUJ=0 THEN ? " "
1490 IF RYSUJ=1 THEN ? "á"
1500 POSITION KX+14+1,KY+2
1510 IF RYSUJ=0 THEN ? " "
1520 IF RYSUJ=1 THEN ? "á"
1530 RETURN
1600 REM K=2 R=1
1610 POSITION KX+14+1,KY+0
1620 IF RYSUJ=0 THEN ? " "
1630 IF RYSUJ=1 THEN ? "á"
1640 POSITION KX+14+1,KY+1
1650 IF RYSUJ=0 THEN ? " "
1660 IF RYSUJ=1 THEN ? "á"
1670 POSITION KX+14+1,KY+2
1680 IF RYSUJ=0 THEN ? " "
1690 IF RYSUJ=1 THEN ? "á"
1700 POSITION KX+14+2,KY+2
1710 IF RYSUJ=0 THEN ? " "
1720 IF RYSUJ=1 THEN ? "á"
1730 RETURN
1800 REM K=2 R=2
1810 POSITION KX+14+0,KY+1
1820 IF RYSUJ=0 THEN ? " "
1830 IF RYSUJ=1 THEN ? "á"
1840 POSITION KX+14+1,KY+1
1850 IF RYSUJ=0 THEN ? " "
1860 IF RYSUJ=1 THEN ? "á"
1870 POSITION KX+14+2,KY+1
1880 IF RYSUJ=0 THEN ? " "
1890 IF RYSUJ=1 THEN ? "á"
1900 POSITION KX+14+0,KY+2
1910 IF RYSUJ=0 THEN ? " "
1920 IF RYSUJ=1 THEN ? "á"
1930 RETURN
2000 POSITION KX+14+1,KY+2
2010 IF RYSUJ=0 THEN ? " "
2020 IF RYSUJ=1 THEN ? "á"
2040 POSITION KX+14+1,KY+0
2050 IF RYSUJ=0 THEN ? " "
2060 IF RYSUJ=1 THEN ? "á"
2070 POSITION KX+14+1,KY+1
2080 IF RYSUJ=0 THEN ? " "
2090 IF RYSUJ=1 THEN ? "á"
2100 POSITION KX+14+0,KY+0
2110 IF RYSUJ=0 THEN ? " "
2120 IF RYSUJ=1 THEN ? "á"
2130 RETURN
2200 REM K=2 R=4
2300 POSITION KX+14+0,KY+1
2310 IF RYSUJ=0 THEN ? " "
2320 IF RYSUJ=1 THEN ? "á"
2340 POSITION KX+14+1,KY+1
2350 IF RYSUJ=0 THEN ? " "
2360 IF RYSUJ=1 THEN ? "á"
2370 POSITION KX+14+2,KY+1
2380 IF RYSUJ=0 THEN ? " "
2390 IF RYSUJ=1 THEN ? "á"
2400 POSITION KX+14+2,KY+0
2410 IF RYSUJ=0 THEN ? " "
2420 IF RYSUJ=1 THEN ? "á"
2430 RETURN
2500 REM K=3 R=1
2501 POSITION KX+14+0,KY+2
2510 IF RYSUJ=0 THEN ? " "
2520 IF RYSUJ=1 THEN ? "á"
2540 POSITION KX+14+1,KY+0
2550 IF RYSUJ=0 THEN ? " "
2560 IF RYSUJ=1 THEN ? "á"
2570 POSITION KX+14+1,KY+1
2580 IF RYSUJ=0 THEN ? " "
2590 IF RYSUJ=1 THEN ? "á"
2600 POSITION KX+14+1,KY+2
2610 IF RYSUJ=0 THEN ? " "
2620 IF RYSUJ=1 THEN ? "á"
2630 RETURN
2700 REM K=3 R=2
2701 POSITION KX+14+0,KY+1
2710 IF RYSUJ=0 THEN ? " "
2720 IF RYSUJ=1 THEN ? "á"
2740 POSITION KX+14+1,KY+1
2750 IF RYSUJ=0 THEN ? " "
2760 IF RYSUJ=1 THEN ? "á"
2770 POSITION KX+14+2,KY+1
2780 IF RYSUJ=0 THEN ? " "
2790 IF RYSUJ=1 THEN ? "á"
2800 POSITION KX+14+0,KY+0
2810 IF RYSUJ=0 THEN ? " "
2820 IF RYSUJ=1 THEN ? "á"
2830 RETURN
2900 REM K=3 R=3
2901 POSITION KX+14+2,KY+0
2910 IF RYSUJ=0 THEN ? " "
2920 IF RYSUJ=1 THEN ? "á"
2940 POSITION KX+14+1,KY+0
2950 IF RYSUJ=0 THEN ? " "
2960 IF RYSUJ=1 THEN ? "á"
2970 POSITION KX+14+1,KY+1
2980 IF RYSUJ=0 THEN ? " "
2990 IF RYSUJ=1 THEN ? "á"
3000 POSITION KX+14+1,KY+2
3010 IF RYSUJ=0 THEN ? " "
3020 IF RYSUJ=1 THEN ? "á"
3030 RETURN
3100 REM K=3 R=4
3101 POSITION KX+14+2,KY+2
3110 IF RYSUJ=0 THEN ? " "
3120 IF RYSUJ=1 THEN ? "á"
3140 POSITION KX+14+0,KY+1
3150 IF RYSUJ=0 THEN ? " "
3160 IF RYSUJ=1 THEN ? "á"
3170 POSITION KX+14+1,KY+1
3180 IF RYSUJ=0 THEN ? " "
3190 IF RYSUJ=1 THEN ? "á"
3200 POSITION KX+14+2,KY+1
3210 IF RYSUJ=0 THEN ? " "
3220 IF RYSUJ=1 THEN ? "á"
3230 RETURN
3300 REM K=4 R=1
3301 POSITION KX+14+0,KY+2
3310 IF RYSUJ=0 THEN ? " "
3320 IF RYSUJ=1 THEN ? "á"
3340 POSITION KX+14+1,KY+2
3350 IF RYSUJ=0 THEN ? " "
3360 IF RYSUJ=1 THEN ? "á"
3370 POSITION KX+14+1,KY+1
3380 IF RYSUJ=0 THEN ? " "
3390 IF RYSUJ=1 THEN ? "á"
3400 POSITION KX+14+2,KY+1
3410 IF RYSUJ=0 THEN ? " "
3420 IF RYSUJ=1 THEN ? "á"
3430 RETURN
3500 REM K=4 R=2
3501 POSITION KX+14+1,KY+0
3510 IF RYSUJ=0 THEN ? " "
3520 IF RYSUJ=1 THEN ? "á"
3540 POSITION KX+14+1,KY+1
3550 IF RYSUJ=0 THEN ? " "
3560 IF RYSUJ=1 THEN ? "á"
3570 POSITION KX+14+2,KY+1
3580 IF RYSUJ=0 THEN ? " "
3590 IF RYSUJ=1 THEN ? "á"
3600 POSITION KX+14+2,KY+2
3610 IF RYSUJ=0 THEN ? " "
3620 IF RYSUJ=1 THEN ? "á"
3630 RETURN
3700 REM K=5 R=1
3701 POSITION KX+14+0,KY+0
3710 IF RYSUJ=0 THEN ? " "
3720 IF RYSUJ=1 THEN ? "á"
3740 POSITION KX+14+1,KY+0
3750 IF RYSUJ=0 THEN ? " "
3760 IF RYSUJ=1 THEN ? "á"
3770 POSITION KX+14+0,KY+1
3780 IF RYSUJ=0 THEN ? " "
3790 IF RYSUJ=1 THEN ? "á"
3800 POSITION KX+14+1,KY+1
3810 IF RYSUJ=0 THEN ? " "
3820 IF RYSUJ=1 THEN ? "á"
3830 RETURN
5000 REM KOLIZJA LEFT
5002 IF K=1 AND R=1 THEN GOTO 5040
5003 IF K=1 AND R=2 THEN GOTO 5060
5004 IF K=1 AND R=3 THEN GOTO 5080
5005 IF K=1 AND R=4 THEN GOTO 5100
5006 IF K=2 AND R=1 THEN GOTO 5120
5007 IF K=2 AND R=2 THEN GOTO 5140
5008 IF K=2 AND R=3 THEN GOTO 5160
5009 IF K=2 AND R=4 THEN GOTO 5180
5010 IF K=3 AND R=1 THEN GOTO 5200
5011 IF K=3 AND R=2 THEN GOTO 5220
5012 IF K=3 AND R=3 THEN GOTO 5240
5013 IF K=3 AND R=4 THEN GOTO 5260
5014 IF K=4 AND R=1 THEN GOTO 5280
5015 IF K=4 AND R=2 THEN GOTO 5300
5016 IF K=4 AND R=3 THEN GOTO 5280
5017 IF K=4 AND R=4 THEN GOTO 5300
5018 IF K=5 AND R=1 THEN GOTO 5320
5019 IF K=5 AND R=2 THEN GOTO 5320
5020 IF K=5 AND R=3 THEN GOTO 5320
5021 IF K=5 AND R=4 THEN GOTO 5320
5040 REM K=1 R=1
5044 IF KX=0 THEN KOLIZJA=1
5046 IF KX>0 THEN IF A(KX+0-1,KY+1)=1 THEN KOLIZJA=1
5048 IF KX>0 THEN IF A(KX+1-1,KY+1)=1 THEN KOLIZJA=1
5050 IF KX>0 THEN IF A(KX+2-1,KY+1)=1 THEN KOLIZJA=1
5052 IF KX>0 THEN IF A(KX+1-1,KY+0)=1 THEN KOLIZJA=1
5054 RETURN
5060 REM K=1 R=2
5064 IF KX+1=0 THEN KOLIZJA=1
5066 IF KX+1>0 THEN IF A(KX+1-1,KY+0)=1 THEN KOLIZJA=1
5068 IF KX+1>0 THEN IF A(KX+1-1,KY+1)=1 THEN KOLIZJA=1
5070 IF KX+1>0 THEN IF A(KX+1-1,KY+2)=1 THEN KOLIZJA=1
5072 IF KX+1>0 THEN IF A(KX+2-1,KY+1)=1 THEN KOLIZJA=1
5074 RETURN
5080 REM K=1 R=3
5084 IF KX=0 THEN KOLIZJA=1
5086 IF KX>0 THEN IF A(KX+0-1,KY+1)=1 THEN KOLIZJA=1
5088 IF KX>0 THEN IF A(KX+1-1,KY+1)=1 THEN KOLIZJA=1
5090 IF KX>0 THEN IF A(KX+2-1,KY+1)=1 THEN KOLIZJA=1
5092 IF KX>0 THEN IF A(KX+1-1,KY+2)=1 THEN KOLIZJA=1
5094 RETURN
5100 REM K=1 R=4
5102 IF KX=0 THEN KOLIZJA=1
5104 IF KX>0 THEN IF A(KX+1-1,KY+0)=1 THEN KOLIZJA=1
5106 IF KX>0 THEN IF A(KX+1-1,KY+1)=1 THEN KOLIZJA=1
5108 IF KX>0 THEN IF A(KX+1-1,KY+2)=1 THEN KOLIZJA=1
5110 IF KX>0 THEN IF A(KX+0-1,KY+1)=1 THEN KOLIZJA=1
5112 RETURN
5120 REM K=2 R=1
5124 IF KX+1=0 THEN KOLIZJA=1
5126 IF KX+1>0 THEN IF A(KX+1-1,KY+0)=1 THEN KOLIZJA=1
5128 IF KX+1>0 THEN IF A(KX+1-1,KY+1)=1 THEN KOLIZJA=1
5130 IF KX+1>0 THEN IF A(KX+1-1,KY+2)=1 THEN KOLIZJA=1
5132 IF KX+1>0 THEN IF A(KX+2-1,KY+2)=1 THEN KOLIZJA=1
5134 RETURN
5140 REM K=2 R=2
5144 IF KX=0 THEN KOLIZJA=1
5146 IF KX>0 THEN IF A(KX+0-1,KY+1)=1 THEN KOLIZJA=1
5148 IF KX>0 THEN IF A(KX+1-1,KY+1)=1 THEN KOLIZJA=1
5150 IF KX>0 THEN IF A(KX+2-1,KY+1)=1 THEN KOLIZJA=1
5152 IF KX>0 THEN IF A(KX+0-1,KY+2)=1 THEN KOLIZJA=1
5154 RETURN
5160 REM K=2 R=3
5164 IF KX=0 THEN KOLIZJA=1
5166 IF KX>0 THEN IF A(KX+1-1,KY+0)=1 THEN KOLIZJA=1
5168 IF KX>0 THEN IF A(KX+1-1,KY+1)=1 THEN KOLIZJA=1
5170 IF KX>0 THEN IF A(KX+1-1,KY+2)=1 THEN KOLIZJA=1
5172 IF KX>0 THEN IF A(KX+0-1,KY+0)=1 THEN KOLIZJA=1
5174 RETURN
5180 REM K=2 R=4
5184 IF KX=0 THEN KOLIZJA=1
5186 IF KX>0 THEN IF A(KX+0-1,KY+1)=1 THEN KOLIZJA=1
5188 IF KX>0 THEN IF A(KX+1-1,KY+1)=1 THEN KOLIZJA=1
5190 IF KX>0 THEN IF A(KX+2-1,KY+1)=1 THEN KOLIZJA=1
5192 IF KX>0 THEN IF A(KX+2-1,KY+0)=1 THEN KOLIZJA=1
5194 RETURN
5200 REM K=3 R=1
5202 IF KX=0 THEN KOLIZJA=1
5204 IF KX>0 THEN IF A(KX+1-1,KY+0)=1 THEN KOLIZJA=1
5206 IF KX>0 THEN IF A(KX+1-1,KY+1)=1 THEN KOLIZJA=1
5208 IF KX>0 THEN IF A(KX+1-1,KY+2)=1 THEN KOLIZJA=1
5210 IF KX>0 THEN IF A(KX+0-1,KY+2)=1 THEN KOLIZJA=1
5212 RETURN
5220 REM K=3 R=2
5224 IF KX=0 THEN KOLIZJA=1
5226 IF KX>0 THEN IF A(KX+0-1,KY+1)=1 THEN KOLIZJA=1
5228 IF KX>0 THEN IF A(KX+1-1,KY+1)=1 THEN KOLIZJA=1
5230 IF KX>0 THEN IF A(KX+2-1,KY+1)=1 THEN KOLIZJA=1
5232 IF KX>0 THEN IF A(KX+0-1,KY+0)=1 THEN KOLIZJA=1
5234 RETURN
5240 REM K=3 R=3
5244 IF KX+1=0 THEN KOLIZJA=1
5246 IF KX+1>0 THEN IF A(KX+1-1,KY+0)=1 THEN KOLIZJA=1
5248 IF KX+1>0 THEN IF A(KX+1-1,KY+1)=1 THEN KOLIZJA=1
5250 IF KX+1>0 THEN IF A(KX+1-1,KY+2)=1 THEN KOLIZJA=1
5252 IF KX+1>0 THEN IF A(KX+2-1,KY+0)=1 THEN KOLIZJA=1
5254 RETURN
5260 REM K=3 R=4
5264 IF KX=0 THEN KOLIZJA=1
5266 IF KX>0 THEN IF A(KX+0-1,KY+1)=1 THEN KOLIZJA=1
5268 IF KX>0 THEN IF A(KX+1-1,KY+1)=1 THEN KOLIZJA=1
5270 IF KX>0 THEN IF A(KX+2-1,KY+1)=1 THEN KOLIZJA=1
5272 IF KX>0 THEN IF A(KX+2-1,KY+2)=1 THEN KOLIZJA=1
5274 RETURN
5280 REM K=4 R=1
5284 IF KX=0 THEN KOLIZJA=1
5286 IF KX>0 THEN IF A(KX+0-1,KY+2)=1 THEN KOLIZJA=1
5288 IF KX>0 THEN IF A(KX+1-1,KY+2)=1 THEN KOLIZJA=1
5290 IF KX>0 THEN IF A(KX+1-1,KY+1)=1 THEN KOLIZJA=1
5292 IF KX>0 THEN IF A(KX+2-1,KY+1)=1 THEN KOLIZJA=1
5294 RETURN
5300 REM K=4 R=2
5304 IF KX+1=0 THEN KOLIZJA=1
5306 IF KX+1>0 THEN IF A(KX+1-1,KY+0)=1 THEN KOLIZJA=1
5308 IF KX+1>0 THEN IF A(KX+1-1,KY+1)=1 THEN KOLIZJA=1
5310 IF KX+1>0 THEN IF A(KX+2-1,KY+1)=1 THEN KOLIZJA=1
5312 IF KX+1>0 THEN IF A(KX+2-1,KY+2)=1 THEN KOLIZJA=1
5314 RETURN
5320 REM K=5 R=1
5324 IF KX=0 THEN KOLIZJA=1
5326 IF KX>0 THEN IF A(KX+0-1,KY+0)=1 THEN KOLIZJA=1
5328 IF KX>0 THEN IF A(KX+1-1,KY+0)=1 THEN KOLIZJA=1
5330 IF KX>0 THEN IF A(KX+0-1,KY+1)=1 THEN KOLIZJA=1
5332 IF KX>0 THEN IF A(KX+1-1,KY+1)=1 THEN KOLIZJA=1
5334 RETURN
5999 RETURN
6000 REM KOLIZJA RIGHT
6002 IF K=1 AND R=1 THEN GOTO 6040
6003 IF K=1 AND R=2 THEN GOTO 6060
6004 IF K=1 AND R=3 THEN GOTO 6080
6005 IF K=1 AND R=4 THEN GOTO 6100
6006 IF K=2 AND R=1 THEN GOTO 6120
6007 IF K=2 AND R=2 THEN GOTO 6140
6008 IF K=2 AND R=3 THEN GOTO 6160
6009 IF K=2 AND R=4 THEN GOTO 6180
6010 IF K=3 AND R=1 THEN GOTO 6200
6011 IF K=3 AND R=2 THEN GOTO 6220
6012 IF K=3 AND R=3 THEN GOTO 6240
6013 IF K=3 AND R=4 THEN GOTO 6260
6014 IF K=4 AND R=1 THEN GOTO 6280
6015 IF K=4 AND R=2 THEN GOTO 6300
6016 IF K=4 AND R=3 THEN GOTO 6280
6017 IF K=4 AND R=4 THEN GOTO 6300
6018 IF K=5 AND R=1 THEN GOTO 6320
6019 IF K=5 AND R=2 THEN GOTO 6320
6020 IF K=5 AND R=3 THEN GOTO 6320
6021 IF K=5 AND R=4 THEN GOTO 6320
6040 REM K=1 R=1
6044 IF KX=7 THEN KOLIZJA=1
6046 IF KX<7 THEN IF A(KX+0+1,KY+1)=1 THEN KOLIZJA=1
6048 IF KX<7 THEN IF A(KX+1+1,KY+1)=1 THEN KOLIZJA=1
6050 IF KX<7 THEN IF A(KX+2+1,KY+1)=1 THEN KOLIZJA=1
6052 IF KX<7 THEN IF A(KX+1+1,KY+0)=1 THEN KOLIZJA=1
6054 RETURN
6060 REM K=1 R=2
6064 IF KX=7 THEN KOLIZJA=1
6066 IF KX<7 THEN IF A(KX+1+1,KY+0)=1 THEN KOLIZJA=1
6068 IF KX<7 THEN IF A(KX+1+1,KY+1)=1 THEN KOLIZJA=1
6070 IF KX<7 THEN IF A(KX+1+1,KY+2)=1 THEN KOLIZJA=1
6072 IF KX<7 THEN IF A(KX+2+1,KY+1)=1 THEN KOLIZJA=1
6074 RETURN
6080 REM K=1 R=3
6084 IF KX=7 THEN KOLIZJA=1
6086 IF KX<7 THEN IF A(KX+0+1,KY+1)=1 THEN KOLIZJA=1
6088 IF KX<7 THEN IF A(KX+1+1,KY+1)=1 THEN KOLIZJA=1
6090 IF KX<7 THEN IF A(KX+2+1,KY+1)=1 THEN KOLIZJA=1
6092 IF KX<7 THEN IF A(KX+1+1,KY+2)=1 THEN KOLIZJA=1
6094 RETURN
6100 REM K=1 R=4
6104 IF KX=8 THEN KOLIZJA=1
6106 IF KX<8 THEN IF A(KX+1+1,KY+0)=1 THEN KOLIZJA=1
6108 IF KX<8 THEN IF A(KX+1+1,KY+1)=1 THEN KOLIZJA=1
6110 IF KX<8 THEN IF A(KX+1+1,KY+2)=1 THEN KOLIZJA=1
6112 IF KX<8 THEN IF A(KX+0+1,KY+1)=1 THEN KOLIZJA=1
6114 RETURN
6120 REM K=2 R=1
6124 IF KX=7 THEN KOLIZJA=1
6126 IF KX<7 THEN IF A(KX+1+1,KY+0)=1 THEN KOLIZJA=1
6128 IF KX<7 THEN IF A(KX+1+1,KY+1)=1 THEN KOLIZJA=1
6130 IF KX<7 THEN IF A(KX+1+1,KY+2)=1 THEN KOLIZJA=1
6132 IF KX<7 THEN IF A(KX+2+1,KY+2)=1 THEN KOLIZJA=1
6133 RETURN
6140 REM K=2 R=2
6144 IF KX=7 THEN KOLIZJA=1
6146 IF KX<7 THEN IF A(KX+0+1,KY+1)=1 THEN KOLIZJA=1
6148 IF KX<7 THEN IF A(KX+1+1,KY+1)=1 THEN KOLIZJA=1
6150 IF KX<7 THEN IF A(KX+2+1,KY+1)=1 THEN KOLIZJA=1
6152 IF KX<7 THEN IF A(KX+0+1,KY+2)=1 THEN KOLIZJA=1
6154 RETURN
6160 REM K=2 R=3
6164 IF KX=8 THEN KOLIZJA=1
6166 IF KX<8 THEN IF A(KX+1+1,KY+0)=1 THEN KOLIZJA=1
6168 IF KX<8 THEN IF A(KX+1+1,KY+1)=1 THEN KOLIZJA=1
6170 IF KX<8 THEN IF A(KX+1+1,KY+2)=1 THEN KOLIZJA=1
6172 IF KX<8 THEN IF A(KX+0+1,KY+0)=1 THEN KOLIZJA=1
6174 RETURN
6180 REM K=2 R=4
6184 IF KX=7 THEN KOLIZJA=1
6186 IF KX<7 THEN IF A(KX+0+1,KY+1)=1 THEN KOLIZJA=1
6188 IF KX<7 THEN IF A(KX+1+1,KY+1)=1 THEN KOLIZJA=1
6190 IF KX<7 THEN IF A(KX+2+1,KY+1)=1 THEN KOLIZJA=1
6192 IF KX<7 THEN IF A(KX+2+1,KY+0)=1 THEN KOLIZJA=1
6194 RETURN
6200 REM K=3 R=1
6204 IF KX=8 THEN KOLIZJA=1
6206 IF KX<8 THEN IF A(KX+1+1,KY+0)=1 THEN KOLIZJA=1
6208 IF KX<8 THEN IF A(KX+1+1,KY+1)=1 THEN KOLIZJA=1
6210 IF KX<8 THEN IF A(KX+1+1,KY+2)=1 THEN KOLIZJA=1
6212 IF KX<8 THEN IF A(KX+0+1,KY+2)=1 THEN KOLIZJA=1
6214 RETURN
6220 REM K=3 R=2
6224 IF KX=7 THEN KOLIZJA=1
6226 IF KX<7 THEN IF A(KX+0+1,KY+1)=1 THEN KOLIZJA=1
6228 IF KX<7 THEN IF A(KX+1+1,KY+1)=1 THEN KOLIZJA=1
6230 IF KX<7 THEN IF A(KX+2+1,KY+1)=1 THEN KOLIZJA=1
6232 IF KX<7 THEN IF A(KX+0+1,KY+0)=1 THEN KOLIZJA=1
6234 RETURN
6240 REM K=3 R=3
6244 IF KX=7 THEN KOLIZJA=1
6246 IF KX<7 THEN IF A(KX+1+1,KY+0)=1 THEN KOLIZJA=1
6248 IF KX<7 THEN IF A(KX+1+1,KY+1)=1 THEN KOLIZJA=1
6250 IF KX<7 THEN IF A(KX+1+1,KY+2)=1 THEN KOLIZJA=1
6252 IF KX<7 THEN IF A(KX+2+1,KY+0)=1 THEN KOLIZJA=1
6254 RETURN
6260 REM K=3 R=4
6264 IF KX=7 THEN KOLIZJA=1
6266 IF KX<7 THEN IF A(KX+0+1,KY+1)=1 THEN KOLIZJA=1
6268 IF KX<7 THEN IF A(KX+1+1,KY+1)=1 THEN KOLIZJA=1
6270 IF KX<7 THEN IF A(KX+2+1,KY+1)=1 THEN KOLIZJA=1
6272 IF KX<7 THEN IF A(KX+2+1,KY+2)=1 THEN KOLIZJA=1
6274 RETURN
6280 REM K=4 R=1
6284 IF KX=7 THEN KOLIZJA=1
6286 IF KX<7 THEN IF A(KX+0+1,KY+2)=1 THEN KOLIZJA=1
6288 IF KX<7 THEN IF A(KX+1+1,KY+2)=1 THEN KOLIZJA=1
6290 IF KX<7 THEN IF A(KX+1+1,KY+1)=1 THEN KOLIZJA=1
6292 IF KX<7 THEN IF A(KX+2+1,KY+1)=1 THEN KOLIZJA=1
6294 RETURN
6300 REM K=4 R=2
6304 IF KX=7 THEN KOLIZJA=1
6306 IF KX<7 THEN IF A(KX+1+1,KY+0)=1 THEN KOLIZJA=1
6308 IF KX<7 THEN IF A(KX+1+1,KY+1)=1 THEN KOLIZJA=1
6310 IF KX<7 THEN IF A(KX+2+1,KY+1)=1 THEN KOLIZJA=1
6312 IF KX<7 THEN IF A(KX+2+1,KY+2)=1 THEN KOLIZJA=1
6314 RETURN
6320 REM K=5 R=1
6324 IF KX=8 THEN KOLIZJA=1
6326 IF KX<8 THEN IF A(KX+0+1,KY+0)=1 THEN KOLIZJA=1
6328 IF KX<8 THEN IF A(KX+1+1,KY+0)=1 THEN KOLIZJA=1
6330 IF KX<8 THEN IF A(KX+0+1,KY+1)=1 THEN KOLIZJA=1
6332 IF KX<8 THEN IF A(KX+1+1,KY+1)=1 THEN KOLIZJA=1
6334 RETURN
6999 RETURN
7000 REM KOLIZJA DOWN
7002 IF K=1 AND R=1 THEN GOTO 7040
7003 IF K=1 AND R=2 THEN GOTO 7060
7004 IF K=1 AND R=3 THEN GOTO 7080
7005 IF K=1 AND R=4 THEN GOTO 7100
7006 IF K=2 AND R=1 THEN GOTO 7120
7007 IF K=2 AND R=2 THEN GOTO 7140
7008 IF K=2 AND R=3 THEN GOTO 7160
7009 IF K=2 AND R=4 THEN GOTO 7180
7010 IF K=3 AND R=1 THEN GOTO 7200
7011 IF K=3 AND R=2 THEN GOTO 7220
7012 IF K=3 AND R=3 THEN GOTO 7240
7013 IF K=3 AND R=4 THEN GOTO 7260
7014 IF K=4 AND R=1 THEN GOTO 7280
7015 IF K=4 AND R=2 THEN GOTO 7300
7016 IF K=4 AND R=3 THEN GOTO 7280
7017 IF K=4 AND R=4 THEN GOTO 7300
7018 IF K=5 AND R=1 THEN GOTO 7320
7019 IF K=5 AND R=2 THEN GOTO 7320
7020 IF K=5 AND R=3 THEN GOTO 7320
7021 IF K=5 AND R=4 THEN GOTO 7320
7040 REM K=1 R=1
7044 IF KY=18 THEN KOLIZJADOWN=1
7046 IF KY<18 THEN IF A(KX+0,KY+1+1)=1 THEN KOLIZJADOWN=1
7048 IF KY<18 THEN IF A(KX+1,KY+1+1)=1 THEN KOLIZJADOWN=1
7050 IF KY<18 THEN IF A(KX+2,KY+1+1)=1 THEN KOLIZJADOWN=1
7052 IF KY<18 THEN IF A(KX+1,KY+0+1)=1 THEN KOLIZJADOWN=1
7054 RETURN
7060 REM K=1 R=2
7064 IF KY=17 THEN KOLIZJADOWN=1
7066 IF KY<17 THEN IF A(KX+1,KY+0+1)=1 THEN KOLIZJADOWN=1
7068 IF KY<17 THEN IF A(KX+1,KY+1+1)=1 THEN KOLIZJADOWN=1
7070 IF KY<17 THEN IF A(KX+1,KY+2+1)=1 THEN KOLIZJADOWN=1
7072 IF KY<17 THEN IF A(KX+2,KY+1+1)=1 THEN KOLIZJADOWN=1
7074 RETURN
7080 REM K=1 R=3
7084 IF KY=17 THEN KOLIZJADOWN=1
7086 IF KY<17 THEN IF A(KX+0,KY+1+1)=1 THEN KOLIZJADOWN=1
7088 IF KY<17 THEN IF A(KX+1,KY+1+1)=1 THEN KOLIZJADOWN=1
7090 IF KY<17 THEN IF A(KX+2,KY+1+1)=1 THEN KOLIZJADOWN=1
7092 IF KY<17 THEN IF A(KX+1,KY+2+1)=1 THEN KOLIZJADOWN=1
7094 RETURN
7100 REM K=1 R=4
7102 IF KY=17 THEN KOLIZJADOWN=1
7104 IF KY<17 THEN IF A(KX+1,KY+0+1)=1 THEN KOLIZJADOWN=1
7106 IF KY<17 THEN IF A(KX+1,KY+1+1)=1 THEN KOLIZJADOWN=1
7108 IF KY<17 THEN IF A(KX+1,KY+2+1)=1 THEN KOLIZJADOWN=1
7110 IF KY<17 THEN IF A(KX+0,KY+1+1)=1 THEN KOLIZJADOWN=1
7112 RETURN
7120 REM K=2 R=1
7124 IF KY=17 THEN KOLIZJADOWN=1
7126 IF KY<17 THEN IF A(KX+1,KY+0+1)=1 THEN KOLIZJADOWN=1
7128 IF KY<17 THEN IF A(KX+1,KY+1+1)=1 THEN KOLIZJADOWN=1
7130 IF KY<17 THEN IF A(KX+1,KY+2+1)=1 THEN KOLIZJADOWN=1
7132 IF KY<17 THEN IF A(KX+2,KY+2+1)=1 THEN KOLIZJADOWN=1
7134 RETURN
7140 REM K=2 R=2
7144 IF KY=17 THEN KOLIZJADOWN=1
7146 IF KY<17 THEN IF A(KX+0,KY+1+1)=1 THEN KOLIZJADOWN=1
7148 IF KY<17 THEN IF A(KX+1,KY+1+1)=1 THEN KOLIZJADOWN=1
7150 IF KY<17 THEN IF A(KX+2,KY+1+1)=1 THEN KOLIZJADOWN=1
7152 IF KY<17 THEN IF A(KX+0,KY+2+1)=1 THEN KOLIZJADOWN=1
7154 RETURN
7160 REM K=2 R=3
7164 IF KY=17 THEN KOLIZJADOWN=1
7166 IF KY<17 THEN IF A(KX+1,KY+0+1)=1 THEN KOLIZJADOWN=1
7168 IF KY<17 THEN IF A(KX+1,KY+1+1)=1 THEN KOLIZJADOWN=1
7170 IF KY<17 THEN IF A(KX+1,KY+2+1)=1 THEN KOLIZJADOWN=1
7172 IF KY<17 THEN IF A(KX+0,KY+0+1)=1 THEN KOLIZJADOWN=1
7174 RETURN
7180 REM K=2 R=4
7184 IF KY=18 THEN KOLIZJADOWN=1
7186 IF KY<18 THEN IF A(KX+0,KY+1+1)=1 THEN KOLIZJADOWN=1
7188 IF KY<18 THEN IF A(KX+1,KY+1+1)=1 THEN KOLIZJADOWN=1
7190 IF KY<18 THEN IF A(KX+2,KY+1+1)=1 THEN KOLIZJADOWN=1
7192 IF KY<18 THEN IF A(KX+2,KY+0+1)=1 THEN KOLIZJADOWN=1
7194 RETURN
7200 REM K=3 R=1
7204 IF KY=17 THEN KOLIZJADOWN=1
7206 IF KY<17 THEN IF A(KX+1,KY+0+1)=1 THEN KOLIZJADOWN=1
7208 IF KY<17 THEN IF A(KX+1,KY+1+1)=1 THEN KOLIZJADOWN=1
7210 IF KY<17 THEN IF A(KX+1,KY+2+1)=1 THEN KOLIZJADOWN=1
7212 IF KY<17 THEN IF A(KX+0,KY+2+1)=1 THEN KOLIZJADOWN=1
7214 RETURN
7220 REM K=3 R=2
7224 IF KY=18 THEN KOLIZJADOWN=1
7226 IF KY<18 THEN IF A(KX+0,KY+1+1)=1 THEN KOLIZJADOWN=1
7228 IF KY<18 THEN IF A(KX+1,KY+1+1)=1 THEN KOLIZJADOWN=1
7230 IF KY<18 THEN IF A(KX+2,KY+1+1)=1 THEN KOLIZJADOWN=1
7232 IF KY<18 THEN IF A(KX+0,KY+0+1)=1 THEN KOLIZJADOWN=1
7234 RETURN
7240 REM K=3 R=3
7244 IF KY=17 THEN KOLIZJADOWN=1
7246 IF KY<17 THEN IF A(KX+1,KY+0+1)=1 THEN KOLIZJADOWN=1
7248 IF KY<17 THEN IF A(KX+1,KY+1+1)=1 THEN KOLIZJADOWN=1
7250 IF KY<17 THEN IF A(KX+1,KY+2+1)=1 THEN KOLIZJADOWN=1
7252 IF KY<17 THEN IF A(KX+2,KY+0+1)=1 THEN KOLIZJADOWN=1
7254 RETURN
7260 REM K=3 R=4
7264 IF KY=17 THEN KOLIZJADOWN=1
7266 IF KY<17 THEN IF A(KX+0,KY+1+1)=1 THEN KOLIZJADOWN=1
7268 IF KY<17 THEN IF A(KX+1,KY+1+1)=1 THEN KOLIZJADOWN=1
7270 IF KY<17 THEN IF A(KX+2,KY+1+1)=1 THEN KOLIZJADOWN=1
7272 IF KY<17 THEN IF A(KX+2,KY+2+1)=1 THEN KOLIZJADOWN=1
7274 RETURN
7280 REM K=4 R=1
7284 IF KY=17 THEN KOLIZJADOWN=1
7286 IF KY<17 THEN IF A(KX+0,KY+2+1)=1 THEN KOLIZJADOWN=1
7288 IF KY<17 THEN IF A(KX+1,KY+2+1)=1 THEN KOLIZJADOWN=1
7290 IF KY<17 THEN IF A(KX+1,KY+1+1)=1 THEN KOLIZJADOWN=1
7292 IF KY<17 THEN IF A(KX+2,KY+1+1)=1 THEN KOLIZJADOWN=1
7294 RETURN
7300 REM K=4 R=2
7304 IF KY=17 THEN KOLIZJADOWN=1
7306 IF KY<17 THEN IF A(KX+1,KY+0+1)=1 THEN KOLIZJADOWN=1
7308 IF KY<17 THEN IF A(KX+1,KY+1+1)=1 THEN KOLIZJADOWN=1
7310 IF KY<17 THEN IF A(KX+2,KY+1+1)=1 THEN KOLIZJADOWN=1
7312 IF KY<17 THEN IF A(KX+2,KY+2+1)=1 THEN KOLIZJADOWN=1
7314 RETURN
7320 REM K=5 R=1
7324 IF KY=18 THEN KOLIZJADOWN=1
7326 IF KY<18 THEN IF A(KX+0,KY+0+1)=1 THEN KOLIZJADOWN=1
7328 IF KY<18 THEN IF A(KX+1,KY+0+1)=1 THEN KOLIZJADOWN=1
7330 IF KY<18 THEN IF A(KX+0,KY+1+1)=1 THEN KOLIZJADOWN=1
7332 IF KY<18 THEN IF A(KX+1,KY+1+1)=1 THEN KOLIZJADOWN=1
7334 RETURN
7999 RETURN
8000 REM KOLIZJA UP ROTATE
8999 RETURN
20000 REM RZUTOWANIE
20010 IF K=1 AND R=1 THEN GOTO 25000
20011 IF K=1 AND R=2 THEN GOTO 25020
20012 IF K=1 AND R=3 THEN GOTO 25040
20014 IF K=1 AND R=4 THEN GOTO 25060
20015 IF K=2 AND R=1 THEN GOTO 25080
20016 IF K=2 AND R=2 THEN GOTO 25090
20017 IF K=2 AND R=3 THEN GOTO 25110
20018 IF K=2 AND R=4 THEN GOTO 25130
20019 IF K=3 AND R=1 THEN GOTO 25150
20020 IF K=3 AND R=2 THEN GOTO 25170
20021 IF K=3 AND R=3 THEN GOTO 25190
20022 IF K=3 AND R=4 THEN GOTO 25210
20023 IF K=4 AND R=1 THEN GOTO 25230
20024 IF K=4 AND R=2 THEN GOTO 25250
20025 IF K=4 AND R=3 THEN GOTO 25230
20026 IF K=4 AND R=4 THEN GOTO 25250
20027 IF K=5 AND R=1 THEN GOTO 25310
20028 IF K=5 AND R=2 THEN GOTO 25310
20029 IF K=5 AND R=3 THEN GOTO 25310
20030 IF K=5 AND R=4 THEN GOTO 25310
25000 REM K=1 R=1
25002 A(KX+1,KY+0)=1
25004 A(KX+0,KY+1)=1
25006 A(KX+1,KY+1)=1
25008 A(KX+2,KY+1)=1
25010 KX=3:KY=0:K=LOS
25012 RETURN
25020 REM K=1 R=2
25022 A(KX+1,KY+0)=1
25024 A(KX+1,KY+1)=1
25026 A(KX+1,KY+2)=1
25028 A(KX+2,KY+1)=1
25030 KX=3:KY=0:K=LOS
25032 RETURN
25040 REM K=1 R=3
25042 A(KX+0,KY+1)=1
25044 A(KX+1,KY+1)=1
25046 A(KX+2,KY+1)=1
25048 A(KX+1,KY+2)=1
25050 KX=3:KY=0:K=LOS
25052 RETURN
25060 REM K=1 R=4
25062 A(KX+0,KY+1)=1
25064 A(KX+1,KY+0)=1
25066 A(KX+1,KY+1)=1
25068 A(KX+1,KY+2)=1
25070 KX=3:KY=0:K=LOS
25072 RETURN
25080 REM K=2 R=1
25082 A(KX+1,KY+0)=1
25084 A(KX+1,KY+1)=1
25086 A(KX+1,KY+2)=1
25088 A(KX+2,KY+2)=1:KX=3:KY=0:K=LOS:RETURN
25090 REM K=2 R=2
25092 A(KX+0,KY+1)=1
25094 A(KX+1,KY+1)=1
25096 A(KX+2,KY+1)=1
25098 A(KX+0,KY+2)=1
25100 KX=3:KY=0:K=LOS:RETURN
25110 REM K=2 R=3
25112 A(KX+1,KY+0)=1
25114 A(KX+1,KY+1)=1
25116 A(KX+1,KY+2)=1
25118 A(KX+0,KY+0)=1
25120 KX=3:KY=0:K=LOS:RETURN
25130 REM K=2 R=4
25132 A(KX+0,KY+1)=1
25134 A(KX+1,KY+1)=1
25136 A(KX+2,KY+1)=1
25138 A(KX+2,KY+0)=1
25140 KX=3:KY=0:K=LOS:RETURN
25150 REM K=3 R=1
25152 A(KX+1,KY+0)=1
25154 A(KX+1,KY+1)=1
25156 A(KX+1,KY+2)=1
25158 A(KX+0,KY+2)=1
25160 KX=3:KY=0:K=LOS:RETURN
25170 REM K=3 R=2
25172 A(KX+0,KY+1)=1
25174 A(KX+1,KY+1)=1
25176 A(KX+2,KY+1)=1
25178 A(KX+0,KY+0)=1
25180 KX=3:KY=0:K=LOS:RETURN
25190 REM K=3 R=3
25192 A(KX+1,KY+0)=1
25194 A(KX+1,KY+1)=1
25196 A(KX+1,KY+2)=1
25198 A(KX+2,KY+0)=1
25200 KX=3:KY=0:K=LOS:RETURN
25210 REM K=3 R=4
25212 A(KX+0,KY+1)=1
25214 A(KX+1,KY+1)=1
25216 A(KX+2,KY+1)=1
25218 A(KX+2,KY+2)=1
25220 KX=3:KY=0:K=LOS:RETURN
25230 REM K=4 R=1
25232 A(KX+0,KY+2)=1
25234 A(KX+1,KY+2)=1
25236 A(KX+1,KY+1)=1
25238 A(KX+2,KY+1)=1
25240 KX=3:KY=0:K=LOS:RETURN
25250 REM K=4 R=2
25252 A(KX+1,KY+0)=1
25254 A(KX+1,KY+1)=1
25256 A(KX+2,KY+1)=1
25258 A(KX+2,KY+2)=1
25260 KX=3:KY=0:K=LOS:RETURN
25310 REM K=5 R=1
25312 A(KX+0,KY+0)=1
25314 A(KX+1,KY+0)=1
25316 A(KX+0,KY+1)=1
25318 A(KX+1,KY+1)=1
25320 KX=3:KY=0:K=LOS:RETURN
30000 REM CZYSZCZENIE WIERSZY
30009 FOR Y=4 TO 19
30010 W=0
30011 FOR X=0 TO 9
30012 IF A(X,Y)=0 THEN W=1
30020 NEXT X
30021 IF W=0 THEN GOSUB 30060
30050 NEXT Y
30051 GOTO 30199
30060 REM OPUSC WIERSZ W DOL
30061 FOR WIERSZX=0 TO 9
30062 A(WIERSZX,Y)=0
30063 NEXT WIERSZX
30064 FOR WIERSZY=Y TO 4 STEP -1
30065 FOR ZX=0 TO 9
30066 A(ZX,WIERSZY)=A(ZX,WIERSZY-1)
30067 NEXT ZX
30068 NEXT WIERSZY
30069 SCORE=SCORE+100
30070 FOR QX=0 TO 9
30071 A(QX,0)=0:A(QX,1)=0:A(QX,2)=0:A(QX,3)=0:A(QX,4)=0
30072 NEXT QX
30198 RETURN
30199 REM RYSOWANIE EKRANU
30200 FOR Y=0 TO 19
30201 FOR X=0 TO 9
30203 POSITION X+14,Y
30204 IF A(X,Y)=1 THEN ? "á"
30205 IF A(X,Y)=0 THEN ? " "
30210 NEXT X
30211 NEXT Y
30300 FOR QX=0 TO 9
30301 A(QX,0)=0:A(QX,1)=0:A(QX,2)=0:A(QX,3)=0:A(QX,4)=0
30302 NEXT QX
30303 LOS=INT(RND(0)*5)+1
30304 POSITION 30,8:? " "
30305 POSITION 31,8:? " "
30306 POSITION 32,8:? " "
30307 POSITION 30,9:? " "
30308 POSITION 31,9:? " "
30309 POSITION 32,9:? " "
30310 POSITION 32,10:? " "
30311 POSITION 31,10:? " "
30312 POSITION 30,10:? " "
30313 IF LOS=1 THEN POSITION 31,8:? "á"
30314 IF LOS=1 THEN POSITION 30,9:? "á"
30315 IF LOS=1 THEN POSITION 31,9:? "á"
30316 IF LOS=1 THEN POSITION 32,9:? "á"
30317 IF LOS=2 THEN POSITION 31,8:? "á"
30318 IF LOS=2 THEN POSITION 31,9:? "á"
30319 IF LOS=2 THEN POSITION 31,10:? "á"
30320 IF LOS=2 THEN POSITION 32,10:? "á"
30321 IF LOS=3 THEN POSITION 31,8:? "á"
30322 IF LOS=3 THEN POSITION 31,9:? "á"
30323 IF LOS=3 THEN POSITION 31,10:? "á"
30324 IF LOS=3 THEN POSITION 30,10:? "á"
30325 IF LOS=4 THEN POSITION 30,10:? "á"
30326 IF LOS=4 THEN POSITION 31,10:? "á"
30327 IF LOS=4 THEN POSITION 31,9:? "á"
30328 IF LOS=4 THEN POSITION 32,9:? "á"
30329 IF LOS=5 THEN POSITION 30,9:? "á"
30330 IF LOS=5 THEN POSITION 31,9:? "á"
30331 IF LOS=5 THEN POSITION 30,10:? "á"
30332 IF LOS=5 THEN POSITION 31,10:? "á"
30333 POSITION 29,12:? "NEXT"
31000 RETURN
Perl
Very basic tetris. Use arrow keys for left and right (or 'h' and 'l'), up arrow for rotate (or 'r'), and down arrow for instant drop (or 'j'). <lang perl>#!/usr/bin/perl
use strict; use warnings; use Curses; use Term::ReadKey; use Time::HiRes qw( time ); use IO::Select;
my $delay = 1; my $width = 12; my $oneshort = $width - 1; my $g3 = qr/(..{$oneshort})/s; my $g4 = qr/(.{$oneshort})/s; my $below = qr/....{$oneshort}/s; my $height = 20; my $well = ( '|' . ' ' x $width . "|\n" ) x $height . '-' x($width + 2) . "\n"; my $piece; my $nexttime = time + $delay; my $sel = IO::Select->new( *STDIN );
sub transpose
{ local $_ = $well; $well = ; $well .= "\n" while s/^./ $well .= $&; /gem; }
sub place
{ substr $well, $width / 2 - 1 + ($width + 3) * $_, 4, shift for 0 .. 3; }
my %shape =
( I => [' O ', ' O ', ' O ', ' O '], J => [' ', ' ', 'OOO ', ' O '], L => [' ', ' ', ' OOO', ' O '], O => [' ', ' ', ' OO ', ' OO '], S => [' ', ' ', ' OO ', 'OO '], T => [' ', ' ', ' O ', 'OOO '], Z => [' ', ' ', ' OO ', ' OO'], );
sub add
{ if( $well =~ /^(. *.\n){4}/ ) { place $shape{$piece}->@*; $piece = (keys %shape)[rand keys %shape]; } else { die "end of game\n"; } }
sub rotate
{ s/ ${g3}OO $g3 OO/ O$1 OO$2 O / or # Z s/ O$g3 OO$g3 O / $1OO $2 OO/ or
s/ $g3 OO${g3}OO / O $1 OO$2 O/ or # S s/ O $g3 OO$g3 O/ $1 OO$2OO / or
s/ ${g3}OOO${g3}O /OO $1 O $2 O / or # L s/OO $g3 O $g3 O / $1 O$2OOO/ or s/ $g3 O${g3}OOO/ O $1 O $2 OO/ or s/ O $g3 O $g3 OO/ $1OOO$2O / or
s/ ${g3}OOO$g3 O/ O $1 O $2OO / or # J s/ O $g3 O ${g3}OO / $1O $2OOO/ or s/ ${g3}O ${g3}OOO/ OO$1 O $2 O / or s/ OO$g3 O $g3 O / $1OOO$2 O/ or
s/ $g3 O ${g3}OOO/ O $1 OO$2 O / or # T s/ O $g3 OO$g3 O / $1OOO$2 O / or s/ ${g3}OOO$g3 O / O $1OO $2 O / or s/ O ${g3}OO $g3 O / $1 O $2OOO/ or
s/ $g4 $g4 ${g4}OOOO/ O $1 O $2 O $3 O / or # I s/ O $g4 O $g4 O $g4 O / $1 $2 $3OOOO/ or s/O ${g4}O ${g4}O ${g4}O / $1 $2 $3OOOO/ or s/ O$g4 O$g4 O$g4 O/ $1 $2 $3OOOO/
for $well; }
sub step
{ if( $well =~ s/(?<=\|)#{$width}(?=\|)/ '=' x $width /e ) # full row? { transpose(); $well =~ s/(.*)=/ $1/g; # remove full row transpose(); } elsif( $well !~ /O/ ) # any O ? { add(); } elsif( not down() ) # can't move down { $well =~ tr/O/#/; # convert to # } }
sub down
{ $well !~ /O/ || $well =~ /O$below[#-]/ and return 0; transpose(); $well =~ s/(O+) / $1/g; transpose(); return 1; }
sub drop { 1 while down() }
sub right { $well =~ /O[#|]/ or $well =~ s/(O+) / $1/g }
sub left { $well =~ /[#|]O/ or $well =~ s/ (O+)/$1 /g }
sub draw
{ addstr( 2, 0, ($well . "\n\n") =~ s/^/' ' x 20 /gmer); my $row = 4; addstr( $row++, 10, $_ ) for @{ $shape{$piece} }; addstr( 22, 0, ' ' ); refresh; };
sub eventloop
{ while( 1 ) { my $time = time; my $delta = $nexttime - $time; if( $delta <= 0 ) { step(); $nexttime = time + $delay; } else { draw(); for ( $sel->can_read( $delta ) ) { sysread *STDIN, $_, 1024; for ( /\e(?:\[M...|[O\[][0-9;]*[A-~])|./gs ) # keep esc seq together { /^(?:q|\e)\z/i ? die "quit\n" : /^(?:h|\e\[D)\z/ ? left() : /^(?:l|\e\[C)\z/ ? right() : /^(?:r|\e\[A)\z/ ? rotate() : /^(?:[j ]|\e\[B)\z/ ? drop() : 0; } } } } }
$piece = (keys %shape)[rand keys %shape]; initscr(); clear; ReadMode 'cbreak'; eval { eventloop() }; my $errormsg = $@; ReadMode 'restore'; endwin(); print $errormsg;</lang>
Phix
See Tetris/Phix.
Python
Wren
See Tetris/Wren