Сегодня: 11.02.2025г. 03:17
http://professional-pc.ucoz.ru/
Навигация
Рубрики
Категории
OC и Программное обеспечение [16]
Программирование [29]
Игры PC [11]
Интернет [13]
Железо [8]
Delphi [31]
Windows [57]
Прочее [0]
Мини-чат
 
300

Открыть большой чат в окне
в окне сайта
Реклама
Разместить кнопку
Разместить кнопку
Разместить кнопку
Создаем RPG игру: Создание спрайтов (Приложение к части 2)

Я продолжаю цикл о создании RPG игры в Delphi. В этот цикл входит несколько статей: создание локации, создание игрока, создание квестов. Сейчас, а именно во второй части цикла мы поговорим о создании спрайтов для карты, которую мы делали в прошлом уроке. 

Как вы помните мы сделали спрайт главного героя и научили его передвигаться. Теперь я решил показать как сделать врага. Статья не обязательна для следующих этапов создания RPG, однако она будет очень полезна в плане пополнения знаний.


Спрайты врага: скачать
Скачиваем спрайты врага и распаковываем в папку sprites. По желанию в процессе урока вы можете нарисовать сами нужные спрайты. 

Сейчас давайте добавим на нашу карту еще один Image, поставим все свойства, почти как и у прошлого спрайта: 

Proportional - true
Stretch - true
Transparent - true
Height - 32
Width - 32
Top - 64
Left - 64

Ну и для удобства меняем Name на enemy.
Загрузим изображение нашего спрайта - enemy. Надеюсь вы помните из прошлого урока, как это делается. 


Теперь нужно оживить врага и заставить нападать на игрока. Для этого создаем событие для Form1 - FormCreate и прописываем код:

attak:=false;

Кстати. Забыл. Нужно создать глобальную переменную attak: 

...
var
  Form1: TForm1;
  attak : boolean;
...

Теперь скидываем Timer из вкладки System и создаем для него событие Timer1Timer и прописываем следующий полный код:

procedure TForm1.Timer1Timer(Sender: TObject);
begin

if attak=false then
begin
enemy.Picture.LoadFromFile('sprites/enemy.bmp');
if (Image1.Top=enemy.Top) and
(Image1.Left<=enemy.left-image1.left) then
enemy.Left:=enemy.left-32;
if enemy.left= image1.Left then
enemy.left:=enemy.left+32;
attak:=true;
end
else
begin
if (Image1.Top=enemy.Top) and
(Image1.Left<=enemy.left-image1.left) then
enemy.Left:=enemy.left-32;

if enemy.left= image1.Left then
begin
enemy.Picture.LoadFromFile('sprites/enemy_attak.bmp');
enemy.left:=enemy.left+32;
end;

attak:=false;
end;

end;

Код вышел большим, но понятным, так что комментарии я не стал писать. Если что не понятно - спрашиваем!

Как вы видите противник ходит за нами и даже изображает атаку. 


Давайте дадим ему сдачи! В событие FormKeyDown добавляем:

if key=vk_space then
begin
Image1.Picture.LoadFromFile('sprites/down_up.bmp');
if (enemy.Left=image1.Left) and (enemy.Top=image1.Top) then
enemy.visible:=false;
end;

Получается если подойти к врагу вплотную и нажать Пробел, то он исчезнет. 

Ну вот и все. Снова желаю удачи и снова прощаюсь!


Следующая статья



Помогли ли вам наши статьи?
Всего ответов: 465


Источник:
Категория: Программирование | Добавил: BRESS (07.10.2011) | Автор: EW
Просмотров: 1187 | Комментарии: 0 | Теги: | Рейтинг: 0.0/0
>Всего комментариев>: 0
Авторизация
Опрос
Где вам удобней скачивать файлы?
Всего ответов: 17
Online
Онлайн всего: 1
Гостей: 1
Пользователей: 0

Статистика


CY-PR.com
© 2025 Professional-PC.Ucoz..Ru