Игра "Змейка" ТОЛЬКО для МК85М v. 1.0 1 PRINT "Змейка" 10 DEFM 420: G=-1: A=1: C=26: D=3: FOR I=0 TO 420: Z(I)=0: NEXT I 20 FOR I=0 TO 4: DRAW 26+I,3: Z(206+I)=A: NEXT I 30 G=G+1 40 E=INT(RAN#*59): F=INT(RAN#*6): IF Z(E+60*F)>0 THEN 40 50 DRAW E,F 60 IF A=1; X=X+1: IF X=60 THEN 500 70 IF A=2; Y=Y+1: IF Y=7 THEN 500 80 IF A=3; X=X-1: IF X=-1 THEN 500 90 IF A=4; Y=Y-1: IF Y=-1 THEN 500 100 IF Z(X+60*Y)>0 THEN 500 110 DRAW X,Y 120 B=ASCIKEY: IF B=50; IF A=\2; A=4 =\ - "НЕ РАВНО" 130 IF B=54; IF A=\3; A=1 140 IF B=56; IF A=\4; A=2 150 IF B=52; IF A=\1; A=3 155 Z(X+60*Y)=A 160 IF X=E; IF Y=F THEN 30 170 DRAWC C,D: IF Z(C+60*D)=1; Z(C+60*D)=0: C=C+1: GOTO 60 180 IF Z(C+60*D)=2; Z(C+60*D)=0: D=D+1: GOTO 60 190 IF Z(C+60*D)=3; Z(C+60*D)=0: C=C-1: GOTO 60 200 IF Z(C+60*D)=4; Z(C+60*D)=0: D=D-1: GOTO 60 500 PRINT "Game over. score-";G 510 DEFM 0 Управление осуществляется клавишами 2,8,4,6 - соответственно, направление движения. Нельзя ударятся о край (по "кромке" ползать можно) и есть самого себя. Лучше работать в "+" Программа только для МК85М, или для МК85 с ОЗУ не менее 6 кб, т.к. использует 420 ячеек памяти. Сначала немножко тупит, поскольку очищает все ячейки, иначе будут ошибки. А еще у меня при запуске другой программы эта стала глючить - некоторые строки пропадают, так что по ходу лучше ее на "пустой" комп загружать. v. 1.2 1 PRINT "Змейка": DEFM 420 10 VAC: G=-1: A=1: C=26: D=3: X=30: Y=3 20 FOR I=0 TO 4: DRAW 26+I,3: Z(206+I)=A: NEXT I: 30 G=G+1 40 E=INT(RAN#*59): F=INT(RAN#*6): IF Z(E+60*F)>0 THEN 40 50 DRAW E,F 60 GOTO 55+A*10 65 X=X+1: IF X=60 THEN 500 67 GOTO 100 75 Y=Y+1: IF Y=7 THEN 500 77 GOTO 100 85 X=X-1: IF X=-1 THEN 500 87 GOTO 100 95 Y=Y-1: IF Y=-1 THEN 500 100 IF Z(X+60*Y)>0 THEN 500 110 DRAW X,Y 120 B=ASCIKEY: IF B=50; IF A=\2; A=4 =\ - "НЕ РАВНО" 130 IF B=54; IF A=\3; A=1 140 IF B=56; IF A=\4; A=2 150 IF B=52; IF A=\1; A=3 155 Z(X+60*Y)=A 160 IF X=E; IF Y=F THEN 30 170 DRAWC C,D: H=C+60*D: GOTO 170+Z(H)*10 180 Z(H)=0: C=C+1: GOTO 60 190 Z(H)=0: D=D+1: GOTO 60 200 Z(H)=0: C=C-1: GOTO 60 210 Z(H)=0: D=D-1: GOTO 60 500 PRINT "Game over. score-";G 510 INPUT "Repeat",$:IF $="Y" THEN 10 520 DEFM 0 Version 1.0 5.02.2002 Управление осуществляется клавишами 2,8,4,6 - соответственно, направление движения. Нельзя ударятся о край (по "кромке" ползать можно) и есть самого себя. Лучше работать в "+" (без него она вАще не ползает :-) ) Программа только для МК85М, или для МК85 с ОЗУ не менее 6 кб, т.к. использует 420 ячеек памяти (3360 шагов). Сначала немножко тупит, поскольку очищает все ячейки, иначе будут ошибки. А еще у меня при запуске другой программы эта стала глючить - некоторые строки пропадают, так что по ходу лучше ее на "пустой" комп загружать. Version 1.2 6.02.2002 - убрана тупизна в начале, программа теперь запускается мгновенно - добавлена возможность повтора игры - змейка ползает шустрее, т.к. условные операторы IF заменены на без- условные GOTO, которые работают быстрее. - программа стала меньше занимать, теперь ее размер - 510 шагов Version 1.25 7.02.2002 изменить строку 120 и добавить 125: 120 B=ASCIKEY: IF B=0 THEN 155 125 IF B=50; IF A=\2; A=4 НЕ ПРОВЕРЯЛ НА МК, но должно работать на 20% быстрее Насчет работы игры на МК85: единственное, что можно сделать - уменьшить программу за счет описательных строк (1, 500-520) и уменьшить поле до 12-13 точек по горизонтали (по вертикали уменьшать бесполезно, и так негде развернуться), изменив константы в программе. Тем самым можно поменять количество шагов памяти, которое требуется. Их необходимо по числу клеток х 8. Например, программа занимает 490 шагов (не проверял, не знаю), 1221-490=731 шагов 731/8=91 клетка. При высоте 7 клеток ширина поля будет 91/7=13. Значит пишем DEFM 91 и изменяем 59 на 12, 60 на 13 во всех строках. Я попытался написать драйвер для использования текстовых массивов (т.е. брать по 7 значений на один элемент массива), но он во-первых очень медленным оказался, а во-вторых сильно глючал (через 5-6 шагов змеи выдавал ошибку), и исправлять его не посчитал нужным. А идея было хорошая - всего 60 элементов массива с лихвой хватало для МК85. Наверное, существует совсем другой алгоритм (а может, так они и все устроены, 420 байт сейчас даже для телефона пустяк) Змейки, который работает во всех приставках, компах, телефонах и т.д. Но я до него что-то не могу допереть. Если есть описание для других компов, вышлите, пожалуйста. (c) Сергей Киселев