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

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

06.06.2017, 15:12. Показов 858. Ответов 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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
06.06.2017, 15:12
Ответы с готовыми решениями:

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

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

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

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

14
 Аватар для krapotkin
5872 / 4600 / 1448
Регистрация: 14.04.2014
Сообщений: 20,414
Записей в блоге: 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
 Аватар для Пытливый
3760 / 2264 / 705
Регистрация: 29.05.2013
Сообщений: 9,616
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
 Аватар для krapotkin
5872 / 4600 / 1448
Регистрация: 14.04.2014
Сообщений: 20,414
Записей в блоге: 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
 Аватар для krapotkin
5872 / 4600 / 1448
Регистрация: 14.04.2014
Сообщений: 20,414
Записей в блоге: 20
06.06.2017, 16:10 8
все случаи пересечения прямоугольников идентичны
у вас монета это один прямоугольник, image - второй прямоугольник
и вы определяете, пересекаются они или нет
какой еще идентичности вы искали? слово монетка?
0
 Аватар для Пытливый
3760 / 2264 / 705
Регистрация: 29.05.2013
Сообщений: 9,616
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
 Аватар для Пытливый
3760 / 2264 / 705
Регистрация: 29.05.2013
Сообщений: 9,616
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
 Аватар для Пытливый
3760 / 2264 / 705
Регистрация: 29.05.2013
Сообщений: 9,616
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
 Аватар для Пытливый
3760 / 2264 / 705
Регистрация: 29.05.2013
Сообщений: 9,616
06.06.2017, 18:49 15
Думаю что эта ошибка не имеет никакого отношения к функции IntersectRect, а вот обращение к не инициализированной переменной a3[j] вполне могло. Воспользуйтесь отладчиком и посмотрите, что конкретно вызывает эту ошибку.
0
06.06.2017, 18:49
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
06.06.2017, 18:49
Помогаю со студенческими работами здесь

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
Преобразование полей (элементов управления содержимым) в обычный текст
РоΜа 23.01.2025
Возникла необходимость преобразовать поля в текст (те, что на вкладке разработчик добавляются) . Помучившись родил следующее: Sub ПоляВТекст() Преобразует все поля в текст (даты, текст,. . .
Как проверить существование директории в скрипте Bash
bt_guru 23.01.2025
При разработке скриптов Bash одной из ключевых задач является корректная работа с файловой системой, где особое место занимает проверка существования директорий. Эта операция становится критически. . .
Как работают срезы (slice) в Python
bytestream 23.01.2025
Python предоставляет разработчикам мощный и гибкий инструмент для работы с последовательностями данных - срезы (slices). Эта функциональность позволяет извлекать, модифицировать и управлять. . .
Как удалить подмодуль (submodule) в Git
bytestream 23.01.2025
При работе с крупными проектами в системе контроля версий Git разработчики часто сталкиваются с необходимостью управления зависимостями и внешними компонентами. Подмодули (submodules) представляют. . .
В чем разница между @staticmethod и @classmethod в Python. Декораторы методов
bytestream 23.01.2025
В Python декораторы методов представляют собой мощный инструмент, позволяющий модифицировать поведение функций и методов без изменения их исходного кода. Эта возможность является одной из. . .
Как преобразовать InputStream в String в Java
bytestream 23.01.2025
В мире Java-разработки работа с потоками данных является одной из ключевых операций при создании современных приложений. InputStream, как фундаментальный класс для обработки входных потоков данных,. . .
Как обновить форк (ответвление) репозитория в Git
bytestream 23.01.2025
Одним из наиболее мощных инструментов Git для организации совместной работы является механизм форкинга репозиториев, который позволяет создавать независимые копии проектов для дальнейшей разработки. . . .
Как работает async/await в C#. Асинхронное программировани­е в .NET
bytestream 23.01.2025
Введение в асинхронное программирование Асинхронное программирование представляет собой важнейшую концепцию современной разработки программного обеспечения, особенно в контексте создания. . .
КуМир: полное руководство
bytestream 23.01.2025
Введение в КуМир: история создания и назначение КуМир (Комплект Учебных МИров) представляет собой образовательную среду программирования, которая была создана для обучения основам алгоритмизации и. . .
Что такое OLAP. Где и как использовать многомерный анализ данных
bytestream 23.01.2025
Введение в OLAP-технологии В современном мире бизнес-аналитика и обработка больших массивов данных играют ключевую роль в принятии стратегических решений. Организации накапливают огромные объемы. . .
MongoDB: что это, для чего нужна и как использовать
bytestream 23.01.2025
Введение в MongoDB: современная документоориентированная СУБД В современном мире разработки программного обеспечения выбор правильной системы управления базами данных является критически важным. . .
Как использовать закрытый ключ шифрования в Git. Шифрование в Git
bytestream 23.01.2025
Установка и настройка закрытых ключей в Git предоставляет дополнительный уровень безопасности для работы с репозиториями. Для начала необходимо создать пару ключей, обычно это осуществляется с. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru