30 SCREEN 0:CLS:PRINT SPC(10);"Внимание!":PRINT "Перед Вами игра ";CHR$(34);"Бегущие человечки";CHR$(34):PRINT "Зеленый человечек управляется клавишами перемещения курсора, а синий движется по случайной траектории." 40 PRINT "При их столкновении возникает объект, движущийся по окружности.":PRINT 50 PRINT"Цель игры - за определенное время сделать как можно больше столкновений человечков." 60 PRINT "Скорость движения бегущих человечков характеризуется следующими величинами:":PRINT TAB(2);"a)-шагом перемещения":PRINT TAB(2);"b)-задержкой изображения":INPUT"Чему равен шаг";U1:INPUT"Чему равна задержка";U2 80 DATA 6,9,9,9,9,9,6,0,2,2,6,2,2,2,7,0,6,9,9,2,4,8,15,0,6,9,1,2,1,9,6,0,9,9,9,15,1,1,1,0,15,8,8,15,1,1,15,0,6,9,8,14,9,9,6,0,15,1,1,2,4,4,4,0,6,9,9,6,9,9,6,0,6,9,9,7,1,9,6,0:'Информация о секундомере. 90 DATA 48,48,94,123,28,55,32,96,48,48 ,28,122,26,56,40,4,48,48,24,28,24,48,60,24,48,48,28,122,26,56,40,20,12,12,122,222,56,236,4,6,12,12,56,94,88,28,20,32,12,12,24,56,24,12,60,24,12,12,56,94,88,28,20,40:'Информация о бегущих человечках. 100 DATA 1,7,11,31,30,57,49,33,33,51,30 ,15,21,16,11,7,128,224,208,184,252,156 ,140,132,132,204,120,240,104,8,80,224:'Информация об объекте, движущемся по окружности. 110 COLOR 1,15,8:SCREEN 2,2,1 'Установка экрана. 120 RESTORE 80:FOR Z=0 TO 9:GOSUB 300:SPRITE$(Z)=Y$:NEXT:S1=0:S2=0:S3=0:S4=0:GOSUB 230 'Сформированы образы спрайтов секундомера. 130 INTERVAL ON:ON INTERVAL=60 GOSUB 190 'Изменение состояния секундомера через каждую секунду. 140 RESTORE 90:FOR Z=20 TO 27:GOSUB 300:SPRITE$(Z)=Y$:NEXT'Сформированы образы бегущих человечков, каждый из которых представляет смену четырех кадров. 150 T=1:FA=RND(-TIME):ON SPRITE GOSUB 250 'Установлен режим перехода к подпрограмме при столкновении спрайтов. 160 SPRITE ON:FOR I=24 TO 27:GOSUB 340:PUT SPRITE 21,(T-2+WX,140+WY),4,I:FOR M=0 TO U2:NEXT:PUT SPRITE 22,(249+XW*U1,140+YW*U1),2,SA:FOR M=0 TO U2:NEXT M,I:IF U1<=0 THEN T=1 ELSE T=T+1 170 GOTO 160 'Конец основной программы. 180 'Подпрограмма вывода секундомера на экран. 190 IF S4<=9 THEN S4=S4+1 200 IF S4=10 THEN IF S3<=6 THEN S3=S3+1:S4=0 210 IF S3=6 THEN IF S2<=9 THEN S2=S2+1:S3=0:S4=0 220 IF S2=10 THEN IF S1<6 THEN S1=S1+1:S2=0:S3=0:S4=0 ELSE S1=0:S2=0:S3=0:S4=0 230 PUT SPRITE 1,(10,10),13,S1:PUT SPRITE 2,STEP(8,0),13,S2:LINE(33,16)-(34,17),13,BF:PUT SPRITE 3,(36,10),13,S3:PUT SPRITE 4,STEP(8,0),13,S4:RETURN 240 'Подпрограмма обработки столкновения спрайтов. 250 T=T+8:SPRITE OFF:RESTORE 100:GOSUB 310:SPRITE$(11)=Y$'Сформирован образ нового объекта. 260 PUT SPRITE 21,(20,140),15,24:PUT SPRITE 22,(227,140),15,20 'Бегущие человечки исчезают. 270 DEFFN B(X)=SQR(10^2-(X-10)^2):FOR D=1 TO 20:PUT SPRITE 11,(105+D,85+FNB(D)),1,11:NEXT:FOR D=20 TO 1 STEP -1:PUT SPRITE 11,(105+D,85-FNB(D)),1,11:NEXT: 'Движение объекта по окружности. 280 PUT SPRITE 11,(0,0),15,11:RETURN'Объект исчезает и "прячется" за спрайтами секундомера. 290 'Подпрограммы формирования образов спрайтов. 300 Y$="":FOR I=1 TO 8:READ R:Y$=Y$+CHR$(R):NEXT:RETURN 310 Y$="":FOR I=1 TO 32:READ R:Y$=Y$+CHR$(R):NEXT:RETURN 320 'Подпрограмма перемещения спрайтов. 330 'Управление зеленым спрайтом клавишами управления курсором. 340 CJ=STICK(0):IF CJ=0 THEN XW=XW+1:YW=YW+1 350 IF CJ=3 OR CJ=7 THEN YW=YW+1 360 IF CJ=4 OR CJ=5 OR CJ=6 THEN YW=YW+1 ELSE YW=YW-1 370 IF CJ=1 OR CJ=5 THEN XW=XW+1 380 IF CJ=2 OR CJ=3 OR CJ=4 THEN XW=XW+1 ELSE XW=XW-1 390 IF CJ=2 OR CJ=3 OR CJ=4 THEN SA=I ELSE SA=I-4 400 'Случайное перемещение синего спрайта и блокировка его выхода за пределы экрана по вертикали. 410 IF U1=0 THEN WX=0:WY=0:RETURN 420 WX=WX+INT(2*U1*RND(1)) 430 IF 140+WY>=183-U1 THEN WY=WY-INT(U1*RND(1)):RETURN 440 IF 140+WY<=U1 THEN WY=WY+INT(U1*RND(1)):RETURN 450 WY=WY+INT((2*U1+1)*RND(1)-U1):RETURN