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

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

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

> Setactivepage - глюк, :(
Palux
сообщение 15.06.2005 13:42
Сообщение #1


Гость






Пишу на Паскале лабу с использованием Graph.
Суть задачи:
Рисуется рандомная картинка (линиями и кружочками) потом она
проподает и появляется луч фанарика, который двигается и ее
освещает.

Для это я использау 2 страници. Проблема в том, что они накладываются одна на другую (где то пополам) при смене страниц.

Подскажите под. че делать ....
Лабу надо быстро сдавать sad.gif
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
volvo
сообщение 15.06.2005 15:01
Сообщение #2


Гость






Palux, держи исходник для начала... Учти, при больших значениях радиуса будет притормаживать. И попробуй (если это не устроит) переделать, как тебе нужно... ;)
Код
uses crt, graph;

var
 buffer: array[1 .. 10000] of byte;
 curr: integer;

procedure get_square(x, y, r: integer);
var ix, iy: integer;
begin
 setactivepage(0);
 curr := 0;
 for iy := y - r to y + r do
   for ix := x - r to x + r do begin
     inc(curr);
     buffer[curr] := getpixel(ix, iy);
   end;
 setactivepage(1);
end;

procedure put_circle(x, y, r: longint);
var ix, iy: integer;
begin
 curr := 0;
 for iy := y - r to y + r do
   for ix := x - r to x + r do begin
     inc(curr);
     if (sqr(x - ix) + sqr(y - iy) <= sqr(r) then
       putpixel(ix, iy, buffer[curr]);
   end;
end;

procedure darkcircle(x, y, r: integer);
begin
 setfillstyle(solidfill, black);
 bar(x - r, y - r, x + r, y + r);
end;

var
 gd, gm: integer;
 x, y, i: integer;
const r = 20;

begin
 Gd := ega;
 Gm := egahi;
 InitGraph(Gd, Gm, '');
 If GraphResult <> grOk Then Halt(1);

 SetActivePage(0);
 SetVisualPage(0);

 Repeat
   SetColor (Random(15));
   Line (Random(GetMaxX-2)+1,Random(GetMaxY-2)+1,
         Random(GetMaxX-2)+1,Random(GetMaxY-2)+1);
 Until KeyPressed;
 while keypressed do readkey;

 SetActivePage(1);
 SetVisualPage(1);

 x := getmaxx div 2; y := getmaxy div 2;

 repeat
   get_square(x, y, r);
   put_circle(x, y, r);
   delay(22000);
   darkcircle(x, y, r);
   inc(x, 10);
 Until KeyPressed;
 while keypressed do readkey;

 closegraph;
end.
 К началу страницы 
+ Ответить 

Сообщений в этой теме
Palux   Setactivepage - глюк   15.06.2005 13:42
Altair   а какой графический режим используешь? не все режи...   15.06.2005 13:50
Palux   блин .... а как узнать какой? На глаз 640х480х16 ...   15.06.2005 13:53
Archon   detect'ом наверно определился не тот режим кот...   15.06.2005 13:54
volvo   Detect-ом может и тот определился, но Detect дает ...   15.06.2005 14:00
Altair   А вот так выглядит проверка поддерживает ли выбр...   15.06.2005 13:57
Palux   Режим 640x480 VGA исходник Gd := Detect; I...   15.06.2005 14:04
Palux   заработало с EGA, EGAHi ,но разрешение какоето неп...   15.06.2005 14:13
Altair   А чего ты хочешь добиться в программе? ты же все р...   15.06.2005 14:17
Palux   ну скажите еще ченить, мне эту лабу уже здать надо   15.06.2005 14:17
Palux   Oleg_Z, я хочу добиться эффекта освещения в темно...   15.06.2005 14:22
Palux   может у меня изначально неправельный подход? Тады ...   15.06.2005 14:27
Archon   Да нормалёк... Делай по своему. А разрешением прид...   15.06.2005 14:51
volvo   Palux, держи исходник для начала... Учти, при боль...   15.06.2005 15:01


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

 



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