Показать сообщение отдельно
Старый 19.07.2006, 04:01   #1
SubZer0
Администратор
 
Аватар для SubZer0
 
Регистрация: 03.09.2005
Сообщений: 2,408
Написано 301 полезных сообщений
(для 996 пользователей)
Сообщение Туториал "Змейка"

Доброго времени суток!

Заметил я что юные программисты часто сталкиваются с проблемой написания простой змейки! Попробуем это исправить, подсказав как это можно реализовать!

значит задача:
сделать "змейку" как на старом добром карманном "тетрисе"... чтоб она что-нибудь ела и при этом росла, ну и чтобы нельзя было себя за хвост "укусить", оградим игровое поле гранитом, чтоб нашей змее не удалось ее прогрызть и выбраться наружу.

(для удобства описания обзовем нашу змею кольчатым червем, и соответственно отдельные "куски" змеи - кольцами.)

но прежде чем займемся кодом немножко теории:

В наипростейшем случае змейка представляет собой массив ячеек в которых хранятся координаты положения колец змейки т.е. все тело змейки представляет собой примерно такую конструкцию:




в ячейке с номером "1" хранится голова змеи, в ячейке под номером "2" - первое кольцо, в "3" - второе и т.п.

Наверное вы уже дагадываетесь как будет организовано ползание змеи... всё просто... при перемещении головы змеи за ней должен двигаться весь ее хвост. Но программировать это прийдется детально. Нужно первое кольцо передвинуть на место где раньше была голова, второе кольцо передвинуть туда, где раньше было первое. Третье туда, где было второе и так до саамого конца хвоста.

если все это перевести в логику программирования, то получится так, что к координатам ячейки головы присваиваются новые координаты (она передвинулась) затем координаты головы присваиваются координатам первого кольца, координаты первого кольца присваиваются координатам второго кольца и в таком духе обрабатывается весь хвост.

схематично это можно отобразить так:




вот и весь секрет змейки... но во всем вышенаписанном есть один небольшой недостаток, змейка двигается не плавно... чтобы это исправить, у меня появилась такая идея (может кто делает по-другому, а я делаю так): нужно не сразу координатам первого кольца присваивать координаты головы, а немножко погодя... хммм... но их нужно ведь где-то сохранять... для этого увеличивается количество ячеек змейки, и кольца делаются зависимыми от ячеек через определенное "расстояние", допустим каждая пятая ячейка будет кольцом, а остальные будут промежуточными хранилищами координат...

схематично можно отобразить это так:




ну теперь уж точно всё! теперь все секреты змеи раскрыты приступим к программированию
__________________
Как минимум я помог многим (с)
(Offline)
 
Ответить с цитированием