Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > разработка игр, графический дизайн и моделирование > Gamedev - cоздание игр: Unity, OpenGL, DirectX
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.03.2009, 09:46   #251
Kostia
Участник клуба
 
Аватар для Kostia
 
Регистрация: 21.11.2007
Сообщений: 1,690
По умолчанию

А вообще запомните такую формулу:
Код:
if (x>=objx) and (y>=objy) and (x<=objx+objwidth) and (y<=objy+objheight) then
Проверка попадания точки (x,y) в прямоугольник (objx, objy, objx+objwidth,objy+objheight);
А попадание точки в окружность определяется так:
Код:
if sqrt(sqr(x-objx)+sqr(y-objy))<=r then
Проверка попадания точки (x,y) в окружность с центром (objx, objy) и радиусом r

Последний раз редактировалось Kostia; 22.03.2009 в 09:48.
Kostia вне форума Ответить с цитированием
Старый 22.03.2009, 19:44   #252
Алекс Ялта
Пользователь
 
Аватар для Алекс Ялта
 
Регистрация: 27.01.2009
Сообщений: 97
По умолчанию

Спасибо. Пригодится
Алекс Ялта вне форума Ответить с цитированием
Старый 23.03.2009, 09:10   #253
Shadow_1329
Форумчанин
 
Аватар для Shadow_1329
 
Регистрация: 23.02.2009
Сообщений: 237
По умолчанию

У меня один вопрос. Игра-стрелялка. Мне нужро сделать чтобы пуль вылетало бесконечно много. Рисую на Canvas. У пули есть координаты x и y, и таймер её прорисовывает туда, куда показывает x или y. Но пуля тока одна, а мне нужно много. Как это осуществить? Ставить бесконечно много обработчиков событий для пуль??
Shadow_1329 вне форума Ответить с цитированием
Старый 23.03.2009, 10:04   #254
Алекс Ялта
Пользователь
 
Аватар для Алекс Ялта
 
Регистрация: 27.01.2009
Сообщений: 97
По умолчанию

Цитата:
Сообщение от Shadow_1329 Посмотреть сообщение
У меня один вопрос. Игра-стрелялка. Мне нужро сделать чтобы пуль вылетало бесконечно много. Рисую на Canvas. У пули есть координаты x и y, и таймер её прорисовывает туда, куда показывает x или y. Но пуля тока одна, а мне нужно много. Как это осуществить? Ставить бесконечно много обработчиков событий для пуль??
Насколько я помню, в постах 150-160 этого раздела рассматривается пример создания собственного типа. Можно попробовать создать тип Bullet и массив
Код:
MasBullet: array [1..255] of Tbullet;
И вопрос такого плана нужно задать в той теме для получения более эффективного ответа

Последний раз редактировалось Beermonza; 23.03.2009 в 19:49.
Алекс Ялта вне форума Ответить с цитированием
Старый 23.03.2009, 11:13   #255
ROD
Linux C++ Qt ARM
Старожил
 
Аватар для ROD
 
Регистрация: 30.11.2008
Сообщений: 3,030
По умолчанию

Цитата:
У меня один вопрос. Игра-стрелялка. Мне нужро сделать чтобы пуль вылетало бесконечно много. Рисую на Canvas. У пули есть координаты x и y, и таймер её прорисовывает туда, куда показывает x или y. Но пуля тока одна, а мне нужно много. Как это осуществить? Ставить бесконечно много обработчиков событий для пуль??
Можно сделать их с помощью списка ( в этом случае количество выпущеных пуль ограничивается лишь памятью компьютера)
При выпускании пули она добавляется в конец списка, при попадании, она удаляется их списка. (т.е. функци-обработчик пуль работает не с каждой отдельной пулей, а со списком пуль).

К стати, таким же способом можно сделать бесконечное число простивников. (хотя противников я бы делал классами, что бы каждому можно было сделаь индивидуальное поведение (ну что бы они не по прямой летели, а зигзагами, стреляли и т.п (впрочем если делатьк акие-то специфические патроны (типа самонаводящихся ракет или осколочных гранат), тот тут тоже классами делать нужно)).)
Дилетант широкого профиля.

"Слова ничего не стоят - покажите мне код!" © Линус Торвальдс

