Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Delphi, Kylix and Pascal


Ответ
 
Опции темы Опции просмотра
Старый 19.10.2012, 21:27   #1 (permalink)
Гульназ.М.
Member
 
Регистрация: 01.02.2012
Сообщений: 75
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию Алгоритмы, анимация

oioi0377.jpg нужно указать величины(Line(....)LineTo(..),Circle(....)) этой фигуры на проге..

вот такая прога,(не к этой фигуре)только величины линии, кругов сколько там набирать не знаю как..помогите пожалуйста если поняли.. была бы очень признательна.

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
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Подскажу вам, что решение проблемы может крыться в аналогичных обсуждениях

Анимация картинки
Зачетная работа по информатике. Алгоритмы
Анимация в Паскале
Составить алгоритмы блок-схемы
Анимация на Windows 7

Старый 20.10.2012, 09:50   #2 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от Гульназ.М. Посмотреть сообщение
нужно указать величины(Line(....)LineTo(..),Circle(....)) этой фигуры на проге..
И в чем проблемы?
Код:
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.
Миниатюры
ffgg.jpg  
Vladimir_S вне форума   Ответить с цитированием
Старый 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)
AlexZir
support
 
Аватар для AlexZir
 
Регистрация: 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
AlexZir вне форума   Ответить с цитированием
Старый 20.10.2012, 20:15   #5 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Лёш, спасибо за помощь, потому как я претензий уважаемой Гульназ не понял напрочь. Мне-то казалось, что всё предельно просто: прямоугольники, круги, линии... И градусы зачем-то понадобились - как будто там дуги иди эллипсы... Ну и ладно - не подошло, и пёс с ним: у меня эта "программа" заняла 10 минут, не жалко.

А вообще последнее время это сплошное нытьё обращающихся за помощью на тему "сделайте не так, как надо, а в пределах того, что мы проходили" изрядно достает. То им функцию нельзя: "не проходили", то, вишь, "как хотите, но чтобы без циклов, циклов мы не знаем" ну и т.п. Между прочим, если это преподские требования типа "ни шагу за рамки того, что "проходили"", то таких преподов нужно IMHO отстреливать, чтобы не мучились.


А вообще давно подозреваю, что что-то с госпожой Гульназ.М. "нечисто": ну не может такого быть, чтобы студентке приходилось сегодня писать формы отчетов на HTML, завтра - создавать базы данных через формы Delphi, послезавтра - осваивать программную установку приложений, а потом вдруг нырять как с вершины Ниагарского водопада в детски-примитивные задачки на Паскале, да еще с рефреном "мы не проходили". Вот думаю, не работает ли под вывеской Гульназ.М. бюро добрых (небескорыстных) услуг лоботрясам-студентам? Если так, то, как говорит герой одного мультика, "это нам обидно!".

P.S. Кстати, сейчас заметил: с циклами построения сетки несколько "перемудрил". Исправил.
Vladimir_S вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Старый 20.10.2012, 20:25   #6 (permalink)
AlexZir
support
 
Аватар для AlexZir
 
Регистрация: 19.08.2007
Адрес: Зея
Сообщений: 15,797
Записей в дневнике: 71
Сказал(а) спасибо: 166
Поблагодарили 203 раз(а) в 86 сообщениях
Репутация: 75760
По умолчанию

Цитата:
Сообщение от Vladimir_S Посмотреть сообщение
не работает ли под вывеской Гульназ.М. бюро добрых (небескорыстных) услуг лоботрясам-студентам
Не исключено, и, думаю, не только студентам, а просто лоботрясам.

Владимир, а вы зачем из первоначального листинга исключили отработку нажатия клавиш? Насколько я понял, в первоначальном листинге что-то вроде прицела рисуется, а под анимацией надо понимать сдвиг прицела в определенном направлении в зависимости от нажатой клавиши.
AlexZir вне форума   Ответить с цитированием
Старый 20.10.2012, 20:31   #7 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от AlexZir Посмотреть сообщение
Я вот только не пойму, при чем тут, собственно, анимация?
Этого я тоже не понял.
Vladimir_S вне форума   Ответить с цитированием
Старый 20.10.2012, 20:33   #8 (permalink)
AlexZir
support
 
Аватар для AlexZir
 
Регистрация: 19.08.2007
Адрес: Зея
Сообщений: 15,797
Записей в дневнике: 71
Сказал(а) спасибо: 166
Поблагодарили 203 раз(а) в 86 сообщениях
Репутация: 75760
По умолчанию

В первом посте прописан цикл отработки нажатия клавиш с пересчетом координат
AlexZir вне форума   Ответить с цитированием
Старый 20.10.2012, 20:37   #9 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от AlexZir Посмотреть сообщение
В первом посте прописан цикл отработки нажатия клавиш с пересчетом координат
Да могём и это, но тогда задание надо внятно формулировать.
Vladimir_S вне форума   Ответить с цитированием
Старый 20.10.2012, 20:41   #10 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от AlexZir Посмотреть сообщение
Владимир, а вы зачем из первоначального листинга исключили отработку нажатия клавиш? Насколько я понял, в первоначальном листинге что-то вроде прицела рисуется, а под анимацией надо понимать сдвиг прицела в определенном направлении в зависимости от нажатой клавиши.
Леша, по секрету : а я вообще листинг не разбирал, посмотрел на фигуру нарисованную, да и написал программу ейного построения. Только тс...с!
Vladimir_S вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 09:16.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.