По скольку сам уже долго изучаю pascal и владею достаточными знаниями, хочу поделиться ими с вами. И так, начнем. Не знаю, много ли 118 строк кода для первого урока, но писать нам их придется. Не волнуйтесь, каждые 5-10 строчек я объяснять не буду, объясню лишь самое главное.
Код
Uses graphabc, events,timers;
И так, этот код хоть и короткий, но очень важный. Здесь мы подключаем графический модуль graphabc, ну и события и таймеры (попробуйте его удалить и посмотрите что получится). Едем дальше.
Код
const r=5 ; d=7;
type TDirection = (None, Left, Right, Up, Down);
var x,t,y,i,z,xr,yr,prin1,prin2,prin3,prin4,prin5,k,s4et,prin6: integer; Direction :TDirection; xs,ys,bufx,bufy:array[1..200]of integer;
Этим кодом мы задаем необходимые переменные и типы перемещения ("Нет" - не нажата ни одна клавиша, стоим на одном месте. "Влево" - движение влево. "Вправо" - движение вправо. "Вверх" - движение вверх, и соответственно "Вниз " - движение вниз.) С этим закончили. Теперь еще один код, который я объясню по нормальному, а дальше попрет уже основная часть (примерно 80-90 строк).
Код
procedure shar3; begin SetBrushColor(clYellow); circle(xs[k],ys[k],r); end;
procedure Circl; begin SetBrushColor(clBlack); circle(x,y,r); end;
procedure rshar ; begin xr:=Random(WindowWidth) ; yr:=Random( WindowHeight); end;
procedure rshar2; begin SetBrushColor(clYellow); circle(xr,yr,r); end;
Тут мы прорисовываем черный круг (меняйте на что угодно) - голова нашей змейки и желтый круг- тело, такой же круг будет прибавляться после пожирания "шарика". Цвет шарика указан после procedure rshar2, прибавляющегося шарика - shar3. Приступаем к основному коду:
Код
procedure XP(Key:integer); begin case Key of VK_Left: Direction := Left ; VK_Right:Direction := Right ; VK_UP: Direction := UP ; VK_Down: Direction :=Down ; end; circle(x,y,r); end;
procedure pause; begin for i:=1 to 1 do begin Circl; rshar2; ClearWindow; rshar2 ; prin1:=(xr-x+r)*(xr-x+r)+(yr-y)*(yr-y) ; prin2:=(xr-x-r)*(xr-x-r)+(yr-y)*(yr-y) ; prin3:=(xr-x)*(xr-x)+(yr-y+r)*(yr-y+r) ; prin4:=(xr-x)*(xr-x)+(yr-y-r)*(yr-y-r) ; prin5:=R*R; if (prin1)<=(prin5) then begin rshar ; s4et:=s4et+1; end;
if (prin2)<=(prin5) then begin rshar ; s4et:=s4et+1; end; if (prin3)<=(prin5) then begin rshar ; s4et:=s4et+1; end; if (prin4)<=(prin5) then begin rshar ; s4et:=s4et+1; end;
case Direction of Left: begin x:=x-d; if x<=0 then x:=WindowWidth end; Up: begin y:=y-d; if y<=0 then y:=WindowHeight end; Right: begin x:=x+d; if x>=WindowWidth then x:=0 end; Down: begin y:=y+d; if y>=WindowHeight then y:=0 end; end; xs[1]:=x; ys[1]:=y; for k:=1 to s4et do begin bufx[k]:=xs[k]; bufy[k]:=ys[k];
end; for k:=1 to s4et do begin xs[k+1]:=bufx[k]; ys[k+1]:=bufy[k] ; end; for k:=2 to s4et do shar3; Circl; end; end; begin rshar; s4et:=2;
Direction := None;
x:=WindowWidth div 2; y:=WindowHeight div 2; OnKeyDown:=XP; CreateTimer(150,pause);
end.
Это уже полностью конец кода. Здесь мы указали все самое основное: движение, поедание, повороты. На этом, я наверно, закончу наш с вами урок. Хотя и уроком это трудновато назвать. Просто много букаф (точнее кода, причем легкого), где мало точных пояснений. А вообще, лучше, поройтесь в коде сами. Я объяснил вам все самое необходимое. Поэкспериментируйте с цветами, переменными и клавишами. (Лично я так освоил pascal). Всем до свидания и до следующих уроков! Я снова с вами:з Возвращение легенды. (нет)
Сообщение отредактировал CreatingOver - Четверг, 15 Августа 2013, 09:27
LunarPixel, а если в том углу этих объектов несколько? У меня тогда все кроме одного за границу комнаты уходят :С Я снова с вами:з Возвращение легенды. (нет)
Блин.. По причине моей тупости уже и это не могу реализовать... Подскажите пожалуйста, как сделать чтоб объект двигался за видом, но оставался в том же углу экрана? Я снова с вами:з Возвращение легенды. (нет)
Название: Stolion Описание: RPG-проект. Главная задача, как и во всех RPG - выполнение заданий. Здесь я сюжета объяснять не стану. На данный момент в игре присутствует только основная часть (враги, NPC), оффлайн, но позже будет добавлен multiplayer. Разработчики: MrKillous - художник CreatingOver -программист.
] - старт.локация, библиотека (измененные тайлы, стоит NPC) - примерный вид инвентаря (на данный момент баг: инвентарь не двигается за видом
13.08.2013 - начало разработки 14.08.2013 - выполнена часть графики, 1/3 движка игры написана 15.08.2013 - переписан движок игры, новые тайлы.
Вот и все пока, инфа будет пополняться Я снова с вами:з Возвращение легенды. (нет)
Сообщение отредактировал CreatingOver - Воскресенье, 18 Августа 2013, 14:15
CreatingOver, если я не ошибаюсь, то это не выйдет. Так как "$sql_user_ref" отвечает за таблицу users, а то, что ты написал - не даёт sql запрос в таблицу users...
В принципе возможно. Но запрос то он отправлять будет, только вот ты его не получишь... Попробуй у себя в старом коде порыться, там ошибка может будет. Я снова с вами:з Возвращение легенды. (нет)
HaGe, не совсем честно будет. Помимо scirra construct 0.99.91 они подставляют и costruct classic 1.2 и construct 2. Кто тогда нам запретит GMS приравнивать? Я снова с вами:з Возвращение легенды. (нет)