Доброго времени суток. Прошу помочь в решении задачи. Вот условие: нужно составит программу вывода в верхнюю часть экрана изображение тучи, а в нижнюю – емкость для воды; при нажатии клавиши Enter начинает идти дождь. В то время, как идет дождь, туча начинает уменьшаться, а емкость наполняется.
Archon
29.11.2009 17:56
Окей, условие понятно. Чем помочь?
Nike0
29.11.2009 18:21
как вообще нарисовать тучу, анимацию дождя и уменьшение тучи? искал много где похожих задач, но что все неудачно
Archon
29.11.2009 21:44
С помощью стандартного модуля graph, например. В нем есть процедуры и функции для рисования линий, окружностей, дуг и так далее. Если нет учебника, вот краткое описание с примерами: Использование графики и звука в языке Turbo Pascal.
Попробуй написать сам, для начала, и выложи результат. Если что-то не получится, сделаем вместе.
Nike0
29.11.2009 22:15
на графику фулскрин обязательно? а то win7 стоит, даже простые шаблоны не запускает, ругается на разрешение, в турбо или фри норм будет, не знаете?
Archon
30.11.2009 0:30
Используй FreePascal, там все нормально. Качать отсюда.
Nike0
2.12.2009 17:54
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 с борланда все отлично... вот в чем проблема, я знаю что анимацию с помощью циклов делать надо, только не знаю КАК сделать.. если можете помогите
Lapp
2.12.2009 18:21
Не знаю, что у тебя там работало, потому что работать не особо должно было..
1. Сомневаюсь, что тебе нужен SetBkColor. Ты попробуй сначала без него, а потом подключи, если надо будет. Он работает не совсем так, как иногда хочется..
2. Устанавливай цвет в SetColor(<color>);.
3. Перед FloodFill установи SetFillStyle(SolidFill,<color>);
Добавлено через 1 мин. и еще:
4. В FloodFill нужно указывать цвет границы, до чего заполнять (то есть твой <color>)
я знаю что анимацию с помощью циклов делать надо, только не знаю КАК сделать..
Да, в цикле. Принцип простой: рисуешь - стираешь - рисуешь - стираешь - ... Ты поищи по форуму, много было анимации. Если что-то будет неясно - спрашивай конкретно.
Nike0
22.12.2009 16:18
решил поднять тему, принцип понял, но реализовать не могу... пробовал по-разному, но безуспешно, единственное что понятно, чтобы чтото начало двигаться, надо вместо цифр ставить параметры и в циклах их изменять и все)
Lapp
23.12.2009 15:47
Цитата(Nike0 @ 22.12.2009 12:18)
чтобы чтото начало двигаться, надо вместо цифр ставить параметры и в циклах их изменять и все)
Хорошо. Вот тебе дождь. Этого тебе достаточно для начала?
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.
Nike0
23.12.2009 16:47
да спасибо, можно же сделать чтобы дождь шел только в определенной области? поставить ограничения на параметры?
Lapp
23.12.2009 18:35
Цитата(Nike0 @ 23.12.2009 12:47)
да спасибо, можно же сделать чтобы дождь шел только в определенной области? поставить ограничения на параметры?
Запросто. Параметры уже там. Разберешься, что и как ограничивать?
Nike0
23.12.2009 18:37
Цитата
Разберешься, что и как ограничивать?
тут их много очень, если не тяжело по x и у какие отвечают, я на них тогда и поставлю
Lapp
23.12.2009 20:32
Цитата(Nike0 @ 23.12.2009 14:37)
тут их много очень, если не тяжело по x и у какие отвечают, я на них тогда и поставлю
Nike0, ты обнаглел. Ты полагаешь, я все это делал, чтоб ты сдал зачет/курсовик/т.п.? Мне плевать на твои зачеты. Я думал, ты хоть чему-то научиться хочешь. А ты не хочешь разобраться в пяти параметрах.. Если так - я буду только рад, если ты завалишь сессию - одним протирателем штанов меньше будет.
все, больше я твои мессаджи даже не читаю. гудбай.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.