Помощь - Поиск - Пользователи - Календарь
Полная версия: изображения
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Zoya
Доброго времени суток!
У меня проблема, "Составить программу, которая по заданному числу возможных изображений (не менее 10) на экране давала бы возможность переключения между различными видами изоюражении."
Просто нет сил уже что-то писать, преподавателю все не нравится smile.gif Может вы поможите ?)
volvo
Цитата
Просто нет сил уже что-то писать, преподавателю все не нравится
Отсюда можно сделать вывод, что уже было несколько вариантов, которые были признаны неудачными? Тогда приведи их, может и получится что-то подправить...

А если никаких вариантов нет, то объясни подробнее - что за изображения, откуда берутся, что означает
Цитата
возможность переключения между различными видами изоюражении
(что именно должно происходить, при каких условиях)...
Zoya
[quote name='volvo' date='27.12.2005 18:57' post='57128']
Тогда приведи их, может и получится что-то подправить...

Первый раз я сделала в графе, в окне 10 маленьких окошек, и с помощбю курсора можно их переключать, просто изменяется текстsmile.gifНо препод сказал, что нужно делать в текстовом режиме
Недавно появились наброски другого варианта
program screenswitcher;
uses crt;


type charplace=record
char:byte;
attr:byte;
end;
type screen=record
data:array[0..1999] of charplace;
x,y:byte;{cursor position [optional]}
end;
const MAXSCREENS=10;
type screens=array[1..MAXSCREENS] of screen;

function LoadScreen(var scr:screens;n:byte):boolean;
var i:integer;
begin {screen resolution in textmode is (80 cols x 25rows)=2000 characters}
for i:=0 to 1999 do{in array [0..1999]}
begin
mem[$B800:($0000+2*i)]:=scr[n].data[i].char;
mem[$B800:($0001+2*i+1)]:=scr[n].data[i].attr;
end;
LoadScreen:=true;
end;

function SaveScreen(var scr:screens;n:byte):boolean;
var i:integer;
begin
for i:=0 to 1999 do
begin
scr[n].data[i].char:=mem[$B800:($0000+2*i)];
scr[n].data[i].attr:=mem[$B800:($0001+2*i+1)];
end;
end;
{switching from screen p to screen n}

function SwitchScreen(var scr:screens;ch:char;p,n:byte):boolean;
var i:integer;
begin
SaveScreen(scr,p);
LoadScreen(scr,n);
Repeat
ch:=readkey;
if ord(ch)=80 then
begin
p:=(p+1) mod MAXSCREENS;
LoadScreen(scr,p);
end;
if ord(ch)=72 then
begin
p:=(p-1+MAXSCREENS) mod MAXSCREENS;
LoadScreen(scr,p);
end;

Until (ord(ch)=27);

end;

function ClearScreens(var s:Screens):boolean;
var i,j:integer;
begin
for i:=1 to MAXSCREENS do
for j:=0 to 1999 do
begin
s[i].data[j].char:=$20;
s[i].data[j].attr:=84;
end;
ClearScreens:=true;
end;

var CurrentScreen:integer;
s:screens;
i:integer;
BEGIN
clrscr;
ClearScreens(s);
{for i:=1 to MAXSCREENS do }
begin
writeln('This is screen number ',i);
SwitchScreen(s,i,);
end;
currentscreen:=0;
{mem[$B800:0000]:=ord('A');}
writeln('attr is:',mem[$B800:0000]);
readln;
end.

не знаю, почему не работает..sad.gif

Пользуемся тегами !
Zoya
Вы не могли бы сказать или показать где у меня ошибка, почему не происходит переключения (т.е не работают клавиши курсора). Заранее большое спасибо!!
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.