19.10.2012, 21:27 | #1 (permalink) |
Member
Регистрация: 01.02.2012
Сообщений: 75
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Алгоритмы, анимация
вот такая прога,(не к этой фигуре)только величины линии, кругов сколько там набирать не знаю как..помогите пожалуйста если поняли.. была бы очень признательна. uses Graph,CRT; var Driver, Mode:Integer; x,y,a,b:integer; Xs,Ys:string; k:char; begin Driver:=Detect; InitGraph(Driver,Mode,' '); if GraphResult <> grok then Halt(1); x:=100; y:=100; a:=20; repeat SetColor(10); Circle (x+120,y+140,a+20); Circle (x+230,y+40,a+20); Circle (x+340,y+140,a+20); Line(x+190,y+40,x+120,y+100); Line(x+270,y+40,x+340,y+100); Line(x+230,y+80,x+160,y+140); Line(x+230,y+80,x+300,y+140); Line(x+160,y+140,x+230,y+200); Line(x+230,y+200,x+300,y+140); SetColor(0); Str(x,Xs); Str(y,Ys); SetColor(5); OutTextXY(300,150,'x='+Xs+' : y='+Ys); k:=ReadKey; SetColor(0); Circle (x+120,y+140,a+20); Circle (x+230,y+40,a+20); Circle (x+340,y+140,a+20); Line(x+190,y+40,x+120,y+100); Line(x+270,y+40,x+340,y+100); Line(x+230,y+80,x+160,y+140); Line(x+230,y+80,x+300,y+140); Line(x+160,y+140,x+230,y+200); Line(x+230,y+200,x+300,y+140); Str(x,Xs); Str(y,Ys); Setcolor(0); OutTextXY(300,150,'x='+Xs+' : y='+Ys); if k=#77 then x:=x+10; if k=#75 then x:=x-10; if k=#72 then y:=y-10; if k=#80 then y:=y+10; if k=#13 then a:=a+10; if k=#8 then a:=a-10; if k=#49 then b:=4; if k=#50 then b:=2; if k=#51 then b:=3; if k=#52 then b:=5; if k=#53 then b:=6; if k=#54 then b:=7; if k=#55 then b:=8; if k=#56 then b:=9; if k=#57 then b:=10; if k=#58 then b:=1; until k=#27; CloseGraph; end. Последний раз редактировалось Гульназ.М.; 19.10.2012 в 21:37 |
19.10.2012, 21:27 | |
Helpmaster
Member
Регистрация: 08.03.2016
Сообщений: 0
|
Подскажу вам, что решение проблемы может крыться в аналогичных обсуждениях Анимация картинки Зачетная работа по информатике. Алгоритмы Анимация в Паскале Составить алгоритмы блок-схемы Анимация на Windows 7 |
20.10.2012, 09:50 | #2 (permalink) | |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
Цитата:
Код:
uses Graph,CRT; Const Step=50; var Driver, Mode:Integer; i,j:ShortInt; CenterX,CenterY:Word; begin Driver:=Detect; InitGraph(Driver,Mode,' '); if GraphResult <> grok then Halt(1); CenterX:=GetMaxX div 2; CenterY:=GetMaxY div 2; SetLineStyle(DottedLn,0,NormWidth); For i:=-3 to 3 do Line(CenterX+Step*4,CenterY+Step*i,CenterX-Step*4,CenterY+Step*i); For j:=-3 to 3 do Line(CenterX+Step*j,CenterY+Step*4,CenterX+Step*j,CenterY-Step*4); SetLineStyle(SolidLn,0,ThickWidth); Circle(CenterX,CenterY,2*Step); Circle(CenterX-3*Step,CenterY,Step); Circle(CenterX+3*Step,CenterY,Step); Circle(CenterX,CenterY-3*Step,Step); Circle(CenterX,CenterY+3*Step,Step); Rectangle(CenterX-4*Step,CenterY+4*Step,CenterX+4*Step,CenterY-4*Step); Rectangle(CenterX-3*Step,CenterY+3*Step,CenterX+3*Step,CenterY-3*Step); Line(CenterX-Step*4,CenterY-Step*4,CenterX+Step*4,CenterY+Step*4); Line(CenterX-Step*4,CenterY+Step*4,CenterX+Step*4,CenterY-Step*4); ReadKey; CloseGraph; End. |
|
20.10.2012, 18:47 | #3 (permalink) |
Member
Регистрация: 01.02.2012
Сообщений: 75
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
спасибо конечно,но мне самый простой нужен был вид величин,мы такое как вы написали не проходили..а нужно по пройденному, вот как здесь:Circle (x+120,y+140,a+20);
Circle (x+230,y+40,a+20); Circle (x+340,y+140,a+20); Line(x+190,y+40,x+120,y+100); Line(x+270,y+40,x+340,y+100); Line(x+230,y+80,x+160,y+140); Line(x+230,y+80,x+300,y+140); Line(x+160,y+140,x+230,y+200); там x,y,r, a должны быть и по градусам.. у меня простые фигуры получаются а такая-нет, |
20.10.2012, 19:27 | #4 (permalink) |
support
Регистрация: 19.08.2007
Адрес: Зея
Сообщений: 15,797
Записей в дневнике: 71
Сказал(а) спасибо: 166
Поблагодарили 203 раз(а) в 86 сообщениях
Репутация: 75760
|
GetMaxX - возвращает максимальную координату по оси OX
GetMaxY - возвращает максимальную координату по оси OY SetLineStyle - задает стиль линий, в данном случае используются линии двух типов - штриховые и сплошные. Переменные CenterX и CenterY содержат соответственно координаты середины экрана, отталкиваясь от этой точки и вычисляются координаты для прямоугольников, окружностей и линий. Переменная Step задает величину сдвига координат, это то же самое, что вы к x (к y) прибавляете (или отнимаете) какое-то число. В принципе, основные непонятки разъяснил, более подробно читайте здесь: http://www.tehnari.ru/attachments/f2...adhaiienoa.zip |
20.10.2012, 20:15 | #5 (permalink) |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
Лёш, спасибо за помощь, потому как я претензий уважаемой Гульназ не понял напрочь. Мне-то казалось, что всё предельно просто: прямоугольники, круги, линии... И градусы зачем-то понадобились - как будто там дуги иди эллипсы... Ну и ладно - не подошло, и пёс с ним: у меня эта "программа" заняла 10 минут, не жалко.
А вообще последнее время это сплошное нытьё обращающихся за помощью на тему "сделайте не так, как надо, а в пределах того, что мы проходили" изрядно достает. То им функцию нельзя: "не проходили", то, вишь, "как хотите, но чтобы без циклов, циклов мы не знаем" ну и т.п. Между прочим, если это преподские требования типа "ни шагу за рамки того, что "проходили"", то таких преподов нужно IMHO отстреливать, чтобы не мучились. А вообще давно подозреваю, что что-то с госпожой Гульназ.М. "нечисто": ну не может такого быть, чтобы студентке приходилось сегодня писать формы отчетов на HTML, завтра - создавать базы данных через формы Delphi, послезавтра - осваивать программную установку приложений, а потом вдруг нырять как с вершины Ниагарского водопада в детски-примитивные задачки на Паскале, да еще с рефреном "мы не проходили". Вот думаю, не работает ли под вывеской Гульназ.М. бюро добрых (небескорыстных) услуг лоботрясам-студентам? Если так, то, как говорит герой одного мультика, "это нам обидно!". P.S. Кстати, сейчас заметил: с циклами построения сетки несколько "перемудрил". Исправил. |
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
20.10.2012, 20:25 | #6 (permalink) | |
support
Регистрация: 19.08.2007
Адрес: Зея
Сообщений: 15,797
Записей в дневнике: 71
Сказал(а) спасибо: 166
Поблагодарили 203 раз(а) в 86 сообщениях
Репутация: 75760
|
Цитата:
Владимир, а вы зачем из первоначального листинга исключили отработку нажатия клавиш? Насколько я понял, в первоначальном листинге что-то вроде прицела рисуется, а под анимацией надо понимать сдвиг прицела в определенном направлении в зависимости от нажатой клавиши. |
|
20.10.2012, 20:41 | #10 (permalink) |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
Леша, по секрету : а я вообще листинг не разбирал, посмотрел на фигуру нарисованную, да и написал программу ейного построения. Только тс...с!
|
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
|
|