Вот программа, работает, но я хочу, чтобы текст , уходя за пределы экрана, возвращался слева или появлялись друг за другом строки как по телевизору. Не придумывается что-то.
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.
Пользуйтесь тегами
Романтик
27.02.2006 1:50
а что мешает поставить один if на условие выхода за пределы(по-моему предел 640*480, если память не изменяет)?
Гость
27.02.2006 1:52
James_Bond, а покажи-ка как и КУДА ты будешь его ставить, а то теоретически языком молоть все умеют...
klem4
27.02.2006 2:02
Анастасия, для начала могу посоветовать вам воспользоваться поиском, бегущие строки уже реализовывались на форуме, если не поможет поиск, поможем мы
Анастасия
27.02.2006 2:05
Цитата(James_Bond @ 26.02.2006 20:50)
а что мешает поставить один if на условие выхода за пределы(по-моему предел 640*480, если память не изменяет)?
я не хочу что бы мой текст ходил справа налево, а чтобы всегда только слева направо: исчезал и слева снова появлялся(новый или тот же).
Анастасия
1.03.2006 1:32
пока я так и не нашла ответ для графики
Романтик
1.03.2006 1:40
Цитата(Анастасия @ 26.02.2006 22:05)
я не хочу что бы мой текст ходил справа налево, а чтобы всегда только слева направо: исчезал и слева снова появлялся(новый или тот же).
Ну например Если координаты больше границы, тогда обнуляем счетчик и по-новой. Я бы помог, только не силен в графике.
volvo
1.03.2006 2:13
Анастасия, попробуй запустить вот это:
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 := copy(s, 2, length(s) - 1) + s[1];
until keypressed;
end.
Идея ясна?
У меня только справа налево, но направление движения меняется элементарно...
Анастасия
1.03.2006 4:41
Цитата
Чтобы получить ответ, нужно задать правильный вопрос. Но чтобы правильно задать вопрос, нужно знать большую часть ответа...
Анастасия
3.03.2006 3:31
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.
Поторопилась соглашаться. К сожалению не знаю многих функций и не могу разобраться логически как текст в предыдущей программе может идти справа налево , а тем более как сделать это слева направо. Придумала, то, что выложила. Упрощённый вариант моей бегущей строки. Почти ничего не изменила, так всегда. Но буду благодарна, если вы подскажете как мне пустить эту бегущую строку слева направо в предыдущей программе. Для меня это не так уж и элементарно.
volvo
3.03.2006 3:43
Ну, например, вот так:
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), а потом чтобы СОЗДАТЬ ИЛЛЮЗИЮ движения просто берем первый символ строки и переносим его в конец, и заново выводим строку на том же месте после очистки экрана... Из за смещения символов получаем видимость движения строки...
Соответственно, чтобы двигать строку слева направо надо брать ПОСЛЕДНИЙ символ и перемещать его в начало строки... Попробуй на бумаге, напиши слово и припиши к нему несколько символов подчеркивания (вместо пробелов), и проделай то, что я написАл... Лучший способ понять, что происходит
Анастасия
3.03.2006 4:47
Код
Попробуй на бумаге, напиши слово и припиши к нему несколько символов подчеркивания (вместо пробелов)
Именно этим я и занималась 2 последних вечера. Я догадывалась, что всё дело в этом сору , и когда уже не было сил додумываться, я просто перебором подставляла этот length(s) то в одно, то в другое место. Но все-таки не добралась сама до решения. Спасибо .
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.