![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() |
Zoya |
![]()
Сообщение
#1
|
Гость ![]() |
Доброго времени суток!
У меня проблема, "Составить программу, которая по заданному числу возможных изображений (не менее 10) на экране давала бы возможность переключения между различными видами изоюражении." Просто нет сил уже что-то писать, преподавателю все не нравится ![]() |
![]() ![]() |
volvo |
![]()
Сообщение
#2
|
Гость ![]() |
Цитата Просто нет сил уже что-то писать, преподавателю все не нравится Отсюда можно сделать вывод, что уже было несколько вариантов, которые были признаны неудачными? Тогда приведи их, может и получится что-то подправить...А если никаких вариантов нет, то объясни подробнее - что за изображения, откуда берутся, что означает Цитата возможность переключения между различными видами изоюражении (что именно должно происходить, при каких условиях)... |
Zoya |
![]()
Сообщение
#3
|
Гость ![]() |
[quote name='volvo' date='27.12.2005 18:57' post='57128']
Тогда приведи их, может и получится что-то подправить... Первый раз я сделала в графе, в окне 10 маленьких окошек, и с помощбю курсора можно их переключать, просто изменяется текст ![]() Недавно появились наброски другого варианта 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.
не знаю, почему не работает.. ![]() Пользуемся тегами ! Сообщение отредактировано: volvo - 7.11.2006 17:37 |
Zoya |
![]()
Сообщение
#4
|
Гость ![]() |
Вы не могли бы сказать или показать где у меня ошибка, почему не происходит переключения (т.е не работают клавиши курсора). Заранее большое спасибо!!
|
![]() ![]() |
![]() |
Текстовая версия | 26.07.2025 13:07 |