IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

2 страниц V  1 2 >  
 Ответить  Открыть новую тему 
> 3 задачки на графику, помогите плиз
phoenix85
сообщение 26.06.2009 11:53
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 12
Пол: Мужской
Реальное имя: Stas

Репутация: -  0  +


Помогите, пожалуйста, решить 3 задачки в Паскале..
на выходных сдавать, а я в этом ни гу-гу...

есть 3 задачки:

1. сгибающаяся под тяжестью растущего плода ветка;

2. Перемещать три звезды разного цвета в пределах экрана;

3. Построить прямоугольник со сторонами разного цвета и основанием, движущимся согласно процедуре OTREZOK
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Archon
сообщение 26.06.2009 12:47
Сообщение #2


Профи
****

Группа: Пользователи
Сообщений: 618
Пол: Мужской

Репутация: -  24  +


Что, совсем ни гу-гу? Просто не ясно, с чего начинать помощь: с анимации, с графики или вообще с основ Паскаля.

Попробуй для начала первую сделать. Вот заготовка, а описание конкретных процедур для рисования можно найти например здесь.
uses
	Graph, Crt;

procedure DrawBranch;
begin
	{ Тут следует разместить команды для рисования ветки. }
end;
	
var
	gd, gm: Integer;
begin 
	gd := Detect;
	InitGraph(gd, gm, '');
	
	DrawBranch;
	
	ReadKey;
	CloseGraph;
end.


--------------------
Close the World...txeN eht nepO
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 26.06.2009 13:05
Сообщение #3


Гость






Archon, похоже, что не все так просто, и нарисовать надо не статическую ветку с плодом на ней, а анимацию, отображающую рост этого самого "фрукта" (ну, или что там еще на деревьях растет) и изгибание под его весом ветки. Заметь, все остальные задачи - тоже на анимацию...

А вообще, автору очень не мешало бы сначала ознакомиться с правилами (как форума в целом, так и этого раздела в частности), и только потом задавать вопросы...
 К началу страницы 
+ Ответить 
phoenix85
сообщение 26.06.2009 13:24
Сообщение #4


Новичок
*

Группа: Пользователи
Сообщений: 12
Пол: Мужской
Реальное имя: Stas

Репутация: -  0  +


я конечно много извиняюсь,
но просто время уже поджимает..

да, задачи на анимацию.. я уже не знаю, что и сделать...
помогите..

сори что может не туда пишу, но просто выхода уже нету...

а я в паскале - ноль...

так что помогите с кодами.. уж не ругайте сильно...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
phoenix85
сообщение 26.06.2009 14:17
Сообщение #5


Новичок
*

Группа: Пользователи
Сообщений: 12
Пол: Мужской
Реальное имя: Stas

Репутация: -  0  +


3ю задачу на треуголник решил..

а вот первые две - никак.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Archon
сообщение 26.06.2009 14:42
Сообщение #6


Профи
****

Группа: Пользователи
Сообщений: 618
Пол: Мужской

Репутация: -  24  +


Покажи, как решил, поможем переделать.


--------------------
Close the World...txeN eht nepO
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
phoenix85
сообщение 26.06.2009 14:45
Сообщение #7


Новичок
*

Группа: Пользователи
Сообщений: 12
Пол: Мужской
Реальное имя: Stas

Репутация: -  0  +


да третью я уже сделал,

мне надо с первыми двумя разобраться, или хотя бы со звездами...
напишите плиз код,

я не знаю как делать...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Archon
сообщение 26.06.2009 14:57
Сообщение #8


Профи
****

Группа: Пользователи
Сообщений: 618
Пол: Мужской

Репутация: -  24  +


Даже если кто-нибудь захочет делать тебе программы с нуля и бесплатно, ему придется гадать как именно их надо сделать. Например, можно ли использовать объекты, записи. Если ты приведешь свой код решения третьей задачи, это поможет правильно написать решение первых двух, а кроме того, покажет, что ты не халяву ловишь, а пытаешься и сам что-то сделать.


--------------------
Close the World...txeN eht nepO
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
phoenix85
сообщение 26.06.2009 15:17
Сообщение #9


Новичок
*

Группа: Пользователи
Сообщений: 12
Пол: Мужской
Реальное имя: Stas

Репутация: -  0  +


PROGRAM  treug;
      uses Graph;
      var  Gd,Gm: Integer;
   BEGIN
      Gd:=VGA; Gm:=VGAHi; InitGraph (Gd,Gm,'c:\tp\bgi');
      If  GraphResult=grOk
         then
begin
                 SetColor (LightMagenta); {cvet gorizont linii}
                 Line (120,210,520,210);  {gorizont otrezok }
                 SetColor (LightCyan);    {cvet levogo}
                 Line (120,210,320,10);   {levii katet}
                 SetColor (Green);        { cvet pravogo}
                 Line (320,10,520,210);   {pravii katet}
                 ReadLn
              end
 END.