Последний раз редактировалось ROD; 23.03.2009 в 12:25.
ROD вне форума Ответить с цитированием
Старый 23.03.2009, 13:59   #256
Shadow_1329
Форумчанин
 
Аватар для Shadow_1329
 
Регистрация: 23.02.2009
Сообщений: 237
По умолчанию

А как это списками? Чо то я не вкупил.
Shadow_1329 вне форума Ответить с цитированием
Старый 27.03.2009, 09:25   #257
Boris96_2007
Пользователь
 
Аватар для Boris96_2007
 
Регистрация: 27.03.2009
Сообщений: 14
По умолчанию

А в какой программе это всё прописывать?
Учусь программировать на C++
Boris96_2007 вне форума Ответить с цитированием
Старый 27.03.2009, 13:32   #258
Pyton
Пользователь
 
Аватар для Pyton
 
Регистрация: 18.12.2008
Сообщений: 47
По умолчанию

В данном разделе все делается на Делфи.
Pyton вне форума Ответить с цитированием
Старый 27.03.2009, 21:06   #259
Kostia
Участник клуба
 
Аватар для Kostia
 
Регистрация: 21.11.2007
Сообщений: 1,690
По умолчанию

Цитата:
У меня один вопрос. Игра-стрелялка. Мне нужро сделать чтобы пуль вылетало бесконечно много. Рисую на Canvas. У пули есть координаты x и y, и таймер её прорисовывает туда, куда показывает x или y. Но пуля тока одна, а мне нужно много. Как это осуществить? Ставить бесконечно много обработчиков событий для пуль??
Изучаем данный код и становимся гуру: http://pblog.ru/lab/?p=106
________
А это упрощенный TList:
Вложения
Тип файла: rar TList.rar (6.2 Кб, 50 просмотров)

Последний раз редактировалось Kostia; 27.03.2009 в 21:28.
Kostia вне форума Ответить с цитированием
Старый 31.03.2009, 18:24   #260
Алекс Ялта
Пользователь
 
Аватар для Алекс Ялта
 
Регистрация: 27.01.2009
Сообщений: 97
По умолчанию Универсальная проходимость карты

Никак не могу осилить. Как задать универсальную проходимость на карте? Изучил все примеры, которые находятся в этой теме. Неужели нужно делать ДВА массива карты? Один под проходимость, а другой под текстуру. Имееется ввиду карта с большим колличеством текстур и с разной проходимостью. Я понимаю как задать проходимость и текстуру на один индекс. То есть, если из файла считал индекс "1", то: ходить нельзя, текстура 1.bmp. В то же время прописывать под дополнительные обозначения свою проходимость мне кажется неправильным. К примеру, если карта имеет такой вид в текстовом файле:
11111111111111111
10000000000000001
10244300000000001
10000050000000001
10000005000000001
11111111111111111

Места под номерами 2,3,4,5 будут НЕ ПРОХОДИМЫМИ и все будут иметь разные тестуры. Как в таком случае будет выглядить код?
Если создать тип карты:

Код:
type
  TGameMap = packed record
    p:       byte;       // Проходимость
    Tex:    TBitmap;     // Текстура клетки
  end;
Сам массив карты будет таким
Код:
var
map: array [1..20,1..15] of TGameMap;
В такой процедуре загрузки уровня индекс проходимости будет
сответствовать индексу текстуры:

Код:
//...............................
 for j:=1 to 20 do
        for i:=1 to 15 do begin
            Read(Map[j,i].p); // р - проходимость
            Map[j,i].Tex:=TBitmap.Create;   // Tex - текстура клетки
            Map[j,i].Tex.LoadFromFile('img\'+IntToStr(Map[j,i].p)+'.bmp'); 
            BackBuf.Canvas.Draw(j*32-32, i*32-32, Map[j,i].Tex);
//.................................
Как в таком случае быть? Прописывать проходимость дополнительно наподобии:
Код:
if p=1 or if p=2 or if p=3.....  then
ходить нельзя?
Алекс Ялта вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Хорошие уроки Render Общие вопросы Delphi 9 15.09.2012 07:13
Акцесс вопросы новичков Yaga Помощь студентам 4 02.06.2008 00:16
Учебники для новичков в програмировании Рар Общие вопросы Delphi 6 08.01.2007 08:07