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

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

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

 
 Ответить  Открыть новую тему 
> Движущееся цветное изображение
сообщение
Сообщение #1


Профи
****

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

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


Написать программу, результатом работы которой будет движущееся по экрану монитора цветное изображение настольной лампы.

У меня ооочень глупый вопрос: не представляю, каким способом нарисовать, чтоб было более менее похоже на лампу!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


просто человек
******

Группа: Пользователи
Сообщений: 3 641
Пол: Женский
Реальное имя: Юлия

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


а можешь нарисовать (в пэйнте, на листике - не важно) свое видение лампы?


--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Профи
****

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

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


Что-то такое.....

(см картинку в следующем посте)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Гуру
*****

Группа: Пользователи
Сообщений: 1 117
Пол: Мужской
Реальное имя: Богдан

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


У кого проблемы с инетом и не в силах качать 1.5 мега вот jpg вариант:
Прикрепленное изображение

PS красиво вышло good.gif


--------------------
Лао-Цзы :
Знать много и не выставлять себя знающим есть нравственная высота. Знать мало и выставлять себя знающим есть болезнь. Только понимая эту болезнь, мы можем избавиться от нее.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Профи
****

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

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


Цитата(Bokul @ 3.03.2007 21:45) *

У кого проблемы с инетом и не в силах качать 1.5 мега вот jpg вариант:
Прикрепленное изображение

PS красиво вышло good.gif

Спасибо! Теперь осталось мне реализовать что-то подобное...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Гость






18192123, на форуме есть процедура, которая выводит BMP файл в определенное место экрана... Выведи изображение один раз с ее помощью, потом "захвати" изображение с помощью GetImage, и просто в цикле используй PutImage (с предварительной очисткой изображения, выведенного на предыдущем шаге)...

Примеры использования GetImage/PutImage были на форуме, посмотри в поиске...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


просто человек
******

Группа: Пользователи
Сообщений: 3 641
Пол: Женский
Реальное имя: Юлия

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


если не bmp-шку двигать, а именно лампочку рисовать....
у меня как-то так получилось (процедура, рисующая лампу в заданном месте):
procedure lamp(const x,y: integer);
begin
setcolor(5);
ellipse(x+200,y+200,0,360,20,10);
setfillstyle(1,5);
floodfill(x+200,y+200,5);
setcolor(13);
ellipse(x+200,y+185,0,360,10,5);
setfillstyle(1,13);
floodfill(x+200,y+185,13);
ellipse(x+180,y+240,0,360,30,15);
floodfill(x+180,y+240,13);
setcolor(15);
ellipse(x+185,y+180,0,180,15,10);
moveto(x+170,y+180);
lineto(x+170,y+240);
ellipse(x+185,y+245,0,360,5,2);
setfillstyle(1,15);
floodfill(x+185,y+245,15);
readkey;
end;


--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Профи
****

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

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


volvo , спасибо за информацию, буду знать и о таком способе!
Но мне больше подходит вариант мисс_граффити (именно с рисованием)

Как я понимаю, для обеспечения движения изображения по экрану мне нужно вывести это изображение, потом через некоторое время стереть и после вывести на новом месте....

мне это не слишком удалось.... изображение перемещается по нажатию Enter, но следующее изображение накладывается на предыдущее, т.е. у меня не получается убрать предыдущее изображение...


Uses Graph, Crt;
procedure lamp( x,y: integer);
begin
setcolor(5);
ellipse(x+200,y+200,0,360,20,10);
setfillstyle(1,5);
floodfill(x+200,y+200,5);
setcolor(13);
ellipse(x+200,y+185,0,360,10,5);
setfillstyle(1,13);
floodfill(x+200,y+185,13);
ellipse(x+180,y+240,0,360,30,15);
floodfill(x+180,y+240,13);
setcolor(15);
ellipse(x+185,y+180,0,180,15,10);
moveto(x+170,y+180);
lineto(x+170,y+240);
ellipse(x+185,y+245,0,360,5,2);
setfillstyle(1,15);
floodfill(x+185,y+245,15);
readkey;
end;
var
DriverVar, ModeVar, ErrCode, x, y: integer;
dx, dt : integer;
begin
clrscr;
DriverVar := Detect; ModeVar := VGAHi;
InitGraph (DriverVar, ModeVar,'');
ErrCode := GraphResult;
if ErrCode = grOk then begin
dx := 15;
dt := 70;
while x < 600 do begin

lamp (x,y);
Delay(dt);
SetColor(0);
lamp(x,y);
x := x+dx;
end;
end else
closegraph;
end.




P.S.
мисс_граффити, твоя лампа - просто супер!


 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


Гость






Вот так должна выглядеть основная программа:
begin
DriverVar := Detect; ModeVar := VGAHi;
InitGraph (DriverVar, ModeVar,'');
ErrCode := GraphResult;
if ErrCode = grOk then begin
dx := 15; dt := 70;
while x < 600 do begin
lamp (x,y);
Delay(dt);
cleardevice;
x := x+dx;
end;
readln;
closegraph;
end
end.
Только учти, что перерисовывается лампа дольше, чем выводится через PutImage... Запусти программу, узнаешь, к чему это я... Только ReadKey из процедуры отрисовки лампы убери...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #10


просто человек
******

Группа: Пользователи
Сообщений: 3 641
Пол: Женский
Реальное имя: Юлия

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


ой... сорри за readkeу
забыла убрать.


--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #11


Профи
****

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

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


Цитата(volvo @ 4.03.2007 18:23) *

Только учти, что перерисовывается лампа дольше, чем выводится через PutImage... Запусти программу, узнаешь, к чему это я... Только ReadKey из процедуры отрисовки лампы убери...

у меня до сих пор ничего не вырисовалось....(минут 5 ждала...)
об этом шла речь?

а если вырисовать процедурой lamp изображение, потом нельзя использовать GetImage/PutImage для его движения?

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


Гость






Цитата
а если вырисовать процедурой lamp изображение, потом нельзя использовать GetImage/PutImage для его движения?
Можно... Разницы нет, КАК ты будешь первоначально выводить изображение на экран.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #13


просто человек
******

Группа: Пользователи
Сообщений: 3 641
Пол: Женский
Реальное имя: Юлия

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


поставь dt побольше (несколько тысяч) - ты просто не успеваешь заметить smile.gif


--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #14


Профи
****

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

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


Цитата(мисс_граффити @ 4.03.2007 18:54) *

поставь dt побольше (несколько тысяч) - ты просто не успеваешь заметить smile.gif

ой! и правда!

Всем огромное спасибо за помощь!

Сообщение отредактировано: 18192123 -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #15


Помощник капитана
****

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

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


ClearDevice.


--------------------
Dum spiro spero!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #16


Гость






Артемий2, а ты в программе ClearDevice не заметил?

Или берешь пример с Time? Тогда не удивляйся, если результат получишь такой же! Устное предупреждение за флуд...
 К началу страницы 
+ Ответить 

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

 





- Текстовая версия 29.03.2024 15:05
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name