Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.03.2009, 12:45   #1
Razorishe
Пользователь
 
Аватар для Razorishe
 
Регистрация: 16.03.2009
Сообщений: 34
По умолчанию Паскаль. Создание бегущей строки.

Добрый день посетители форума. Такая задача в этот раз:
Создать текстовое окно. С клавиатуры ввести текст и реализовать бегущую строку в окне.
Получилось только так:
Код:
uses crt;
var s:string;
     x:byte;
begin
 clrscr;
 window(1,1,80,1);
 write('Enter text: ');
 readln(s);
 x:=1;
 repeat
  delay(30000);
  delline;
  write(s);
  gotoxy(x,1);
  x:=x+1;
  if x=80 then x:=1;
 until keypressed
 end.
Мне нужно чтобы текст сначало выезжал из-за границы, потом заезжал за неё и так крутился, а у меня получилось только чтобы выезжал после того как зайдет за границу.
Добавляйте отзывы, буду благодарен
Razorishe вне форума Ответить с цитированием
Старый 20.03.2009, 13:21   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

В твой код я не вьехал - предлагаю что-то типа этого:
Код:
uses crt;
var s:string;x:integer;
begin
s:='1234';
x:=0;      clrscr;
repeat
 textcolor(white);
 gotoxy(x,1);write(s);
 inc(x);
 delay(50);
 textcolor(black);
 gotoxy(x-1,1);
 write(x,s);
 if (x-length(s)>=80) then delete(s,length(s),1);
 if x=80 then begin
  x:=1;
  s:='1234';
 end;
until keypressed;
end.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 20.03.2009, 13:27   #3
Razorishe
Пользователь
 
Аватар для Razorishe
 
Регистрация: 16.03.2009
Сообщений: 34
По умолчанию

Если ввести строку по длиннее, то текст выезжает сначало во второй строчке, после этого перескакивает на первую..
Добавляйте отзывы, буду благодарен
Razorishe вне форума Ответить с цитированием
Старый 20.03.2009, 13:59   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Ну так поправь условие выезда.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 20.03.2009, 14:34   #5
Jean-Esther
Пользователь
 
Аватар для Jean-Esther
 
Регистрация: 15.01.2009
Сообщений: 69
По умолчанию Вариант

у меня нечто такое вышло. Размер окна указываем в константе max
Код:
uses Crt;
const max=20;
var s,t:string;
    x,i:integer;
begin
clrscr;
writeln('text: ');
readln(t);
clrscr;
x:=0;
repeat
      clrscr;
      x:=x+1;
      if x<=length(t) then begin s:=copy(t,length(t)-x+1,x); write(s) end;
      if (x>length(t)) and (x<max) then begin for i:=1 to x-length(s) do write(' '); write(t) end;
      if x>=max then begin
                     x:=x-max;
                     for i:=1 to x+2{+length(t)} do write(' ');
                     s:=copy(t,1,length(t)-x-1);
                     write(s);
                     x:=x+max;
                end;
      if x=max+length(t) then x:=0;
      delay(20000);
until keypressed;
end.
Silence is of great value...
Jean-Esther вне форума Ответить с цитированием
Старый 20.03.2009, 15:12   #6
bag
Пользователь
 
Регистрация: 20.06.2008
Сообщений: 95
По умолчанию

В принципе задача классическая, поэтому решение тривиальное:
Код:
uses crt;
const
  len=10; {Размер видимой области}
var
  buf:string;
  s:string;
  i:integer;
begin
  clrscr;
  readln(s);
  buf:='';
  for i:=1 to len do
  begin
    buf:=buf+' ';
  end;
  i:=1;
  repeat
    delay(5000);
    clrscr;
    buf:=copy(buf,2,len)+s[i];
    writeln(buf);
    if n<length(s) then
      inc(i)
    else
      i:=1;
  until keypressed;
end.
Не забывайте оставлять отзывы (кнопочка в левом нижнем углу сообщения)
bag вне форума Ответить с цитированием
Старый 21.03.2009, 05:41   #7
Razorishe
Пользователь
 
Аватар для Razorishe
 
Регистрация: 16.03.2009
Сообщений: 34
По умолчанию

Всем огромное спасибо за помощь!
Добавляйте отзывы, буду благодарен
Razorishe вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Паскаль. Строки. b1otekk Помощь студентам 2 13.03.2009 10:46
Строки в Паскаль Myhamorchik Помощь студентам 2 05.03.2009 10:07
паскаль строки Fornarina Помощь студентам 1 27.12.2008 01:31
Эффект бегущей единицы OLV_Nikon Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 1 21.11.2008 09:10