IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> Вывод текста бегущей строкой, графика
сообщение
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 41
Пол: Женский
Реальное имя: Анастасия

Репутация: -  0  +


Вот программа, работает, но я хочу, чтобы текст , уходя за пределы экрана,
возвращался слева или появлялись друг за другом строки как по телевизору.
Не придумывается что-то.
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))
else
begin
dx:=0;
dy:=200;
xd:=600;
yd:=200;
settextstyle(4,0,8);
repeat
for j:=1 to 500 do  begin
for i:=1 to 270 do begin
if dx>=0 then begin dx:=dx+1;
outtextxy(dx,dy,'Anastasiya');
end;
delay(800);
cleardevice;
end;
if keypressed then break
end;
until keypressed;
end;
end.


Пользуйтесь тегами

Сообщение отредактировано: volvo -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Бывалый
***

Группа: Пользователи
Сообщений: 159
Пол: Мужской
Реальное имя: Anton

Репутация: -  0  +


а что мешает поставить один if на условие выхода за пределы(по-моему предел 640*480, если память не изменяет)?


--------------------
made in USSR.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Гость






James_Bond, а покажи-ка как и КУДА ты будешь его ставить, а то теоретически языком молоть все умеют...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Perl. Just code it!
******

Группа: Пользователи
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

Репутация: -  44  +


Анастасия, для начала могу посоветовать вам воспользоваться поиском, бегущие строки уже реализовывались на форуме, если не поможет поиск, поможем мы smile.gif


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Новичок
*

Группа: Пользователи
Сообщений: 41
Пол: Женский
Реальное имя: Анастасия

Репутация: -  0  +


Цитата(James_Bond @ 26.02.2006 20:50) *

а что мешает поставить один if на условие выхода за пределы(по-моему предел 640*480, если память не изменяет)?

я не хочу что бы мой текст ходил справа налево, а чтобы всегда только слева направо: исчезал
и слева снова появлялся(новый или тот же).
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Новичок
*

Группа: Пользователи
Сообщений: 41
Пол: Женский
Реальное имя: Анастасия

Репутация: -  0  +


пока я так и не нашла ответ для графики unsure.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Бывалый
***

Группа: Пользователи
Сообщений: 159
Пол: Мужской
Реальное имя: Anton

Репутация: -  0  +


Цитата(Анастасия @ 26.02.2006 22:05) *

я не хочу что бы мой текст ходил справа налево, а чтобы всегда только слева направо: исчезал
и слева снова появлялся(новый или тот же).

Ну например
Если координаты больше границы, тогда обнуляем счетчик и по-новой. Я бы помог, только не силен в графике.


--------------------
made in USSR.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Гость






Анастасия, попробуй запустить вот это:
program lll;
uses crt,graph;

var
  gDriver, gMode, err: integer;
  s: string;
begin
  gDriver := Detect;
  initgraph(gDriver, gMode, '');
  err := graphresult;
  if err <> grok then begin
    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 div 2, s);
    s := copy(s, 2, length(s) - 1) + s[1];

  until keypressed;

end.


Идея ясна? wink.gif

У меня только справа налево, но направление движения меняется элементарно...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


Новичок
*

Группа: Пользователи
Сообщений: 41
Пол: Женский
Реальное имя: Анастасия

Репутация: -  0  +


Цитата

Чтобы получить ответ, нужно задать правильный вопрос. Но чтобы правильно задать вопрос, нужно знать большую часть ответа...
yes2.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #10


Новичок
*

Группа: Пользователи
Сообщений: 41
Пол: Женский
Реальное имя: Анастасия

Репутация: -  0  +


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))
else
begin
dx:=0;xd:=600;yd:=200;
dy:=200;
settextstyle(4,0,8);
s:='Anastasiya ';
repeat
for j:=1 to  700 do  begin
for i:=1 to 270 do begin
if dx>=0 then begin dx:=dx+1;
outtextxy(dx,dy,s);
end;
delay(800);
cleardevice;

end;dx:=0;
end;
until keypressed;
end;
end. 

Поторопилась соглашаться. К сожалению не знаю многих функций и не могу разобраться логически как
текст в предыдущей программе может идти справа налево , а тем более как сделать это слева направо.
Придумала, то, что выложила. Упрощённый вариант моей бегущей строки. Почти ничего не изменила, так всегда. Но буду благодарна, если вы подскажете как мне пустить эту бегущую строку слева направо в предыдущей программе. Для меня это не так уж и элементарно.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #11


Гость






Ну, например, вот так:
program lll;
uses crt,graph;

var
  gDriver, gMode, err: integer;
  s: string;
begin
  gDriver := Detect;
  initgraph(gDriver, gMode, '');
  err := graphresult;
  if err <> grok then begin
    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 div 2, s);
    s := s[length(s)] + copy(s, 1, length(s) - 1); { Меняем ЗДЕСЬ }

  until keypressed;

end.


smile.gif

Цитата
не могу разобраться логически как текст в предыдущей программе может идти справа налево
Очень просто: Сначала заполняем строке текстом и пробелами так, чтобы ее длина НЕ превышала размера экрана (это первый Repeat ... Until), а потом чтобы СОЗДАТЬ ИЛЛЮЗИЮ движения просто берем первый символ строки и переносим его в конец, и заново выводим строку на том же месте после очистки экрана... Из за смещения символов получаем видимость движения строки...

Соответственно, чтобы двигать строку слева направо надо брать ПОСЛЕДНИЙ символ и перемещать его в начало строки... Попробуй на бумаге, напиши слово и припиши к нему несколько символов подчеркивания (вместо пробелов), и проделай то, что я написАл... Лучший способ понять, что происходит smile.gif
 К началу страницы 
+ Ответить 
сообщение
Сообщение #12


Новичок
*

Группа: Пользователи
Сообщений: 41
Пол: Женский
Реальное имя: Анастасия

Репутация: -  0  +


Код
Попробуй на бумаге, напиши слово и припиши к нему несколько символов подчеркивания (вместо пробелов)

Именно этим я и занималась 2 последних вечера. Я догадывалась, что всё дело в этом сору , и когда уже не было сил додумываться, я просто перебором подставляла этот length(s) то в одно, то в другое место. Но все-таки не добралась сама до решения. Спасибо .

Сообщение отредактировано: Анастасия -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 22.04.2025 8:16
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name