Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
0 / 0 / 0
Регистрация: 03.10.2016
Сообщений: 47
1

Бесконечные очки

06.06.2017, 15:12. Показов 849. Ответов 14
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Идёт бесконечный счёт, суть в том,что главный герой берёт монетку. И должно прибавляться одно очко.
Delphi
1
2
3
4
5
6
if (a3[j]>0) and (image1.left+Image1.Width>a2[j].left) and (image1.Top+Image1.Width>a2[j].top) then //a2(монетки) //image1(главный герой)
   begin
    a2[j].Visible:=(false);
    //a2[j].Destroy;
    s:=s+1;
   Label1.Caption:='Счёт:'+IntToStr(s);
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.06.2017, 15:12
Ответы с готовыми решениями:

Бесконечные ряды
Привет всем. Такая проблема возникла, не могу справиться. Нужно вычислить бесконечный ряд. Вот...

Как сделать очки в игре?
Добрый день. У меня есть простая игра сквош (скриншот выше), я уже час пытаюсь сделать такую фишку:...

Почему в этой проге не показывает очки?
Скачал эту прогу отсюда http://www.delphisources.ru/pages/sources/graph/2009-year/duck-hunt.html...

3D очки
Есть смарт с HD разрешением, много ли дискомфорта это будет доставлять при просмотре через 3D очки?...

14
5860 / 4588 / 1448
Регистрация: 14.04.2014
Сообщений: 20,352
Записей в блоге: 20
06.06.2017, 15:25 2
по опыту к Top обычно прибавляют Height

а еще предполагается что для ответа требуется вопрос

и так же по опыту через пару недель не только мы но и вы сами не будете понимать ничего в программе с такими названиями переменных
0
0 / 0 / 0
Регистрация: 03.10.2016
Сообщений: 47
06.06.2017, 15:40  [ТС] 3
Проблема осталась //Объясняю a3[j]>0 это монетки,которые созданы с помощью текстового документа, то есть там 1 и 2 это монетки в разных координатах, a2[j] это есть монетка.
0
3759 / 2263 / 705
Регистрация: 29.05.2013
Сообщений: 9,613
06.06.2017, 15:54 4
У вас нет размеров монетки. По сути она у вас безразмерная, начинается в координатах a2[j].left и a2[j].top и как только герой ее прошел он из нее не вылазит

Добавлено через 1 минуту
Сравнивать надо пересечение двух областей героя и монетки, для этого есть готовая функция IntersectRect
0
0 / 0 / 0
Регистрация: 03.10.2016
Сообщений: 47
06.06.2017, 15:59  [ТС] 5
Пытливый, Впервые слышу о такой функции,есть какой-нибудь пример?
0
5860 / 4588 / 1448
Регистрация: 14.04.2014
Сообщений: 20,352
Записей в блоге: 20
06.06.2017, 16:00 6
магия
гугл delphi intersectrect Пример
0
0 / 0 / 0
Регистрация: 03.10.2016
Сообщений: 47
06.06.2017, 16:04  [ТС] 7
krapotkin, Хм, похожего случая на мой не нашёл
0
5860 / 4588 / 1448
Регистрация: 14.04.2014
Сообщений: 20,352
Записей в блоге: 20
06.06.2017, 16:10 8
все случаи пересечения прямоугольников идентичны
у вас монета это один прямоугольник, image - второй прямоугольник
и вы определяете, пересекаются они или нет
какой еще идентичности вы искали? слово монетка?
0
3759 / 2263 / 705
Регистрация: 29.05.2013
Сообщений: 9,613
06.06.2017, 16:19 9
Delphi
1
2
3
4
5
6
7
8
9
Var
  Hero,Obj,R: TRect;
begin
 Hero := Rect(1,1,10,10);
 Obj := Rect(5,5,6,6);
 if IntersectRect(R, Hero, Obj)
 then ShowMessage('Входит')
 else ShowMessage('Выходит')
end;
0
0 / 0 / 0
Регистрация: 03.10.2016
Сообщений: 47
06.06.2017, 16:43  [ТС] 10
В чём проблема? Не запускается
Delphi
1
2
3
image1_rect:=image1.BoundsRect;
moneta_rect:=a2[j].BoundsRect;
 Res := IntersectRect( image1_rect, moneta_rect);
Добавлено через 1 минуту
Пытливый,

Добавлено через 7 минут
В чём проблема? Не запускается
Delphi
1
2
3
image1_rect:=image1.BoundsRect;
moneta_rect:=a2[j].BoundsRect;
 Res := IntersectRect( image1_rect, moneta_rect);
Добавлено через 1 минуту
krapotkin, В чём проблема? Не запускается
Delphi
1
2
3
image1_rect:=image1.BoundsRect;
moneta_rect:=a2[j].BoundsRect;
 Res := IntersectRect( image1_rect, moneta_rect);
0
3759 / 2263 / 705
Регистрация: 29.05.2013
Сообщений: 9,613
06.06.2017, 17:06 11
Вы считать до 3 умеете? Сколько параметров у меня в примере и сколько у вас?
0
0 / 0 / 0
Регистрация: 03.10.2016
Сообщений: 47
06.06.2017, 17:17  [ТС] 12
Теперь стала запускаться, но выдаёт ошибку.
Delphi
1
2
3
4
5
6
7
8
    image1_rect:=image1.BoundsRect;
     moneta_rect:=a2[j].BoundsRect;
     Res := IntersectRect( R,image1_rect, moneta_rect);
 
 
     for j:=1 to 20 do
   if (a3[j]>0) and intersectrect(R,image1_rect, moneta_rect)  then
   begin
Добавлено через 22 секунды
Пытливый,
0
3759 / 2263 / 705
Регистрация: 29.05.2013
Сообщений: 9,613
06.06.2017, 17:21 13
Видимо какую ошибку мы должны догадаться сами? Зачем вы в двух местах делаете проверку и вообще зачем вам:
Delphi
1
 Res := IntersectRect( R,image1_rect, moneta_rect);
0
0 / 0 / 0
Регистрация: 03.10.2016
Сообщений: 47
06.06.2017, 18:09  [ТС] 14
Пытливый, Вот
Миниатюры
Бесконечные очки  
0
3759 / 2263 / 705
Регистрация: 29.05.2013
Сообщений: 9,613
06.06.2017, 18:49 15
Думаю что эта ошибка не имеет никакого отношения к функции IntersectRect, а вот обращение к не инициализированной переменной a3[j] вполне могло. Воспользуйтесь отладчиком и посмотрите, что конкретно вызывает эту ошибку.
0
06.06.2017, 18:49
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.06.2017, 18:49
Помогаю со студенческими работами здесь

Бесконечные фризы
Всем привет. Такая проблема: комп довольно старенький, но до недавнего времени служил исправно....

Бесконечные суммы
Создать программу для вычисления бесконечных сумм. Вычислить приближенное значение бесконечной...

Бесконечные типы
Итак, в результате определённых измышлений возник следующий код. makeAktor f ch = do msg <-...

Бесконечные списки
Здравствуйте! Помогите пожалуйста реализовать программу: Определить возрастающую...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru