Ужасно загорелся желанием написать свой небольшой 2D движок, без системы WYSIWYG. Внешним видом напоминающее DarkBasic ну или в крайнем случае обычный "Блокнот". Идея такова, что-бы в интерпретаторе окно было поделено на 2 части. В первой части пишется основа, путь к спрайтам, функции объектов. А во второй части - расположение объектов в комнате с помощью указания координат.
И вот к вам пару вопросов:
1) На чем лучше писать? (Желательно конечно Delphi, и возможно ли это?) 2) Есть где нибудь в сети туториалы/книги по подобной работе? Если есть то не подскажите где их найти? 3) Есть исходники подобных программ?.
Движок будет рассчитан на старшеклассников (9-11 класс). Собственный скриптовой язык, отличающийся чрезвычайной простотой. На данном движке будет возможно написать игры таких жанров как: Платформер, TDS, Maze, Гоночные игры и может быть небольшие казуалки.
Так же могу показать пример кода движка, и более простую и менее функциональную идею интерпретатора.
Сообщение отредактировал ЁжеГ - Четверг, 20 Января 2011, 17:07
В свое время попадался мне цикл статей на тему создания 2D конструктора на Delphi. Правда вот сейчас того сайта уже нет. Еще был цикл статей от создателя 3D Action Maker, lobosoft, про написание конструктора на GLScene. Если найду у себя в архивах, то поделюсь. Что же такое? Многие, очень многие задаются этим вопросом. Так что же такое?
Есть такая книжеца: C/C++ Архив программ. Код с комментариями(А. Фридман) В 14 главе рассматривается написание языкового интерпретатора на C++, может быть поможет.
Сообщение отредактировал Kornival - Четверг, 20 Января 2011, 18:21
StartRoom rm2[BckTwo, sound1, room.border(wall)]; //Старт комнаты 'rm2', применение к комнате фона, музыки, окантовка краев комнаты объектом 'Стена'. Obj.hero [20:20]; //Расположение объекта в комнате [xpx:ypx] Obj.exit [150:860]; //Расположение объекта в комнате [xpx:ypx] Obj.coin [10:55, 65:500, 320:35]; //Расположение объекта в комнате [xpx:ypx] End.
Код движка игры:
Code
SettingsFile
FileSetting { Obj.wall(sprite way); //указание пути к спрайту объекта. Obj.hero(sprite way); //указание пути к спрайту объекта. Obj.coin(sprite way); //указание пути к спрайту объекта. Obj.exit(sprite way); //указание пути к спрайту объекта. Bck.BckOne(image way); //указание пути к фону. Bck.BckTwo(image way); //указание пути к фону. Snd.sound1(way); //указание пути к звуку/музыке. };
ObjectControl //Управление объектом.
Obj.hero { if keybutt_press["A"] then obj.hero [moveX-8]; //движение влево. if keybutt_press["D"] then obj.hero [moveX+8]; //движение вправо. if keybutt_press["W"] then obj.hero [moveY+8]; //движение вверх. if keybutt_press["S"] then obj.hero [moveY-8]; //движение вниз.
if obj.hero [coll obj.exit] then gotoroom [rm2]; //если объект 'Герой' соприкоснется с объектом 'Выход', то переход во вторую комнату. if obj.hero [coll obj.wall] then spd := 0; //если объект 'Герой' соприкоснется с объектом 'Cтена' то скорость будет равна - 0. if obj.hero [coll obj.coin] then obj.coin destroy; //если объект 'Герой' соприкоснется с объектом 'Монета' то объект 'монета' исчезает. };
Сообщение отредактировал ЁжеГ - Четверг, 20 Января 2011, 18:49
Выглядит все убедительно, для нас, читателей. Только процессор читать не умеет. ЁжеГ, сможешь ему, тупому, объяснить каждое словечко и каждую точечку, когда - че - куда? (Платформер, TDS, Maze, Гоночные игры и может быть небольшие казуалки) - для начала, сделай каждой по штуке и посмотри, чем они друг от друга отличаются.
Иди учись ко мне в университет, мы изучали там основы написания трансляторов/компиляторов (сам писал транслятор с ассемблера). Скажу так, без знания дискретной математики можеш и не начинать, так как для написания анализатора синтаксиса или симантики требуеются именно эти знания. @noTformaT
Сообщение отредактировал noTformaT - Пятница, 21 Января 2011, 21:43