вот код треугольника... а вращающаяся линия отпадает, не могу доделать

Сообщение отредактировано: Lapp - 26.06.2009 22:05
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Archon
сообщение 26.06.2009 16:01
Сообщение #10


Профи
****

Группа: Пользователи
Сообщений: 618
Пол: Мужской

Репутация: -  24  +


Ладно, вот код ко второй задаче. Разбирайся, задавай вопросы.
uses
	Graph, Crt;

const
	NumStars = 5;    { Число звезд. }
	StarRadius = 25; { Размер звезд. }
	Step = 1;        { Шаг, с которым перемещаются звезды. }
	FrameDelay = 1;  { Задержка кадра. Попробуй увеличить это значение, }
	                 { если звезды движутся слишком быстро.             }
	
var
	Star: array [0..5] of PointType;
	gd, gm: Integer;
	i: Integer;
	Pos, Offset: array[1..NumStars] of PointType;
	Color: array[1..NumStars] of Word;
begin 
	gd := Detect;
	InitGraph(gd, gm, '');
	
	{ Начальные координаты звезд, направления их движения и цвет задаются случайно. }
	Randomize;
	for i := 1 to NumStars do begin
		Pos[i].x := StarRadius + Random(GetMaxX - 2 * StarRadius);
		Pos[i].y := StarRadius + Random(GetMaxY - 2 * StarRadius);
		Offset[i].x := Step * (1 - 2 * Random(2));
		Offset[i].y := Step * (1 - 2 * Random(2));
		Color[i] := Random(GetMaxColor - 1) + 1;
	end;
	
	{ Вычисление вершин звезды. }
	for i := 0 to 5 do begin
		Star[i].x := Round(Sin(i * Pi * 0.8) * StarRadius);
		Star[i].y := Round(-Cos(i * Pi * 0.8) * StarRadius);
	end;

	{ Основной цикл. }
	repeat
		for i := 1 to NumStars do begin
			{ Стираем звезду. }
			SetColor(Black);
			SetViewPort(Pos[i].x, Pos[i].y, Pos[i].x, Pos[i].y, false);
			DrawPoly(6, Star);
			
			{ Меняем положение звезды. }
			Inc(Pos[i].x, Offset[i].x);
			Inc(Pos[i].y, Offset[i].y);
			
			{ Если звезда достигла края экрана, меняем направление ее движения. }
			if (Pos[i].x < StarRadius) or (Pos[i].x > GetMaxX - StarRadius) then
				Offset[i].x := -1 * Offset[i].x;
			if (Pos[i].y < StarRadius) or (Pos[i].y > GetMaxY - StarRadius) then
				Offset[i].y := -1 * Offset[i].y;
			
			{ Рисуем звезду в новом месте. }
			SetColor(Color[i]);
			SetViewPort(Pos[i].x, Pos[i].y, Pos[i].x, Pos[i].y, false);
			DrawPoly(6, Star);
		end;
		{ Задержка, чтобы кадры не сменяли друг друга слишком быстро. }
		Delay(FrameDelay);
	until KeyPressed;
	
	CloseGraph;
end.


--------------------
Close the World...txeN eht nepO
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
phoenix85
сообщение 26.06.2009 17:36
Сообщение #11


Новичок
*

Группа: Пользователи
Сообщений: 12
Пол: Мужской
Реальное имя: Stas

Репутация: -  0  +


Archon - огромное тебе спасибо, немного поэксперементировал со звездами...


блин, ты меня выручил...




а что делать с 1ой ? есть парочка идей..
можно сделать статическую линию и тупо круг под ней,
линия опускается, и круг немного увеличивается, (ну скажем до 10 раз так может происходить)..
а дальше надо сделать, что бы предыдущий рисунок стирался..

идея правильная? можно ведь так? и легче будет, и особо заморачиваться не надо...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Archon
сообщение 26.06.2009 18:02
Сообщение #12


Профи
****

Группа: Пользователи
Сообщений: 618
Пол: Мужской

Репутация: -  24  +


Цитата
идея правильная? можно ведь так? и легче будет, и особо заморачиваться не надо...
Конечно smile.gif. За основу можешь мою программу взять. В основном цикле есть 3 основные стадии: стирание (рисование черным цветом), изменение параметров (координаты, размер объектов, возможно форма), рисование (уже основными цветами). Введи процедуру, которая рисует картинку в зависимости от степени наклона. Получится что-то вроде этого:
uses
	Graph, Crt;

const
	FrameDelay = 50; { Задержка кадра.  }
	NumStages = 100; { Число степеней "зрелости" фрукта. }
	
