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

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

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

 
 Ответить  Открыть новую тему 
> Графическая задача (анимация), Есть туча, идет дождь, емкость наполняется
Nike0
сообщение 29.11.2009 13:42
Сообщение #1


Пионер
**

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

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


Доброго времени суток. Прошу помочь в решении задачи. Вот условие: нужно составит программу вывода в верхнюю часть экрана изображение тучи, а в нижнюю – емкость для воды; при нажатии клавиши Enter начинает идти дождь. В то время, как идет дождь, туча начинает уменьшаться, а емкость наполняется.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Archon
сообщение 29.11.2009 13:56
Сообщение #2


Профи
****

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

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


Окей, условие понятно. Чем помочь?


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


Пионер
**

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

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


как вообще нарисовать тучу, анимацию дождя и уменьшение тучи? искал много где похожих задач, но что все неудачно
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Archon
сообщение 29.11.2009 17:44
Сообщение #4


Профи
****

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

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


С помощью стандартного модуля graph, например. В нем есть процедуры и функции для рисования линий, окружностей, дуг и так далее. Если нет учебника, вот краткое описание с примерами: Использование графики и звука в языке Turbo Pascal.

Попробуй написать сам, для начала, и выложи результат. Если что-то не получится, сделаем вместе.


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


Пионер
**

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

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


на графику фулскрин обязательно? а то win7 стоит, даже простые шаблоны не запускает, ругается на разрешение, в турбо или фри норм будет, не знаете?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Archon
сообщение 29.11.2009 20:30
Сообщение #6


Профи
****

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

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


Используй FreePascal, там все нормально. Качать отсюда.


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


Пионер
**

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

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


Program tu4ki;
uses
 crt,graph;

procedure graphinterface;
var
 Gd,Gm:Integer;
begin
 Gd:=Detect;
 InitGraph(Gd,Gm,'');
 if GraphResult<>grOk then
 begin
  Halt(1);
 end;
end;
begin
 clrscr;
 graphinterface;
 setbkcolor(9);
 arc(120,100,45,315,40);
 arc(170,100,45,135,40);
 arc(220,100,225,360,40);
 arc(220,100,0,135,40);
 arc(170,100,225,315,40);
 sector(165,400,180,360,120,90);
 floodfill(170,100,7);
 readkey;
 CloseGraph;
end.
 

сори что долго не писал, был занят на учебе, ну вот, написал, но во фри почему-то у меня не отображаются цвета, только черный фон и фигуры, а заливка и остальное не работает, хотя в колледже на XP с борланда все отлично... вот в чем проблема, я знаю что анимацию с помощью циклов делать надо, только не знаю КАК сделать.. если можете помогите
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Lapp
сообщение 2.12.2009 14:21
Сообщение #8


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

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

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


Не знаю, что у тебя там работало, потому что работать не особо должно было..

1. Сомневаюсь, что тебе нужен SetBkColor. Ты попробуй сначала без него, а потом подключи, если надо будет. Он работает не совсем так, как иногда хочется..

2. Устанавливай цвет в SetColor(<color>);.

3. Перед FloodFill установи SetFillStyle(SolidFill,<color>);


Добавлено через 1 мин.
и еще:

4. В FloodFill нужно указывать цвет границы, до чего заполнять (то есть твой <color>)

Добавлено через 6 мин.
То есть, примерно так:
var
  CloudBorderCol,CloudCol: integer;

begin
 graphinterface;
 CloudBorderCol:=DarkGray;
 CloudCol:=LightGray;
 SetColor(CloudBorderCol);
 arc(120,100,45,315,40);
 arc(170,100,45,135,40);
 arc(220,100,225,360,40);
 arc(220,100,0,135,40);
 arc(170,100,225,315,40);
 sector(165,400,180,360,120,90);
 SetFillStyle(SolidFill,CloudCol);
 floodfill(170,100,CloudBorderCol);
 readkey;
 CloseGraph;
end.


