Создаётся на BEX. Пока что стоит лишь на фазе одного из слегка изменённых примеров-демонстраций поворота спрайта, к которому из другого примера прикручен зачаточный механизм стрельбы. Черновой код прикреплён к сообщению.
На данный момент важнейшие планируемые изменения:
Поставить направление полёта пули в зависимость от того, в какую сторону смотрит пушка у танка.
Вставить врагов, разумеется.
Добавить происходящие при попадании снаряда в какой-либо объект на экране взрывы с определённым радиусом, поражающие ближайшие находящиеся рядом цели.
Реализовать механизм отдельного перемещения и прицеливания в разные стороны одновременно.
С первым пунктом как раз самая и проблема. Мне уже предлагали ввести ответственную за направление ствола переменную величиной от 0 до 3, каждое значение которой означает сторону, в которую пуле лететь. Однако мозгочёс вносит уже сам тот факт, что изменяет направление ствола не само нажатие кнопки направления, а вычесления уже более хитрожопистые:
Цитата
j = joypad(0)
x = j.3-j.2 y = j.1-j.0
if x then tank_x+= x propsprite tank,260+hfliptile(j.2),0 elseif y then tank_y+= y propsprite tank,256+vfliptile(j.1),0 endif
movesprite tank,tank_x,tank_y
Даже неизвестно, куда тут ставить код изменения значения переменной направления.
Идея возникла случайно, как своеобразный игрокроссовер вольного сиквела фильма "Белый тигр" Карена Шахназарова и сонгфика по перепевке знаменитой песни про трёх танкистов в исполнении группы "Свинцовый туман" (в её-то честь я игру и назвал). Герои игры - элитное танковое подразделение, каждый из членов которого по имени, внешности и характеру идентичен соответствующему участнику "Свинцового тумана" (правда, в игре все они будут сильно "омоложены" по сравнению со своими реальными прототипами - примерно того возраста, в котором каждый из них находился где-то в 90-х, в крайнем случае - в 2001-м; а также музыка и поэзия у них из профессии превратятся всего лишь в хобби).
Я, конечно, понимаю, что трудно представит двух более несовместных друг с другом вещей, чем "Свинцовый туман" и война, однако герои игры, как пацифисты по убеждениям, будут не участвовать в войне, а предотвращать её. Дело в том, что, по сюжету, где-то примерно в наше время пророчество Ивана Найдёнова из "Белого тигра", спустя 70 с лишним лет, всё-таки сбылось, и танк-призрак всё таки вернулся, начав нападать на пограничные посты по обе стороны российских границ, будто устраивая провокацию и пытаясь стравить нас со странами, на границе с которыми произошли инциденты. Во избежание большой войны чуть ли не со всеми своими соседями сразу (если не вообще мировой, возможно даже ядерной) команде героев (приглянувшихся армейскому начальству тем, что они не только единственные выжили на родной базе, когда та подверглась атаке танка-призрака, но и, казалось бы, чуть было не уничтожили его, вынудив своим нехилым отпором временно отступить) было приказано добить наконец таинственный танк, пока он не успел добиться своей цели. Казалось бы, с помощью современных оружия и техники (учитывая что внешне танк со времён своего прошлого появления в нашем мире нисколько не изменился, оставшись всего лишь "Тигром" времён Второй Мировой), да ещё и с таким экипажем, как команда наших героев, сделать это особого труда не составит - да только танк оказался совсем не так прост, каким казался "в прошлый раз". Каждый раз, стоит только нашим героям на определённое расстояние приблизиться к нему, их тут же каким-то мистическим образом перебрасывает в некое странное измерение-"поле битвы", где им приходится встретиться с порождённой таинственным танком настоящей фантомной вермахтообразной армией, а сам танк-призрак в таких измерениях обретает магическую способность трансформироваться в самые ну уже совершенно невообразимые гигантские вундервафли. Они-то и послужат боссами в конце каждого уровня.
Насчёт названия есть и ещё несколько вариантов - "Белый тигр v2.0", "Ползучий немец" (по аналогии с "летучим голландцем") и "TankЪ Vampira!". Хорошо бы объявить голосование, кому какое название больше нравится, если же ни один вариант вам не подходит - предлагайте свои.
"Белый тигр v2.0", "Ползучий немец" -ужасные названия, первое название похоже на экспериментальную версию (в этом 2.0 читается некая незаконченность то есть ущербность изначальная) ползучий немец и вовсе словно ползучий гад какой то (где это видано что бы немцы ползали) арийцы должны сокрушать а не ползать)) (придираюсь)
Сделал тебе выстрелы в разные стороны в зависимости от положения танка, корректную деактивацию и активацию пули, добавил врага, прописал систему коллизий с врагом и пулей, добавил систему жизней врага и пр. Исходник в ЛС.
Тебе понадобится сделать: столкновения игрока с противником систему очерёдности стрельбы, чтобы было более одной пули. систему блокировки выхода игрока за границы экрана и пр. Вот так.
систему блокировки выхода игрока за границы экрана
Она готова. Реализована вот таким способом:
Код
If tank_x < 128 Then tank_x=128 If tank_x > 432 then tank_x=432 If tank_y < 128 then tank_y=128 If tank_y > 336 then tank_y=336
Есть, правда, при этом в готовой проге одна забавная особенность - танк, если после упора в "стену" отпустить кнопку направления, "отпячивается" на пару пиксельков назад.
Также неплохо бы, я решил, укрупнить размер пули до 2х2 пкс, однако пока что удалось только повысить "высоту" пули, а вот как отрисовать уже столбцы справа от первого, чё-то пока не допру. Код отрисовки пули здесь:
систему очерёдности стрельбы, чтобы было более одной пули.
Это прибережём на будущее, когда будет введено ещё одно оружие - установленный на башне пулемёт, которым можно будет крыть врага, пока в орудие после выстрела относительно долго закладывается новый снаряд.
Это основы, делается за 2 секунды. Разбирайся. Рисуется пуля в любом графическом редакторе, сохраняется в формате bmp с 16 цветами, конвертируется в bin и палитра отдельно вставляется.
Спрайты и тайлы вообще очень тупо держать прямо в коде в виде текстовых данных. Представляю что за каша в сырце творится, когда оных становится больше 20 шт. Используй внешние файлы, скапливай их в соответствующей папке. Вот так.
Представляю что за каша в сырце творится, когда оных становится больше 20 шт. Используй внешние файлы, скапливай их в соответствующей папке.
Зато я знаю - из сырцов Papi Commando. Там программно генерируемые ресурсы в разы длиннее, чем весь остальной код, вместе взятый, а BEX-файл весит целый мег.
Добавил команду брать граф. данные для спрайта пули из внешнего файла и устранил небольшое отклонение точки вылета пули от ствола, во всех 4-х позициях.
Следующим делом думаю добавить возникающий на пару секунд спрайт взрыва после попадания по вражескому танку.
Томахомэ, ты будешь делать танчики или нафига пулей занялся, коррекцией пикселей? Я так понимаю, что у тебя должен быть персонаж, ходячий в 8 направлений, а не 4. Диагональное смещение и повороты нужно делать.
Сделай 8 положений квадрата персонажа. Практически это будет так:
1. смотрит налево. Благодаря флипу спрайта этот же кадр можно будет обратить направо. 2. смотрит вверх (он же вниз) 3. смотрит на полодиннадцатого - это будет диагональный кадр, который можно будет флипить на все другие диагонали.
И по шаблону сделай ещё секции + одновременное воздействие изменения x/y.
Для вспышки из дула лучше взять отдельный спрайт. Но это позже лучше, т.к. это укрошение, а не базовый функционал. Вот так.
Добиться возможности перемещения спрайта по диагонали оказалось проще, чем я думал. Куда сложнее тут - c созданием наклонного варианта спрайта из "Танчиков" (которым я временно заменил тот, что генерируется кодом по умолчанию), поскольку после поворота такого маленького спрайта в "Фотошопе" на 45 градусов он мало того, что выглядит до безобразия размытым, да еще и при просмотре получившегося после конвертации bin-файла в тайловом редакторе выясняется, что в тайлах там - гораздо больше цветов (для которых прописанной в коде палитры попросту может не хватить), чем у горизонтального и вертикального вариантов, плюс габариты у наклонного спрайта увеличиваются с 16х16 до 24х24. Код диагонального полёта пуль вроде прописал, но без диагонального спрайта танка проверить рабочесть этого кода трудно.
Всё о хакинге игр, всё о модификации игр, всё о мапинге игр
translation, translations, romhacking, ROM, hacking, ROM hacking utilities, documents, hacks, requests
эмуляция, качать ROM-файлы, старые игры, ретро игры, эмуляция