![]() |
|
Модераторы: volvo877, Snowy, MetalFan |
![]()
|
|
| Taur |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 30.3.2008 Репутация: нет Всего: нет |
Возникла проблема, нужно нарисовать точку на паскале и заставить ее перемещаться по отрезку, проблема в том что точку нарисовал и заставил ее перемещаться, но не могу понять к это сделать на опр отрезке
+ точка должна возвращаться, а она просто уезжает за экран и назад ни в какую: Вот кусочек программы где мне кажется есть ошибка: Procedure TPoint.Move; Begin Hide; if (x=300) or (x=100) then step:=step*(-1); x:=round X+step; Show; end; |
|||
|
||||
| volvo877 |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2073 Регистрация: 15.11.2004 Репутация: 2 Всего: 116 |
Мне тоже так кажется. X какого типа? Если присутствует Round (кстати, твой "кусочек" перепечатан, а не скопирован, поэтому ты внес дополнительную ошибку, то что ты привел, компилироваться не будет), то скорее всего - вещественного? Тогда какое ты имеешь право сравнивать простым "="? Это только с целыми работает... А зачем вещественные координаты, кстати, не расскажешь? Чтоб усложнить задачу себе же?
В общем, надо видеть программу полностью, чтобы сказать более точно. |
|||
|
||||
| Taur |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 30.3.2008 Репутация: нет Всего: нет |
Вот собсна сама программа :
Uses GRAPH, CRT; Type TPoint=object x , y : Integer; color : Word; step : Real; Procedure Show; Procedure Hide; Procedure Move; end; Procedure TPoint.Show; Begin putPixel (x,y, color); end; Procedure TPoint.Hide; Begin putPixel (x,y, black); end; Procedure TPoint.Move; Begin Hide; if (x=300) or (x=100) then step:=step*(-1); x:=round X+step; Show; end; Var P : TPoint; grDr, grMode : Integer; Begin grDr:=detect; grMode:=0; InitGraph (grDr, grMode, ''); P.color:=yellow; P.Step:=0.5; P.Show; Repeat P.Move; Delay (500); Until KeyPressed; closeGraph; End. |
|||
|
||||
| Virtuals |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 476 Регистрация: 27.11.2006 Репутация: нет Всего: 11 |
ошиибок 3
1. где начальные координаты х у 3. var xr:real; !!! очень нужно вместо Х (так как прибавив к целому 0.5 получим ничего) 2. if (x=300) or (x=100) then step:=step*(-1); не есть правильно, нужно поделить и уйти от равно if xr>299 then step:=abs(step)* (-1); if xr<101 then step:=abs(step) xr:=Xr+step; x:=round( Xr); |
|||
|
||||
![]()
|
| Правила форума "Delphi" | |
|
|
Запрещается! 1. Обсуждать и делится взломанными компонентами или программным обеспечением 2. Публиковать ссылки на варез 3. Оффтопить
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, THandle, Rrader, volvo877. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Object Pascal: кроссплатформенные технологии | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |