ГОРОДКИ Аналогичная игра была на «SPECTRUM», но не столь убогая, конечно. Играть ес-но на «TURBO». Просит ввести скорость вращения биты. Чем больше введенное число, тем меньше скорость, максимальная скорость при 0. Управление: «2» - бита вверх; «.» - бита вниз; «EXE» - бросить биту. Другие кнопки нажимать нельзя, т.к. управление передается по вычисляемому, на основе ASCI KEY, адресу. Игра и так не сильно шустрит, если добавить проверку нажатия допустимых клавиш – затормозит еще больше. 1 VAC:B$="ГОРОДКИ": FOR X=1 TO 28:A=RAN#*7+1:CSR A:PRINT GETC(B$,A); 2 $=$+"1":NEXT X:CSR 9:INPUT "СКОРОСТЬ",B:PRINT CHR 127; 3 FOR I=1 TO 28:IF GETC ($,I)#"1"; NEXT I:PRINT "ОЧКИ:";INT (1e5/M/U):END 4 S=57:V=0 5 FOR K=0 TO 3:X=SGN K:Y=SGN (K-2):L=H-Y:F=S-X:CSR,:FOR Z=1 TO 3 6 DRAW F,L:IF F<4;IF F>=0;IF L>=0;IF L<7 THEN 99 7 L=L+Y:F=F+X:NEXT Z:FOR A=1 TO B:IF V=0 THEN 9+ASCI KEY 9 NEXT A:U=U+1:S=S-V:NEXT K:IF S<0 THEN 3:GOTO 5 13 V=3:M=M+1:GOTO 9 55 H=H-1:GOTO 9 59 H=H+1:GOTO 9 99 R=7*F+L:$=MID(1,R)+CHR 1+MID (R+2,27-R):DRAWC F,L:GOTO 7 Тоже самое, но с комментариями. 1 VAC: B$="ГОРОДКИ": FOR X=1 TO 28: A=RAN#*7+1: CSR A: PRINT GETC(B$,A); Рисует заставку 2 $=$+"1": NEXT X: CSR 9: INPUT "СКОРОСТЬ",B: Влияет на скорость вращения биты, от 0 и выше. PRINT CHR 127; 3 FOR I=1 TO 28: Проверяет, все ли городки выбиты. Каждый символ IF GETC ($,I)#"1"; в $ соответствует определенному битку. Пока этот NEXT I: символ «1» - биток не выбит. PRINT "ОЧКИ:";INT (1e5/M/U): Очки обратно пропорциональны кол-ву бросков и времени игры END Если все выбито - это конец. 4 S=57: S- горизонтальная координата биты V=0 V- прирост горизонтальной координаты 5 FOR K=0 TO 3: Вращает биту X=SGN K: Вычисляет координаты каждой точки биты Y=SGN (K-2): L=H-Y: F=S-X: CSR,: FOR Z=1 TO 3 Рисует биту 6 DRAW F,L: IF F<4; Проверка, находится ли бита в городе IF F>=0; IF L>=0; IF L<7 THEN 99 7 L=L+Y: F=F+X: NEXT Z: FOR A=1 TO B: Опрос клавиатуры, пока бита не брошена (V=0) IF V=0 THEN 9+ASCI KEY 9 NEXT A: U=U+1: U– пропорционально продолжительности игры S=S-V: S- горизонтальная координата биты NEXT K: IF S<0 THEN 3: GOTO 5 13 V=3: Нажали «EXE», бита брошена, горизонтальная M=M+1: координата биты- S, начинает уменьшаться на V GOTO 9 M- количество бросков 55 H=H-1: Нажали «.», уменьшилась вертикальная GOTO 9 координата биты- H 59 H=H+1: Нажали «2», увеличилась вертикальная GOTO 9 координата биты- H 99 R=7*F+L: Вычисляется позиция «выбитого» символа в $. $=MID(1,R)+CHR 1+MID (R+2,27-R): Из $ удаляется то, что «выбито» DRAWC F,L: GOTO 7 Кочмурадов Андрей Kochmuradov@mail.ru