Начнём издалека: Новичка от профессионала отличает внимание к деталям, к каждой мелочи. Приблизим: В данном случае мелочью будет выступать колебание бонусов. Например: игра, сделанная профессионалом, будет содержать монетки, которые будут колебаться вверх/вниз. Лишняя трата ресурсов? Вовсе нет. Так красивее, а потому такой бонус более способствует погружению игрока в виртуальный мир, нежели статичный.
Как же сделать эти самые колебания? Гораздо проще, чем вы думаете.
Для начала поместим в глобал список монет и загрузим изображение монетки:
Code Global coin:Timage=LoadImage("coin.png") Global Clist:TList=New TList
Затем создадим тип:
Code ' Тип монеток. Поля: х,у, фаза колебания. Type coins Field x:Int Field y:Int Field phase:Int ' Метод отрисовки монет Method drawer() phase:+1 If phase=360 Then phase=0 DrawImage(coin,x-plX,y+16*Sin(phase)) End Method ' Метод проверки монет на коллизии с игроком Method collide(px:Int,py:Int) If Abs(x-px)<16 And Abs(y+16*Sin(phase)-py)<16 Then ' те действия, которые должны происходить при взятии монетки EndIf End Method End Type
Тут уже надо пояснить: Метод drawer() отрисовывает каждую монетку в позиции Х,У+некоторое смещение, которое зависит от фазы колебания. Метод коллизии же проверяет коллизии с boundary Box
Однако это всё то, что пишется до главного цикла.
Небольшое отступление: Так мы создадим некоторое количество монеток.
Code Local k:Int For k=1 To (Rand(30)+30) coin_create(Rand(1000),Rand(700)) Next
Как же нам использовать эти методы? Да очень просто! Через функции:
Code Function coin_create(x:Int,y:Int) Local c:coins c=New coins c.x=x ; c.y=y ; c.phase=0 ListAddLast Clist,c End Function ' * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * Function coin_update() Local c:coins For c=EachIn Clist c.drawer() Next End Function
И, соответственно, в главном цикле нужно прописать вот это:
Ах, да, забыл: Монетки можно улучшить ещё, если сделать их не через простые картинки, а через анимированные. Как заставить картинки анимироваться синхронно с подъёмом? Подумайте сами, это не так сложно, как кажется. ПС Совет: обратите ещё раз своё внимание на поле phase
Источник: http://johnk.3dn.ru/forum/2-112-1 |