Ночной код - Змейка
Сегодня ночью не мог уснуть и решил себя занять кодом: написал игру змейку. Вдохновлялся той самой змейкой, которая была на тетрисе; на том самом тетрисе, который был серый с желтыми кнопочками.
Заметка будет интересна новичкам, если есть какие то вопросы по коду - пишите.
Немного об исполнении. Для реализации перемещения я использовал время, т.е. через определенный промежуток времени наш блок (голова), исходя из заданного направления, переместится на шаг. Змейка перемещается по квадратам, в данном случаи шаг и является стороной квадрата, создается эффект что змейка как на том самом сером тетрисе с желтыми кнопочками перемещается по квадратикам экрана.
if timer()-time >= speed
Для задания движения хвоста использовал массив, который перемещал координаты головы последующим элементам массива, когда происходил шаг.
if direct = 1
tempx=player(1).xpos// сохраняю координаты
tempy=player(1).ypos//
score += 5 // Начисляю очки для примера не интересен
player(1).xpos -= tile // шаг
playsound 3 // проигрывается музыка
for i=2 to n // задаю хвосту новые коориднаты
tempx1 = player(i).xpos
tempy1 = player(i).ypos
player(i).xpos = tempx
player(i).ypos = tempy
tempx = tempx1
tempy = tempy1
next i
time = timer() // засекаю время до следующего шага
endif
Для того, чтобы кусок еды появился на "сетке", использовал формулу остатка от деления, т.е. наша "еда" появляться рендомно на карте; для того, чтобы привязать её к "сетке", я делил с остатком от деления координату(рендомную) на шаг, полученный результат вычитал из шага и это значение прибавлял к рендомной координате, чтобы та появилась на сетке. =]
x += 40-mod(x,40)
Для того чтобы проверить что наша змейка кушает хвост использовал вот такой метод, предлагаю вам самим разобраться во фрагменте:
for m=5 to 90 step 1
if(player(1).xpos=player(m).xpos and player(1).ypos=player(m).ypos and player(m).fl = true) // player(m).fl = true тобишь это флаг каждого куска хвоста, существует он или нет
eact=true// флаг для окончания игры.
playsound 2
endif
next m
Я прошу прощения за плохое исполнения ярлыка игры и стартового экрана.
Ссылка на игру:
http://file.kirovnet.ru/d/612238/snake.rar
Ссылка на исходник, хочу извиниться за плохой стиль и за отсутствие комментариев, писал сонный со всеми вытекающими:
http://file.kirovnet.ru/d/612285/snake_source.rar
Чтобы запустить исходник вам понадобиться PlayBasic, бесплатную версию можно скачать тут:
http://www.playbasic.com/files/Demos/PlayBasicLearningEdition.exe
P.S. Я понимаю что многие не знакомы с командами языка но они интуитивно-понятные и для каждого есть описание в справке.
- 31 марта 2012, 22:38
- 00
8 комментариев