![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() |
qwerty |
![]()
Сообщение
#1
|
Новичок ![]() Группа: Пользователи Сообщений: 21 Пол: Мужской Репутация: ![]() ![]() ![]() |
НАРОД !!!! Тут такая задачка: Необходимо разработать приложение, в котором шарик падает сверху экрана со случайной горизонтальной скоростью (V=4..10). Отскок от стенок происходит с потерей энергии - не вполне упругий удар k=0,6..0,9.
Спасибо. |
![]() ![]() |
volvo |
![]()
Сообщение
#2
|
Гость ![]() |
qwerty
От нижней поверхности тоже нужен отскок? Или шарик "пролетает" экран? |
qwerty |
![]()
Сообщение
#3
|
Новичок ![]() Группа: Пользователи Сообщений: 21 Пол: Мужской Репутация: ![]() ![]() ![]() |
Отскок нужен от ВСЕХ поверхностей, как будто шарик "в коробке".
Сообщение отредактировано: qwerty - 19.12.2004 21:04 |
volvo |
![]()
Сообщение
#4
|
Гость ![]() |
qwerty
Вот кое-что из моих старых программ (можешь поиграться с k и divider) Код uses crt, graph; type TVector = record X, Y: real; end; const divider = 1; k = 0.7; ball_size = 5; var pos, v: TVector; procedure ShowBall(color: byte); begin setcolor(color); circle(trunc(pos.X), trunc(pos.Y), ball_size); end; procedure RecalcBall; procedure ChangeDirectionX; begin pos.X := pos.X - v.X * divider; v.X := - v.X * k end; procedure ChangeDirectionY; begin pos.Y := pos.Y - v.Y * divider; v.Y := - v.Y * k end; begin ShowBall(black); pos.X := pos.X + v.X * divider; if pos.X >= getmaxx - ball_size then ChangeDirectionX else if pos.X <= ball_size then ChangeDirectionX; { else inc(pos.X, v.X * divider); } pos.Y := pos.Y + v.Y * divider; if pos.Y >= getmaxy - ball_size then ChangeDirectionY else if pos.Y <= ball_size then ChangeDirectionY; { else inc(pos.Y, v.Y * divider); } ShowBall(white) end; var grDriver, grMode, errCode: Integer; to_exit: boolean; begin grDriver := Detect; initgraph(grDriver, grMode,''); errCode := graphresult; if errCode <> grOk then begin writeln('Graphics error:', grapherrormsg(errCode)); halt end; v.X := random(7) + 4; v.Y := 10; pos.X := getmaxx div 2; pos.y := 0; to_exit := false; ShowBall(white); repeat RecalcBall; delay(10000); if keypressed then begin to_exit := (readkey = #27); while keypressed do readkey end until to_exit; setcolor(white); end. |
qwerty |
![]()
Сообщение
#5
|
Новичок ![]() Группа: Пользователи Сообщений: 21 Пол: Мужской Репутация: ![]() ![]() ![]() |
volvo
Огромное спасибо !!!!!! Выручил !!!!! |
![]() ![]() |
![]() |
Текстовая версия | 18.07.2025 17:07 |