Помощь - Поиск - Пользователи - Календарь
Полная версия: изображения
Форум «Всё о Паскале» > 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
Вы не могли бы сказать или показать где у меня ошибка, почему не происходит переключения (т.е не работают клавиши курсора). Заранее большое спасибо!!
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.