Snake by TMCD677
Змейка
TMCD677 (tvgames.me)
Локомотив БЕЙСИК v1.1
ПУР-120
Введение
------------
Моя первая попытка написать полную игру, ограниченную 10 строками. Chosen Locomotive BASIC (Amstrad CPC)
для долгого времени. Довольно простая игра, которую многие помнят по своим старым мобильным телефонам Nokia в начале 2000-х. Код не превышает 800 символов, но пара строк содержит более 80 символов, следовательно, – PUR 120.
Игра легко будет соответствовать PUR 80 практически на любом другом 8-битном диалекте.
Элементы управления
--------
Перед запуском игры убедитесь, что ваша клавиатура находится в режиме нижнего регистра (по умолчанию).
UP - 'p'
DOWN - 'l'
LEFT - 'z'
RIGHT - 'x'
Инструкции
------------
Игра начинается с маленькой односегментной змеи в центре экрана, которая автоматически перемещается
влево. Ваша задача состоит в том, чтобы направлять эту змею по экрану, поедая числа, которые будут случайным образом
появляться на экране. Каждый раз, когда вы съедаете определенное количество змей, тело вашей змеи увеличивается на это количество сегментов.
Однако нужно быть осторожным. Змея не может выходить за края экрана или пересекать собственный
путь. Ударьте по краю экрана или растущему телу змеи, и ИГРА ОКОНЧЕНА! Осторожно! Верх
экрана находится на линии 2, ниже линии очков. Кроме того, каждый раз, когда вы съедаете определенное количество змей,
ускоряется на эту величину.
По окончании игры нажмите любую клавишучтобы вернуться в Locomotive BASIC и выполнить:
ЗАПУСТИТЬ
для другой игры.
Подсчет очков
-------
Змейка – это игра, в которой нужно набрать большое количество очков. Кто продержится дольше всех и съест больше всего чисел, тот наберет больше
счетов и победит. Вы получаете 10 очков каждый раз, когда змея движется, и значение любых чисел, которые змея съедает.
Дисковый каталог
--------------
Snake1.BAS - Исходный 5-строчный концептуальный тест с перемещением тела змеи по экрану
Snake2 .BAS - 1-я попытка длинного листинга; змея не двигается; числа появляются случайным образом
Snake3.BAS - 10Liner версия Snake2
Snake4.BAS - 10Liner. Отображает голову змеи, сначала случайное число, затем нажимает GAME OVER
Snake5.BAS - Полный аннотированный список. Случайные числа и рост змейки не работают
Snake6.BAS - Полностью рабочая игра, окончательный полный аннотированный листинг — см. список ниже
Snake7.BAS - Полностью рабочая игра. Змея 6 сгущена. Статусы REM удалены, а имена переменных сокращены
Snake8.BAS - 10Liner. Полностью рабочая игра. Окончательная полностью рабочая запись — см. список ниже
Полностью аннотированный список
-----------------------
10 REM VARIABLES
20 DIM path(500,2) : стек координат пути тела змеи REM
30 LET tsp=1 : REM хвостовой указатель стека
40 LET hsp=1 : указатель стека головки REM
50 LET x=10 : ось x головки REM co-ордината
60 LET y=10 : Координата головы REM по оси Y
70 LET i$="" : ввод пользователя REM
80 LET score=-10 : REM
90 LET Grow=0 : Количество REM для роста змеи на
100 LET c$="" : Содержание экрана REM
110 LET w=750 : Время ожидания REM/, скорость змеи
> : REM случайное число
130 LET d$="z" : REM текущее направление
140 LET nx=0 : REM случайное число /> координата x-ось 0 LET ny=0 : Координата по оси Y случайного числа REM
160 LET temp$="" : Содержимое экрана REM
170 LET flag=1 : Флаг отображения случайного числа REM
200 rem setup
210 Mode 0: REM 20 символов x 25 линий
220 Ink 0,1: REM Фоновый цвет (синий)
230 чернил 1,24: rem snake цвет (желтый)
240 INK 2,26 : REM счет цвет (белый)
250 INK 3,6 : REM номер цвет (красный)
260 INK 4,6,26 : : над цветом (мигающий красный+белый)
300 REM START GAME LOOP
310 LET path(hsp,1)=x : REM сохраняет головку по оси x в стеке
320 LET path(hsp,2)=y : REM сохраняет головку y -ось в стеке
330 LET hsp=hsp+1 : REM увеличить указатель на начало стека
340 IF hsp>500 THEN hsp=1 : REM, если точка начала стека в конце стека перемещается в начало
500 REM DISPLAY
510 LOCATE x,y : REM перейти к новой позиции головки
520 PEN 1 : REM использовать желтые чернила
530 PRINT "*"; : REM показать змеиную голову
540 LET score=score+10 : REM добавить 10 к счету за каждый ход
550 PEN 2 : REM использовать белые чернила
560 LOCATE 12,1 отображаемая позиция
570 PRINT score; : Оценка обновления REM
580 FOR s=1 TO w:NEXT s : REM ожидание скорости змеи
590 IF Grow<>0 THEN LET Grow=grow - 1 ELSE LOCATE path(tsp,1), path(tsp,2):PRINT " ";:LET tsp=tsp+1:IF tsp>500 THEN LET tsp=1
595 REM, если змея не растет, удалить тело из текущего положения хвоста
700 REM ВВОД И ПЕРЕМЕЩЕНИЕ ПОЛЬЗОВАТЕЛЯ
710 LET i$=INKEY$ : REM получить ввод данных пользователем
720 IF i$<>"" THEN LET d$=i$ : REM, если обновление обнаружено при вводе направление
730 IF d$="z" THEN LET x=x-1 : REM, если пользователь нажимает "z", перемещается влево
740 IF d$="x" THEN LET x=x+1 : REM, если пользователь нажимает "x", перемещается вправо
750 IF d$="p" THEN LET y=y-1 : REM, если пользователь нажимает "p", перемещается вверх
760 IF d$="l" THEN LET y=y+1 : REM, если пользователь нажимает "l", перемещается вниз
800 REM ОБНАРУЖЕНИЕ Столкновений
810 ЕСЛИ x<1 ИЛИ x>20 ИЛИ y<2 ИЛИ y>25 ТОГДА ПЕРЕЙТИ К1000
815 REM закончить игру при попадании в край экрана
820 LOCATE x,y : REM перейти к следующему положению головы
830 LET temp$= текущий символ COPYCHR$(#0) получить любой в этой позиции
840 IF temp$="*" THEN GOTO 1000: REM конец игры, если змеиная голова касается тела
850 IF temp$<>" " THEN LET Grow=n:LET score=score+ n:LET w=w-n:LET flag=1
855 REM, если голова находит число, добавить к счету и вырастить змейку
900 REM RANDOM NUMBERS
910 IF flag=0 THEN GOTO 300 : REM, если не собрано следующее число
920 LET n=INT((RND(1)*9)+1) : REM выберите случайное число (1..9)
930 LET nx=INT((RND(1)*20)+1) : REM выбирает случайную координату x для случайного числа
940 LET ny=INT ((RND(1)*25)+1) : REM выберите случайную координату y для случайного числа
950 IF ny=1 THEN GOTO 930 : REM, если y-координата на счетной линии выберите другую
960 LOCATE nx,ny : REM перейти к позиции выбранного случайного числа
970 LET temp$=COPYCHR$(#0) : REM получить любые символы, уже находящиеся там
980 IF temp$="*" THEN GOTO 930 : REM выбирает новое место, если там есть тело змеи
990 PEN 3:PRINT n;: LET flag=0 : REM отображает новое случайное число, если необходимо
999 GOTO 300 : REM вернуться к началу игрового цикла
1000 REM GAME OVER
1010 PEN 4 : REM используйте мигающие чернила
1020 НАЙТИ 2,10: REM центральное сообщение на экране
1030 PRINT "G A M E O V E R";: REM отобразить сообщение game over
1040 LET i$=inkey$ : REM получить ввод пользователя
1050 IF i$="" THEN GOTO 1040 : REM продолжает ждать, пока пользователь не нажмет клавишу
1060 PEN 1 : REM использует цвет чернил ОС по умолчанию
Последний список 10 вкладышей
-----------------------
1 DIM p(500,2):t=1:h=1:x=10:y=10:s=-10:m=750:d$="z":f=1:MODE 0 :INK 2,26:INK 3,6:INK 4,6,26
2 p(h,1)=x:p(h,2)=y:h=h+1:LOCATE x,y :PEN 1:?"*";:s=s+10:PEN 2:LOCATE 12,1:? s;:FOR z=1 TO m:NEXT:IF h>500 THEN h=1
3 IF g<>0 THEN g=g-1 ИНАЧЕ НАЙТИ p(t,1),p(t,2 ):?" ";: t=t+1:IF t>500 THEN t=1
4 i$=INKEY$:IF i$<>"" THEN d$=i$
5 ЕСЛИ d$="z" ТО x=x-1 ИНАЧЕ ЕСЛИ d$="x" ТО x=x+1 ИНАЧЕ ЕСЛИ d$="p" ТО y=y-1 ИНАЧЕ ЕСЛИ d$="l" ТО y=y+1
6 ЕСЛИ x<1 ИЛИ x>20 ИЛИ y<2 ИЛИ y>25 ТО ПЕРЕЙТИ К 10
7 НАЙТИ x,y:c$=COPYCHR$(#0):IF c$="*" THEN GOTO 10 ELSE IF c$<>" " THEN g=g+n:s=s+n:m=m-n:f=1
8 IF f=0 THEN GO TO 2 ELSE n=INT((RND(1)*9)+1):v=INT((RND(1)*20)+1):w=INT((RND(1)*25)+1):IF w =1 ТОГДА ПЕРЕЙТИ К 8
9 НАЙТИ v,w:c$=COPYCHR$(#0):IF c$="*" ТОГДА ПЕРЕЙТИ К 8 ЕЩЕ ПЕРО 3:? n;:f=0:ПЕРЕХОД К 2
10 ПЕРО 4:НАЙТИ 2,10:?"G A M E O V E R";:i$=inkey$:IF i$="" ТОГДА ПЕРЕЙТИ К 10 ЕЩЕ ПЕРУ 1
Как скачать Snake by TMCD677 через торрент
Всего несколько простых шагов:
- Устанавливаем программу μTorrent, через которую мы будем скачивать торренты
- Выбираем и скачиваем подходящий торрент-файл репака Snake by TMCD677
- Двойным кликом открываем скаченный файл, программа μTorrent запустится автоматически и предложит выбрать место для сохранения дистрибутива.
- После того как репак скачается, запускайте его. Начнется установка и... это все, приятной игры!