![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() ![]() |
![]() |
Akella |
![]()
Сообщение
#1
|
![]() Пионер ![]() ![]() Группа: Пользователи Сообщений: 58 Пол: Мужской Репутация: ![]() ![]() ![]() |
Задачка такая:
при запуске программы пользователь вводит текстовую информаци, которая затем должна выводиться на экран в виде бегуещей зигзагом слева направо по горизонтали строки. Вывод бегущей строки должен происходит в текстовом окне 80х5 символов в середине экрана. Завершение проги по esc. помогите плиз, не знаю с чего начать алгоритм... |
volvo |
![]()
Сообщение
#2
|
Гость ![]() |
Цитата в виде бегуещей зигзагом слева направо по горизонтали строки ![]() |
Akella |
![]()
Сообщение
#3
|
![]() Пионер ![]() ![]() Группа: Пользователи Сообщений: 58 Пол: Мужской Репутация: ![]() ![]() ![]() |
![]() ну это должно выглядить что-то типа вот так=) в окне бегает 80х5 ... б_______т _е_____с_р __г___я___о ___у_а_____к ____щ_______а |
volvo |
![]()
Сообщение
#4
|
Гость ![]() |
Так, что ли?
uses crt;
const
s: string = 'running STRING';
width = 80; { Вот это - размеры "окна", в котором все будет двигаться }
height = 5;
delta: integer = 1;
procedure next_pos(var x, y: integer);
begin
inc(x); inc(y, delta);
if (y = height) or (y = 1) then delta := - delta;
if x = width then x := 1;
end;
procedure print(const s: string; x, y: integer);
var i: integer;
begin
for i := 1 to length(s) do begin
gotoxy(x, y); write(s[i]);
next_pos(x, y);
end;
end;
var
x, y, dy: integer;
begin
x := 1; y := 1;
repeat
clrscr;
dy := delta;
print(s, x, y);
delta := dy;
next_pos(x, y);
delay(120); { <--- Задержку установишь, какую надо }
until keypressed;
while keypressed do readkey;
end.
|
Akella |
![]()
Сообщение
#5
|
![]() Пионер ![]() ![]() Группа: Пользователи Сообщений: 58 Пол: Мужской Репутация: ![]() ![]() ![]() |
ну ты молоток, хотел что бы чуток помогли, а тут такое=) мне прям стыдно, за то что я такой тупой=)
аааа, не все равно есть что подделать, мне надо открыть окно с помощью процедуры winodow! надеюсь я справлюсь=))) добавляю window (1,9,80,14) в правам верхнем углу большого экрана зависает строчка=(( аааа все норм! Сообщение отредактировано: Akella - |
Akella |
![]()
Сообщение
#6
|
![]() Пионер ![]() ![]() Группа: Пользователи Сообщений: 58 Пол: Мужской Репутация: ![]() ![]() ![]() |
еще раз огромное спасибо! вот окончательная версия "Бегущей строки по зигзагу в окне" =)
uses crt;
const
width = 80;
height = 5;
delta: integer = 1;
procedure next_pos(var x, y: integer);
begin
inc(x); inc(y, delta);
if (y = height) or (y = 1) then delta := - delta;
if x = width then x := 1;
end;
procedure print(const s: string; x, y: integer);
var i: integer;
begin
for i := 1 to length(s) do begin
gotoxy(x, y); write(s[i]);
next_pos(x, y);
end;
end;
var
x, y, dy: integer;
c : char;
s: string;
begin
textbackground(9);
clrscr;
window(1,9,80,14);
textbackground(2);
textcolor(4);
writeln('Vvedite strochku');
read(s);
x := 1; y := 1;
repeat
while keypressed do c:=readkey;
clrscr;
dy := delta;
print(s, x, y);
delta := dy;
next_pos(x, y);
delay(120);
until c=#27;
end.
|
![]() ![]() |
![]() |
Текстовая версия | 21.04.2025 15:53 |