Create a playable Tetris game.

Tetris is a draft programming task. It is not yet considered ready to be promoted as a complete task, for reasons that should be found in its talk page.
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

See Tetris/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

See Tetris/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').

#!/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;


Phix

See Tetris/Phix.

Python

See Python implementation of Tetris included with Raspbian

VBScript

A Tetris in VBScript i not possible as it can't read single keystroes.

Wren

See Tetris/Wren