![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() |
Shaienn |
![]()
Сообщение
#1
|
Гость ![]() |
Здравствуйте программеры...
Подскажите, если кто сталкивался, как реализовать в графической программе правило "Угол падения равен углу отражения"... Вот сижу, думаю, а ничего не идет.. |
![]() ![]() |
___ALex___ |
![]()
Сообщение
#2
|
![]() Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 282 Репутация: ![]() ![]() ![]() |
вот посмотри этот код.
условие задачи: две точки движутся в разных направлениях упруго отражаясь от краёв экрана при этом движется линия их соединяющая. Удачи Код program Lab2; uses Crt, Graph, Dos; type NaprType = (lup, ldown, rup, rdown); var GrDriver, GrMode, ErrCode: Integer; x1, y1, x2, y2: Integer; NaprP1, NaprP2: NaprType; h, m, s, s100, sec: Word; procedure SelectNapr(var Napr1, Napr2: NaprType); begin case Random(4) of 0: Napr1 := lup; 1: Napr1 := ldown; 2: Napr1 := rup; 3: Napr1 := rdown; end; case Random(4) of 0: Napr2 := lup; 1: Napr2 := ldown; 2: Napr2 := rup; 3: Napr2 := rdown; end; if Napr1 = Napr2 then SelectNapr(Napr1, Napr2); end; procedure MovPoint(var x, y: Integer; var Napr: NaprType); begin case Napr of lup : begin x := x - 2; y := y - 1; end; ldown : begin x := x - 2; y := y + 1; end; rup : begin x := x + 2; y := y - 1; end; rdown : begin x := x + 2; y := y + 1; end; end; if x <= 0 then begin case Napr of lup : Napr := rup; ldown: Napr := rdown; end; MovPoint(x, y, Napr); end else if y <= 0 then begin case Napr of lup: Napr := ldown; rup: Napr := rdown; end; MovPoint(x, y, Napr); end else if x >= 639 then begin case Napr of rup : Napr := lup; rdown: Napr := ldown; end; MovPoint(x, y, Napr); end else if y >= 479 then begin case Napr of ldown: Napr := lup; rdown: Napr := rup; end; MovPoint(x, y, Napr); end; end; Begin ClrScr; GrDriver := VGA; GrMode := VGAHi; InitGraph(GrDriver, GrMode, 'C:TPBGI'); ErrCode := GraphResult; if ErrCode <> grOk then begin Write('Ошибка инициализации графики: ', GraphErrorMsg(ErrCode)); repeat until KeyPressed; Halt(0); end; Randomize; x1 := Random(GetMaxX + 1); y1 := Random(GetMaxY + 1); x2 := Random(GetMaxX + 1); y2 := Random(GetMaxY + 1); SelectNapr(NaprP1, NaprP2); GetTime(h, m, s, s100); sec := s; SetColor(Random(GetMaxColor) + 1); SetWriteMode(XorPut); repeat GetTime(h, m, s, s100); if sec <> s then begin sec := s; SetColor(Random(GetMaxColor) + 1); end; Line(x1, y1, x2, y2); Delay(50); Line(x1, y1, x2, y2); MovPoint(x1, y1, NaprP1); MovPoint(x2, y2, NaprP2); until KeyPressed; CloseGraph; End. Сообщение отредактировано: volvo - 17.12.2004 11:06 |
![]() ![]() |
![]() |
Текстовая версия | 24.06.2025 13:16 |