7.6. ИГРА «ЗМЕЯ» Файл SNAKE.BAS

DEPINT I-K

CLS 'очистить экран

•ihead = 19: :)head = 13: itail = ihead: ]tail = ]head + 1 drctn% = 0 'начальное направление движения length% = 1 'начальное значение длины count% = 4 'начальное значение счетчика RANDOMIZE TIMER 'выбор начального значения случайного числа DEF SEG = &НВ800 'установка сегмента ОЗУ экрана FOR i=0 TO 79 'построение горизонтальных границ кадра POKE 2*1, 220: POKE 2*1+1, 4 POKE 2 * l + 3840, 220: POKE 2 * l + 3841, 4 NEXT l

FOR l = l TO 24 'построение вертикальных границ кадра POKE 160 * l, 219: POKE 160 * l + 1, 4 POKE 160 * l + 158, 219: POKE 160 * l + 159, 4 NEXT l khead = 2156

POKE khead, 220: POKE khead + 1, 14 'запись "головы" ktail = 2316

POKE ktail, 219: POKE ktail + 1, 6 'запись "хвоста" DO 'начало цикла игры

DEF SEG = 0 'установка сегмента нулевой страницы oldt == РЕЕК(&Н46С)

'чтение младшего байта счетчика времени DO 'начало цикла задержки по времени delta» = РЕЕК(&Н46С) - old%

'приращение младшего байта счетчика времени IF delta% < О THEN delta% = delta% + 256

'коррекция приращения LOOP UNTIL delta% >= 4

'конец цикла задержки по времени v$ •= INKEY$ 'чтение клавиатуры IF LEN(v$) > 1 THEN v$ = RIGHT$(v$, 1)

'выделение второго символа DO: empty$ = INKEY$: LOOP UNTIL empty$ = ""

'очистка буфера клавиатуры DEF SEG = 6HB800 'установка сегмента ОЗУ экрана POKE khead +1, 6 'запись атрибута коричневого цвета IF drctn% = 2 THEN POKE khead, 219

'запись кода "туловища"

SELECT CASE v$ 'выбор по значению символа CASE "M" 'выбор по стрелке направо

drctn% = drctn% + 1: IF drctn% > 3 THEN drctn% = 0 CASE "К" 'выбор по стрелке налево

drctn% = drctn% - 1: IF drctn% < 0 THEN drctn% = 3 END SELECT

SELECT CASE drctn% 'продвижение "головы" CASE 0 'движение вверх POKE khead, 219