1. Заголовок темы должен быть информативным. В противном случае тема удаляется ... 2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения. 3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали! 4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора). 5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM! 6. Одна тема - один вопрос (задача) 7.Проверяйте программы перед тем, как разместить их на форуме!!! 8.Спрашивайте и отвечайте четко и по существу!!!
Вот программа, работает, но я хочу, чтобы текст , уходя за пределы экрана, возвращался слева или появлялись друг за другом строки как по телевизору. Не придумывается что-то.
program lll;
uses crt,graph;
var d,m,e,dx,dy,xd,yd,i,j:integer;
begin
d :=Detect;
initgraph(d, m, 'd:\bp70\bgi');
e := graphresult;
if e <> grok then
writeln(grapherrormsg(e))
elsebegin
dx:=0;
dy:=200;
xd:=600;
yd:=200;
settextstyle(4,0,8);
repeatfor j:=1to500dobeginfor i:=1to270dobeginif dx>=0thenbegin dx:=dx+1;
outtextxy(dx,dy,'Anastasiya');
end;
delay(800);
cleardevice;
end;
if keypressed then break
end;
until keypressed;
end;
end.
program lll;
uses crt,graph;
var d,m,e,dx,dy,xd,yd,i,j:integer;s:string;
begin
d :=Detect;
initgraph(d, m, '…\bgi');
e := graphresult;
if e <> grok then
writeln(grapherrormsg(e))
elsebegin
dx:=0;xd:=600;yd:=200;
dy:=200;
settextstyle(4,0,8);
s:='Anastasiya ';
repeatfor j:=1to700dobeginfor i:=1to270dobeginif dx>=0thenbegin dx:=dx+1;
outtextxy(dx,dy,s);
end;
delay(800);
cleardevice;
end;dx:=0;
end;
until keypressed;
end;
end.
Поторопилась соглашаться. К сожалению не знаю многих функций и не могу разобраться логически как текст в предыдущей программе может идти справа налево , а тем более как сделать это слева направо. Придумала, то, что выложила. Упрощённый вариант моей бегущей строки. Почти ничего не изменила, так всегда. Но буду благодарна, если вы подскажете как мне пустить эту бегущую строку слева направо в предыдущей программе. Для меня это не так уж и элементарно.
program lll;
uses crt,graph;
var
gDriver, gMode, err: integer;
s: string;
begin
gDriver := Detect;
initgraph(gDriver, gMode, '');
err := graphresult;
if err <> grok thenbegin
writeln(grapherrormsg(err));
halt(100);
end;
settextstyle(4, HorizDir, 8);
s := 'Anastasiya';
repeat
s := s + ' ';
until textwidth(s) > getmaxx;
delete(s, length(s), 1);
repeat
delay(1800);
cleardevice;
outtextxy(1, getmaxy div2, s);
s := s[length(s)] + copy(s, 1, length(s) - 1); { Меняем ЗДЕСЬ }until keypressed;
end.
Цитата
не могу разобраться логически как текст в предыдущей программе может идти справа налево
Очень просто: Сначала заполняем строке текстом и пробелами так, чтобы ее длина НЕ превышала размера экрана (это первый Repeat ... Until), а потом чтобы СОЗДАТЬ ИЛЛЮЗИЮ движения просто берем первый символ строки и переносим его в конец, и заново выводим строку на том же месте после очистки экрана... Из за смещения символов получаем видимость движения строки...
Соответственно, чтобы двигать строку слева направо надо брать ПОСЛЕДНИЙ символ и перемещать его в начало строки... Попробуй на бумаге, напиши слово и припиши к нему несколько символов подчеркивания (вместо пробелов), и проделай то, что я написАл... Лучший способ понять, что происходит
Попробуй на бумаге, напиши слово и припиши к нему несколько символов подчеркивания (вместо пробелов)
Именно этим я и занималась 2 последних вечера. Я догадывалась, что всё дело в этом сору , и когда уже не было сил додумываться, я просто перебором подставляла этот length(s) то в одно, то в другое место. Но все-таки не добралась сама до решения. Спасибо .