Добавлено через 3 мин.
Цитата(Nike0 @ 2.12.2009 13:54) *
я знаю что анимацию с помощью циклов делать надо, только не знаю КАК сделать..
Да, в цикле. Принцип простой: рисуешь - стираешь - рисуешь - стираешь - ...
Ты поищи по форуму, много было анимации. Если что-то будет неясно - спрашивай конкретно.


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Nike0
сообщение 22.12.2009 12:18
Сообщение #9


Пионер
**

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

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


решил поднять тему, принцип понял, но реализовать не могу... пробовал по-разному, но безуспешно, единственное что понятно, чтобы чтото начало двигаться, надо вместо цифр ставить параметры и в циклах их изменять и все)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Lapp
сообщение 23.12.2009 11:47
Сообщение #10


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

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

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


Цитата(Nike0 @ 22.12.2009 12:18) *
чтобы чтото начало двигаться, надо вместо цифр ставить параметры и в циклах их изменять и все)
Хорошо. Вот тебе дождь. Этого тебе достаточно для начала?
uses
  WinCRT,Graph;

const
  n=40;
  l1=10;
  l2=20;
  a=-0.2;
  b=20;
  SkyCol=Black;
  RainCol=Cyan;

type
  tRain= record
    x,y,z,dx,dy: integer
  end;

var
  Rain: array[1..n]of tRain;
  Gd,Gm,i,g: Integer;

begin
  Gd:=Detect;
  InitGraph(Gd,Gm,'');
  if GraphResult<>grOk then Halt(1);
  g:=GetMaxY-b-l2-l1;
  for i:=1 to n do with Rain[i] do begin
    dy:=l1+Random(l2-l1+1);
    dx:=Round(dy*a);
    x:=b+Random(GetMaxX-2*b);
    y:=b+Random(GetMaxY-2*b)
  end;
  repeat
    for i:=1 to n do with Rain[i] do begin
      if y>g then begin
        SetColor(SkyCol);
        Line(x,y,x+dx,y+dy);
        Line(x+dx,y+dy,x+2*dx,y+2*dy);
        dy:=l1+Random(l2-l1+1);
        dx:=Round(dy*a);
        x:=b+Random(GetMaxX-2*b);
        y:=b
      end;
      SetColor(SkyCol);
      Line(x,y,x+dx,y+dy);
      SetColor(RainCol);
      Line(x+2*dx,y+2*dy,x+3*dx,y+3*dy);
      Inc(x,dx);
      Inc(y,dy)
    end;
  until KeyPressed;
  while KeyPressed do ReadKey;
  CloseGraph;
end.



--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Nike0
сообщение 23.12.2009 12:47
Сообщение #11


Пионер
**

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

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


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

Сообщение отредактировано: Nike0 - 23.12.2009 14:30
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Lapp
сообщение 23.12.2009 14:35
Сообщение #12


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

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

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


Цитата(Nike0 @ 23.12.2009 12:47) *
да спасибо, можно же сделать чтобы дождь шел только в определенной области? поставить ограничения на параметры?

Запросто. Параметры уже там. Разберешься, что и как ограничивать?


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Nike0
сообщение 23.12.2009 14:37
Сообщение #13


Пионер
**

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

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


Цитата
Разберешься, что и как ограничивать?
тут их много очень, если не тяжело по x и у какие отвечают, я на них тогда и поставлю
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Lapp
сообщение 23.12.2009 16:32
Сообщение #14


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

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

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


Цитата(Nike0 @ 23.12.2009 14:37) *
тут их много очень, если не тяжело по x и у какие отвечают, я на них тогда и поставлю
Nike0, ты обнаглел. Ты полагаешь, я все это делал, чтоб ты сдал зачет/курсовик/т.п.? Мне плевать на твои зачеты. Я думал, ты хоть чему-то научиться хочешь. А ты не хочешь разобраться в пяти параметрах.. Если так - я буду только рад, если ты завалишь сессию - одним протирателем штанов меньше будет.

все, больше я твои мессаджи даже не читаю.
гудбай.


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 

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