Так, хватит уже читать всю теорию, время заняться делом. Дабы несильно грузить вас математикой, обойдемся простым TDS. И на заметку - я совсем не художник, я программист до мозга костей, так что не ждите от меня выдающихся текстур и спрайтов:) Поэтому, я буду стараться использовать примитивную графику(прямоугольники, круги, линии). Но для тех, кто хочет сделать Crysis 2D, я расскажу как и картинки рисовать.
В этом заключается наш сегодняшний урок:
Теперь подробней.
"SuperStrict" - заставляем компилятор ругаться, если что-то не так с синтаксисом(без этой функции компилятору будет все равно, если вы не указали тип переменной, он сам его определит).
"gW,gH" - переменные, которые указывают разрешение нашего экрана.
"pX,pY,speed" - переменные отвечающие за нашего игрока.
"Draw(), Update()" - функции отрисовки и управления игроком.
В Update() трудным моментом для новичков может показаться:
Немного функций
"DrawOval x,y,w,h" - рисует овал в координатах x,y шириной w и длиной h(мне привычна высота поэтому h(height), но правильно будет назвать это длиной).
"DrawLine x1,y1,x2,y2" - рисует линию от точки x1,y1 до точки x2,y2
"SetColor r,g,b" - указывает текущий цвет рисования в палитре RGB; 0<r,g,b<256. То есть вся графика, которая рисуется после этой строчки, будет использовать данный цвет. Изначально, цвет белый, то есть 255,255,255.
"SetClsColor r,g,b" - указывает цвет очистки экрана. Помните команду Cls()? Так вот, по сути она рисует черный квадрат на весь экран. И мы можем задать этому квадрату определенный цвет. Изначально, цвет черный, то есть 0,0,0.
Поехали!
В этом заключается наш сегодняшний урок:
SuperStrict Global gW:Int=800, gH:Int=600 Graphics gW,gH SetClsColor 255,255,255 Global pX:Float,pY:Float, speed:Float Function Update() pX:+(KeyDown(KEY_D)-KeyDown(KEY_A))*speed pY:+(KeyDown(KEY_S)-KeyDown(KEY_W))*speed If KeyDown(KEY_LSHIFT) speed=6 Else speed=4 EndIf End Function Function Draw() SetColor 0,0,0 DrawOval pX-18,pY-18,36,36 SetColor 122,122,255 DrawOval pX-16,pY-16,32,32 SetColor 255,255,255 End Function While Not KeyDown(KEY_ESCAPE) Update() Draw() Flip(1) Cls() WendКопируем, вставляем, управляем кружком на WASD, левый Shift - бег.
Теперь подробней.
"SuperStrict" - заставляем компилятор ругаться, если что-то не так с синтаксисом(без этой функции компилятору будет все равно, если вы не указали тип переменной, он сам его определит).
"gW,gH" - переменные, которые указывают разрешение нашего экрана.
"pX,pY,speed" - переменные отвечающие за нашего игрока.
"Draw(), Update()" - функции отрисовки и управления игроком.
В Update() трудным моментом для новичков может показаться:
pX:+(KeyDown(KEY_D)-KeyDown(KEY_A))*speed pY:+(KeyDown(KEY_S)-KeyDown(KEY_W))*speedНа самом деле, здесь ничего трудного нету. Как это работает: KeyDown(KEY_D)-KeyDown(KEY_A) Функция KeyDown(KEY) вернет нам 1, если KEY нажата, 0 - если не нажата. Получается, если мы нажмем D, выражение равно 1, если нажмем A - "-1", ничего не нажмем или нажмем одновременно 2 клавиши - 0. Умножаем это дело на скорость, и получаем нужное изменение координаты pX. Например, если у нас получилось 1*4, игрок пойдёт вправо на 4 пикселя. Теперь о Draw(). Сразу, устанавливаем черный цвет и рисуем круг 36 на 36 пикселей в координатах pX-18, pY-18. Это нужно для черной обводки. Затем рисуем уже круг голубого цвета. Вот и конец:) В следующем уроке познакомлю вас с ООП в BlitzMax, переделаем немного кода и добавим возможность стрелять.
спасибо Вам за Ваши статьи! Отличная работа, продолжайте писать, они очень и очень полезны для начинающих :) не забрасывайте это дело!
ОтветитьУдалить