IPB
ЛогинПароль:

> НЛО на звездном небе
сообщение
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 41
Пол: Женский
Реальное имя: Анастасия

Репутация: -  0  +


У меня вопрос по Visualpage. Cейчас рисую НЛО на фоне мерцающего неба. Проблема в том, что
когда с помощью putimage вставляю рандомайзом свой НЛО, затирается мое небо. Не уверена, поэтому хочу спросить,как мне сделать небо основным фоном(чтобы не затиралось). Наверное это связано с Visualpage.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
сообщение
Сообщение #2


Бывалый
***

Группа: Пользователи
Сообщений: 206
Пол: Мужской

Репутация: -  3  +


Тогда вот.
Режим XOR хорошая вещь, но у него есть та особенность, что при наложении картинки на сложный фон этот фон будет просвечивать.
Вот еще возможный вариант.
Для изображения НЛО используем PutImage в режиме NormalPut. Это достаточно быстро. Для того, чтобы его убирать, можно использовать еще один спрайт - черный прямоугольник (если небо у нас черное). Тогда возникает проблема - при движении НЛО будет затирать звезды. Значит, их надо восстанавливать. А заодно надо решить и задачу мигания звезд. Что бы я сделал: создал бы массив Nx2 (Stars: array[1..2][1..N] of word), где N - число звезд (штук 100). Перед началом основного цикла заполняем этот массив случайными координатами звезд:
For i:=1 to N do
begin
Stars[ i ][1] := random(640);
Stars[ i ][2] := random(480);
end;
Теперь основной цикл программы выглядит так:
- вычисляем новые координаты НЛО
- затираем НЛО
- пробегаемся по массиву и в точках с координатами звезд выводим случайный цвет:
For i:=1 to N do
PutPixel(Stars[i][1],Stars[i][2],random(16));

- рисуем НЛО
- выдерживаем паузу
Теперь осталась еще та проблема, что при выводе НЛО звезды затираются по всей площади прямоугольника, а ведь НЛО у нас не прямоугольный. Ну... может, этим стоит пренебречь? Как только НЛО улетит с этого места, звезды восстановятся.
По поводу движения: если хватит сил замутить фигуры Лиссажу, это будет здорово, но стоит ли? Проще сделать так: пусть Х и У - текущие координаты НЛО. Определяем новые случайные координаты, Х1 и У1. А затем вычисляем шаг перемещения
If X < X1 then DX := 1
else if X = X1 then DX := 0
else DX := -1;

Аналогично для Y, Y1 и DY. Потом в цикле движения проверяем, достигли ли мы уже точки назначения? Если нет, тогда вычисляем новые координаты там, где это необходимо:
If X <> X1 then X := X + DX;
If Y <> Y1 then Y := Y + DY;

А если достигли, тогда выбираем новые случайные Х1 и Y1. При такой схеме НЛО будет не спеша летать по некоторой ломаной линии. Не спеша, потому что шаг единичный. Если шаг увеличить, то потребуются дополнительные усилия с определением того, достигли ли мы точки назначения.
А еще можно просто выбрать случайное направление и лететь, пока не упремся в стенку. Когда упремся, выбрать новое направление, и т.д.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 29.04.2024 4:33
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name