1 / 1 / 0
Регистрация: 16.12.2008
Сообщений: 15
|
|
1 | |
Изобразить на экране “движущийся” отрезок, траекторией которого является четырехугольник.16.12.2008, 12:50. Показов 1558. Ответов 14
Метки нет (Все метки)
Изобразить на экране “движущийся” отрезок, траекторией которого является четырехугольник. Учесть, что размер отрезка должен сохраняться в углах четырехугольника, т.е. в углах он типо как змейка изгибаться должен.
Очень охота экзамен автоматом получить))) Помогите пожалуйста, не то хана.
0
|
16.12.2008, 12:50 | |
Ответы с готовыми решениями:
14
Изобразить на экране отрезок, вращающийся в плоскости экрана вокруг точки, делящей отрезок в отношении 1:3 Изобразить на экране движущийся объект Изобразить на экране компьютера рисунок, движущийся слева направо по экрану Изобразить на экране отрезок, вращающийся в плоскости экрана вокруг своей середины |
2 / 2 / 0
Регистрация: 15.12.2008
Сообщений: 37
|
|
16.12.2008, 12:55 | 2 |
Попробую, нада подумать. Может напишу))
Добавлено через 1 минуту 53 секунды Итак, вроде появляются мысли... Нужно знать вот что: параметры четырёхугольника и длину отрезка.
0
|
Администратор
83618 / 52196 / 244
Регистрация: 10.04.2006
Сообщений: 13,426
|
|
16.12.2008, 12:57 | 3 |
0
|
2 / 2 / 0
Регистрация: 15.12.2008
Сообщений: 37
|
|
16.12.2008, 12:58 | 4 |
Ну хорошо... Щас, дайте сообразить.
0
|
1 / 1 / 0
Регистрация: 16.12.2008
Сообщений: 15
|
|
16.12.2008, 12:58 [ТС] | 5 |
Длина, не важно, ну например 20-40.
Ну параметры прямоугольника: левый верхний угол 2,2, и правый нижний, ну допустим, 638,478. примерно так
0
|
2 / 2 / 0
Регистрация: 15.12.2008
Сообщений: 37
|
|
16.12.2008, 13:00 | 6 |
(ещё надо редактировать)
(у мя бред получился! мозги кипят! ) Код
program otrezok; uses crt,graph; var x1,y1,x2,y2,dlina:integer; kusok1,kusok2:integer; gd,gm:integer; nexvat:integer; shag:integer; begin dlina:=30; x1:=2; y1:=2; x2:=638; y2:=478; initgraph(gd,gm,''); kusok1:=dlina; kusok2:=0; nexvat:=x2-x1-dlina; shag:=1; repeat {пока только виртуальная часть} if shag=1 then begin nexvat:=y2-y1-dlina; if nexvat=0 then shag:=2; end; if shag=2 then begin nexvat:=x2-x1-dlina; if nexvat=0 then shag:=2; end; if shag=3 then begin nexvat:=y2-y1-dlina; if nexvat=0 then shag:=4; end; if shag=4 then begin nexvat:=x2-x1-dlina; if nexvat=0 then shag:=1; end; until keypressed; closegraph; end.
0
|
1 / 1 / 0
Регистрация: 16.12.2008
Сообщений: 15
|
|
17.12.2008, 12:15 [ТС] | 7 |
и у меня кипят((( уже неделю мучаюсь
Добавлено через 20 часов 45 минут 57 секунд получается? Просто не знаю кто мне ещё поможет
0
|
Of Wolf and Man
999 / 198 / 5
Регистрация: 09.07.2008
Сообщений: 1,784
|
|
17.12.2008, 12:21 | 8 |
а я не парился сделал объект змейки в котором был динамический список элементов змейки с координатами (х,у) и при движении , начиная с последнего , присваивать всем элементам координаты предыдущего. А самому первому меняем координату на нужную.
0
|
1 / 1 / 0
Регистрация: 16.12.2008
Сообщений: 15
|
|
17.12.2008, 12:23 [ТС] | 9 |
чото мозг не воспринимает твоего поста))) может у тебя исходник остался??
0
|
Of Wolf and Man
999 / 198 / 5
Регистрация: 09.07.2008
Сообщений: 1,784
|
|
17.12.2008, 12:42 | 10 |
Код
{sozdayom dinamicheskiy spisok} type segp = ^segment; segment = record x,y:integer; {koordinati tochki ili kuska zmeyki} next,prev:segp; end; zmeya = object begg, endd, curr :segp; {ukazateli na nachalniy, konechniy i tekushiy element spiska} {metodi obrabotki (dvizjeniya i.t.d} end; после этого берешь последний элемент и присваиваешь ему координаты предпоследнего. то же самое с предпоследним. и так далее до 2го, которому присваиваются координаты первого элемента. а первый элемент сдвигаешь так как тебе надо .
0
|
1 / 1 / 0
Регистрация: 16.12.2008
Сообщений: 15
|
|
17.12.2008, 12:46 [ТС] | 11 |
я имел ввиду полную программу, а не кусок)))
0
|
Of Wolf and Man
999 / 198 / 5
Регистрация: 09.07.2008
Сообщений: 1,784
|
|
17.12.2008, 12:56 | 12 |
полную долго ) у меня времени нет... я на работе. если освобожусь - напишу.
а вообще если знаешь как работать со списками - сам можешь написать. Добавлено через 5 минут 13 секунд вообще вот. Это без динамики т.е. где не надо наращивать твою "змейку" Код
type a = record x,y: integer; end; var arr: array [1..8] of a; i:integer; begin {zapolnenie} for i:=1 to 8 do begin arr[i].x:=10+i; arr[i].y:=20; end; {peremeshenie} for i:=8 to 2 do begin arr[i].x:=arr[i-1].x; arr[i].y:=arr[i-1].y; end; arr[1].x:=arr[1].x +- 1 ; {smotrya kuda dvigat nachalo otrezka po gorizontali} arr[1].y:=arr[1].y +- 1 ; {smotrya kuda dvigat nachalo otrezka po verticali} {------------} end.
0
|
1 / 1 / 0
Регистрация: 16.12.2008
Сообщений: 15
|
|
17.12.2008, 15:34 [ТС] | 13 |
списки ты имеешь ввиду записи? я их очень давно проходил, а КОНЬспекты не писал, поэтому я не смогу с твоим куском ничего сделать((( в общем мне надо до воскресенья сделать, если успеешь напиши пожалуйста. просто я ваще уже не знаю чо делать. мне дали 4 задачи, если я их решу, мне автоматом ставят экзамен. остальные 3 я уже сделал, показал преподу, а вот с этой заминка вышла.
Добавлено через 45 минут 38 секунд всем спасибо, кто пытался мне помочь! мне случайно попался батя Паскаля, который написал её за 10 минут. но вам всё равно спасибо. P.S. кому интересно, могу скинуть код
0
|
Супер-модератор
8783 / 2536 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
|
|
17.12.2008, 15:47 | 14 |
ну яви уже код бати паскаля
0
|
1 / 1 / 0
Регистрация: 16.12.2008
Сообщений: 15
|
|
18.12.2008, 08:50 [ТС] | 15 |
program otrezok;
uses graph, crt; var x, y, x1, y1, x2, y2, len : word; gd, gm : integer; procedure draw( x, y, len : word); begin if (x = x1) then begin if (y2 - y > len) then line(x, y, x, y + len) else begin line( x, y, x, y2 ); line(x1, y2, x1 + (len - y2 + y), y2); end end; if (x = x2) then begin if (y - y1 > len) then line(x, y, x, y - len) else begin line(x, y, x, y1); line(x2, y1, x2 - (len - y + y1 ), y1); end; end; if (y = y1) then begin if (x - x1 > len) then line(x, y, x - len, y) else begin line(x, y, x1, y); line(x1, y1, x1, y1 + (len - x + x1)); end; end; if (y = y2) then begin if (x2 - x > len) then line(x, y, x + len, y) else begin line(x, y, x2, y); line(x2, y2, x2, y2 - (len - x2 + x)); end; end; end; begin write ('koordinati 1 ugla (x,y): '); readLn( x1, y1); write ('koordinati 2 ugla (x,y): '); readln (x2, y2); write ('dlina otrezka: '); readLn(len); initgraph(gd, gm, 'd:\enjoy\soft\bgi'); setColor (white); x := x1; y := y1; repeat delay(1500); setColor(black); draw(x, y, len); if (x = x1) then if (y = y1) then x := x + 1 else y := y - 1 else if (x = x2) then if (y = y2) then x := x - 1 else y := y + 1 else if (y = y1) then x := x + 1 else x := x - 1; setColor(white); draw(x, y, len); until (keypressed); closeGraph; end.
0
|
18.12.2008, 08:50 | |
18.12.2008, 08:50 | |
Помогаю со студенческими работами здесь
15
Изобразить на экране отрезок, вращающийся в плоскости экрана вокруг своей середины Изобразить на экране отрезок, вращающийся в плоскости экрана вокруг своего конца Графика.Изобразить на форме отрезок, цвет которого плавно меняется Изобразить на экране круг, движущийся по окружности с угловой скоростью, управляймой клавишами ">" и "<". Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |