Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на языке Pascal


Хостинг Портала RusFAQ.ru:
MosHoster.ru - Профессиональный хостинг на Windows 2008

РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

Чемпионы рейтинга экспертов в этой рассылке

Тимошенко Дмитрий
Статус: Студент
Рейтинг: 133
∙ повысить рейтинг >>
Botsman
Статус: Практикант
Рейтинг: 99
∙ повысить рейтинг >>
Micren
Статус: Практикант
Рейтинг: 54
∙ повысить рейтинг >>

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Pascal

Выпуск № 884
от 18.05.2009, 06:35

Администратор:Калашников О.А.
В рассылке:Подписчиков: 267, Экспертов: 47
В номере:Вопросов: 1, Ответов: 1

Нам важно Ваше мнение об этой рассылке.
Оценить этот выпуск рассылки >>

Вопрос № 167061: Уважаемые Эксперты! Исправьте пожалуйста задачу, очень прошу <img src="http://rusfaq.ru/images/Forum/10.gif" border="0"> нужно чтобы границы были четкими, т.е. шарик не заходил на границу(слева так и есть а вот справа чуть чуть заходит), и нужно ...


Вопрос № 167.061
Уважаемые Эксперты! Исправьте пожалуйста задачу, очень прошу
нужно чтобы границы были четкими, т.е. шарик не заходил на границу(слева так и есть а вот справа чуть чуть заходит), и нужно исключить, чтобы шарик не двигался перпендикулярно линиям фигуры, т.е. только по диагонали, заранее премного благодарен!!!(код в приложении)

Приложение:

Отправлен: 12.05.2009, 13:58
Вопрос задал: S K A L T (статус: 1-й класс)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: Зенченко Константин Николаевич
Здравствуйте, S K A L T !

1)
Вы считываете изображение шарика с помощью: Getimage(i,j,i+6,j+6,p^);, обратите внимание на шестерки, это есть высота и ширина изображения, которую Вы не учитываете при проверке столкновения со стенкой в строках:
Код:
 { по оси X }
if (j<y5) and (i+dx>x2) or (j>y5) and (i+dx>x5) or (i+dx<x) then dx:=-dx;
{ по оси Y }
if (i<x5) and (j+dy>y1) or (i>x5) and (j+dy>y5) or (j+dy<y) then dy:=-dy;

при проверке нижнего-правого предела границ. Я эти строки переписал так:
Код:
 { по оси X }
if (j<y5) and (i+dx>x2-k) or (j>y5) and (i+dx>x5-k) or (i+dx<x) then dx:=-dx;
{ по оси Y }
if (i<x5) and (j+dy>y1-k) or (i>x5) and (j+dy>y5-k) or (j+dy<y) then dy:=-dy;

где k- константа равная шесть.
2)
В строках генерации начального смещения :
Код:
 repeat
dx:=random(3)-1; {-1 .. 1}
dy:=random(3)-1; {-1 .. 1}
until (dx<>0) and (dy<>0);

замените логическую операцию на AND, после этого у Вас останутся только диагональные направления и соответственно уже строкибудут лишние:
Код:
 if dy=0 then dy:=random(3)-1;
if dx=0 then dx:=random(3)-1;

Окончательный вариант в приложении.

Удачи Вам!

Приложение:

Ответ отправил: Зенченко Константин Николаевич (статус: Профессор)
Украина, Киев
----
Ответ отправлен: 12.05.2009, 20:47

Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 249048 на номер 1151 (Россия) | Еще номера >>
  • Отправить WebMoney:
  • Вам помогли? Пожалуйста, поблагодарите эксперта за это!


    Вы имеете возможность оценить этот выпуск рассылки.
    Нам очень важно Ваше мнение!
    Оценить этот выпуск рассылки >>

    Отправить вопрос экспертам этой рассылки

    Приложение (если необходимо):

    * Код программы, выдержки из закона и т.п. дополнение к вопросу.
    Эта информация будет отображена в аналогичном окне как есть.

    Обратите внимание!
    Вопрос будет отправлен всем экспертам данной рассылки!

    Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
    экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


    Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
    Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.

    Скажите "спасибо" эксперту, который помог Вам!

    Отправьте СМС-сообщение с тестом #thank НОМЕР_ОТВЕТА
    на короткий номер 1151 (Россия)

    Номер ответа и конкретный текст СМС указан внизу каждого ответа.

    Полный список номеров >>

    * Стоимость одного СМС-сообщения от 7.15 руб. и зависит от оператора сотовой связи. (полный список тарифов)
    ** При ошибочном вводе номера ответа или текста #thank услуга считается оказанной, денежные средства не возвращаются.
    *** Сумма выплаты эксперту-автору ответа расчитывается из суммы перечислений на портал от биллинговой компании.


    © 2001-2009, Портал RusFAQ.ru, Россия, Москва.
    Авторское право: ООО "Мастер-Эксперт Про"
    Техподдержка портала, тел.: +7 (926) 535-23-31
    Хостинг: "Московский хостер"
    Поддержка: "Московский дизайнер"
    Авторские права | Реклама на портале

    ∙ Версия системы: 5.13 от 01.12.2008

    Яндекс Rambler's Top100
    RusFAQ.ru | MosHoster.ru | MosDesigner.ru
    RusIRC.ru | Kalashnikoff.ru | RadioLeader.ru

    В избранное