procedure DrawBranch(Stage: Integer; Draw: Boolean);
begin
	{ ... }
	{ Здесь надо поместить код рисования ветки с фруктом в зависимости от степени }
	{ зрелости фрукта (Stage). В примере это число меняется от 0 до 99, но ты     }
	{ можешь сделать так, как будет удобнее. Если Draw = false, то рисовать надо  }
	{ черным цветом, если Draw = true, то рисовать надо обычными цветами.         }
	
	{ Это просто пример, чтобы убедиться, что все работает: }
	if Draw then SetColor(Red) else SetColor(Black);
	Line(10, 50, 200, 50 + Stage);
end;

var
	gd, gm: Integer;
	Stage: Integer;
begin 
	gd := Detect;
	InitGraph(gd, gm, '');
	
	{ Основной цикл. }
	Stage := 0;
	repeat
		{ Стираем ветку. }
		DrawBranch(Stage, false);
		{ Переходим на новую стадию наклона. }
		Inc(Stage);
		{ Рисуем ветку в новой стадии. }
		DrawBranch(Stage, true);
		{ Задержка, чтобы кадры не сменяли друг друга слишком быстро. }
		Delay(FrameDelay);
	until Stage > NumStages;
	
	ReadKey;
	CloseGraph;
end.


--------------------
Close the World...txeN eht nepO
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
phoenix85
сообщение 26.06.2009 20:03
Сообщение #13


Новичок
*

Группа: Пользователи
Сообщений: 12
Пол: Мужской
Реальное имя: Stas

Репутация: -  0  +


конечно огромное спасибо за основу, но все же, у меня нету никаких идей, как сделать,
будь добр, выручи то...
а то не сдам эти лабы, чтоб их...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
лёшик
сообщение 27.06.2009 7:39
Сообщение #14


Новичок
*

Группа: Пользователи
Сообщений: 14
Пол: Мужской

Репутация: -  0  +


Чото у меня в задачке со звездами пишет, что файл Graph.dcu не находит. Дельфи7, чо бы это значило?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
V877
сообщение 27.06.2009 8:20
Сообщение #15


Гость






Цитата
чо бы это значило?
Это значило бы, что надо пользоваться Паскалем, а не Дельфи для работы с модулем Graph (которого в Дельфи просто нет)
 К началу страницы 
+ Ответить 
лёшик
сообщение 27.06.2009 8:37
Сообщение #16


Новичок
*

Группа: Пользователи
Сообщений: 14
Пол: Мужской

Репутация: -  0  +


хи-хи, скачал Паскаль с "Паскалера.ру", а он 97 года и ругается, не может в нормальную ХР-ку прописаться lol.gif

Добавлено через 3 мин.
Мож, Паскаль уже устарел, лучше язык Дельфи учить? mega_chok.gif

Добавлено через 3 мин.
Доброе утро, Владимир, рад Вас видеть! ))) smile.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 27.06.2009 8:44
Сообщение #17


Гость






Я не знаю, чего и откуда ты качал, но Турбо Паскаль 1992 года в XP работает прекрасно, причем никуда не прописывается... Или (если не можешь установить Турбо), скачай FPC: http://www.freepascal.org/download.var , он тоже прекрасно работает с Graph.

Цитата
Мож, Паскаль уже устарел, лучше язык Дельфи учить?
Ну вот учишь ты Дельфи, тебе это помогло? Простейшую программу запустить и то не можешь... А то что Паскаль устарел - это ищи в Гугле место для холиваров и иди туда, здесь - не надо... Паскали они разные, я тебе сказал уже...
 К началу страницы 
+ Ответить 
Lapp
сообщение 27.06.2009 8:46
Сообщение #18


Уникум
*******

Группа: Модераторы
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

Репутация: -  159  +


Цитата(лёшик @ 27.06.2009 9:37) *
скачал Паскаль с "Паскалера.ру", а он 97 года и ругается, не может в нормальную ХР-ку прописаться
Незачем ему прописываться. Если это не 64-версия, то просто нужно создать каталог ТР и скопировать его туда.

Цитата(лёшик @ 27.06.2009 9:37) *
Мож, Паскаль уже устарел, лучше язык Дельфи учить?
Нету такого языка: Дельфи. Есть система разработчика Дельфи, которая использует язык Object Pascal.


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
лёшик
сообщение 27.06.2009 8:47
Сообщение #19


Новичок
*

Группа: Пользователи
Сообщений: 14
Пол: Мужской

Репутация: -  0  +


Не, совершенно очевидно, что сам Паскаль не устареет, стареют только его турбо-воплощения))) И одно другому не мешает))) А кто такие холивары?? blink.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 27.06.2009 8:49
Сообщение #20


Гость






Цитата
Есть система разработчика Дельфи, которая использует язык Object Pascal.
Неправда, начиная с D7 и язык тоже называется Дельфи...
 К началу страницы 
+ Ответить 

2 страниц V  1 2 >
 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

- Текстовая версия 29.07.2025 7:48
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"