Следуйте видео ниже, чтобы узнать, как установить наш сайт как веб-приложение на главный экран.
Примечание: Эта функция может быть недоступна в некоторых браузерах.
10 BORDER 0: PAPER 0: INK 7: CLS
20 DIM b(10,20): DIM s(7,3,3): DIM c(7)
30 FOR f=1 TO 7: READ c(f): FOR y=0 TO 3: FOR x=0 TO 3: READ s(f,y,x): NEXT x: NEXT y: NEXT f
40 DATA 4,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0
50 DATA 3,0,0,0,0,0,1,1,0,0,1,1,0,0,0,0,0
60 DATA 3,0,0,0,0,0,1,1,0,0,1,1,0,0,0,0,0
70 DATA 3,0,0,0,0,0,1,1,0,0,1,1,0,0,0,0,0
80 DATA 5,0,0,0,0,1,1,0,0,1,1,0,0,0,0,0,0
90 DATA 5,0,0,0,0,0,1,1,0,1,1,0,0,0,0,0,0
100 DATA 6,0,0,0,0,1,0,0,0,1,1,1,0,0,0,0,0
110 LET score=0: LET level=1: LET lines=0: LET game=1
120 PRINT AT 0,0;"SCORE:";score
130 PRINT AT 1,0;"LEVEL:";level
140 PRINT AT 2,0;"LINES:";lines
150 PRINT AT 4,0;"CONTROLS:"
160 PRINT AT 5,0;"A - LEFT"
170 PRINT AT 6,0;"D - RIGHT"
180 PRINT AT 7,0;"W - ROTATE"
190 PRINT AT 8,0;"S - DOWN"
200 PRINT AT 10,0;"P - PAUSE"
210 REM Рисуем игровое поле
220 FOR x=1 TO 10
230 FOR y=1 TO 20
240 PLOT (x-1)*8+32,(y-1)*8+32, 0
250 NEXT y
260 NEXT x
270 LET px=5: LET py=0: LET p=INT (RND*7)+1: LET r=0: LET speed=50
280 GO SUB 1000
290 IF NOT FN c(px,py+1) THEN LET py=py+1: GO SUB 2000: GO TO 280
300 GO SUB 3000
310 REM Проверяем заполненные линии
320 FOR y=20 TO 1 STEP -1
330 LET full=1
340 FOR x=1 TO 10
350 IF b(x,y)=0 THEN LET full=0
360 NEXT x
370 IF full THEN GO SUB 4000
380 NEXT y
390 REM Проверка конца игры
400 FOR x=1 TO 10
410 IF b(x,1)=1 THEN GO SUB 5000
420 NEXT x
430 REM Управление
440 LET k$=INKEY$
450 IF k$="a" AND FN c(px-1,py)=0 THEN GO SUB 2000: LET px=px-1: GO SUB 1000
460 IF k$="d" AND FN c(px+1,py)=0 THEN GO SUB 2000: LET px=px+1: GO SUB 1000
470 IF k$="w" THEN GO SUB 2000: LET r=(r+1) MOD 4: IF FN c(px,py) THEN LET r=(r+3) MOD 4
480 IF k$="w" THEN GO SUB 1000
490 IF k$="s" AND FN c(px,py+1)=0 THEN GO SUB 2000: LET py=py+1: GO SUB 1000
500 IF k$="p" THEN PAUSE 0: PRINT AT 12,0;"PAUSED": PAUSE 0: PRINT AT 12,0;" "
510 REM Задержка для скорости падения
520 FOR f=1 TO speed-level*5: NEXT f
530 IF game THEN GO TO 270
540 STOP
1000 REM Рисуем фигуру
1010 FOR y=0 TO 3
1020 FOR x=0 TO 3
1030 IF s(p,r,y,x) THEN
1040 PLOT (px+x-1)*8+32,(py+y-1)*8+32, c(p)
1050 END IF
1060 NEXT x
1070 NEXT y
1080 RETURN
2000 REM Стираем фигуру
2010 FOR y=0 TO 3
2020 FOR x=0 TO 3
2030 IF s(p,r,y,x) THEN
2040 PLOT (px+x-1)*8+32,(py+y-1)*8+32, 0
2050 END IF
2060 NEXT x
2070 NEXT y
2080 RETURN
3000 REM Фиксируем фигуру на поле
3010 FOR y=0 TO 3
3020 FOR x=0 TO 3
3030 IF s(p,r,y,x) THEN
3040 LET b(px+x,py+y)=1
3050 PLOT (px+x-1)*8+32,(py+y-1)*8+32, c(p)
3060 END IF
3070 NEXT x
3080 NEXT y
3090 RETURN
4000 REM Удаляем заполненную линию
4010 BEEP 0.1,20
4020 LET score=score+100*level
4030 LET lines=lines+1
4040 IF lines MOD 10=0 THEN LET level=level+1: BEEP 0.2,30
4050 FOR yy=y TO 2 STEP -1
4060 FOR xx=1 TO 10
4070 LET b(xx,yy)=b(xx,yy-1)
4080 IF b(xx,yy) THEN
4090 PLOT (xx-1)*8+32,(yy-1)*8+32, 7
4100 ELSE
4110 PLOT (xx-1)*8+32,(yy-1)*8+32, 0
4120 END IF
4130 NEXT xx
4140 NEXT yy
4150 FOR xx=1 TO 10
4160 LET b(xx,1)=0
4170 PLOT (xx-1)*8+32,0, 0
4180 NEXT xx
4190 PRINT AT 0,6;" "
4200 PRINT AT 1,6;" "
4210 PRINT AT 2,6;" "
4220 PRINT AT 0,6;score
4230 PRINT AT 1,6;level
4240 PRINT AT 2,6;lines
4250 RETURN
5000 REM Конец игры
5010 LET game=0
5020 BEEP 0.5,10: BEEP 0.5,5
5030 PRINT AT 12,0;"GAME OVER!"
5040 PRINT AT 13,0;"FINAL SCORE:";score
5050 PRINT AT 15,0;"PRESS ANY KEY"
5060 PAUSE 0
5070 RETURN
9000 DEF FN c(x,y)
9010 FOR yy=0 TO 3
9020 FOR xx=0 TO 3
9030 IF s(p,r,yy,xx) THEN
9040 IF x+xx<1 OR x+xx>10 OR y+yy>20 THEN LET FN c=1: RETURN
9050 IF b(x+xx,y+yy) THEN LET FN c=1: RETURN
9060 END IF
9070 NEXT xx
9080 NEXT yy
9090 LET FN c=0