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

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

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

 
 Ответить  Открыть новую тему 
> из PascalABC в Turbo Pascal, переделать код.
сообщение
Сообщение #1


Новичок
*

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

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


Сделал программу в PascalABC программу с графикой т.к. в нормальном Паскале в графическом режиме паскаль отключался как можно переделать правильно на Турбо Паскаль. Сам немогу сделать т.к. неподключаеться ничего и неработает.
{Программа  ресует рекалмный плакат с бегущим текстом Hello World шрифтом TriplexFont}
program mygraph;
uses crt,graphABC;
var x,y : integer;
s : string;
k : char;
procedure vpravo;
Begin
for x:=10 to 170 do
begin
if keypressed then halt;
Rectangle(10,10,400,80);
TextOut(x,34, 'Hello World');
delay(100);
end;
End;
procedure vlevo;
Begin
for x:=170 downto 11 do
begin
if keypressed then halt;
Rectangle(10,10,400,80);
TextOut(x,34, 'Hello World');
delay(100);
end;
End;

BEGIN

SetFontSize(10);
SetFontColor(clred);
SetFontName('TriplexFont');



vpravo;
vlevo;

END.


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


Гуру
*****

Группа: Пользователи
Сообщений: 1 220
Пол: Мужской

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


Только у тебя затирается текст
program mygraph;
uses crt,graph;
var x,y : integer;
s : string;
k : char;
gr,gm : iNteger;
procedure vpravo;
Begin
for x:=10 to 170 do
begin
if keypressed then halt;
Rectangle(10,10,400,80);
OutTextXY(x,34, 'Hello World');
delay(100);
end;
End;
procedure vlevo;
Begin
for x:=170 downto 11 do
begin
if keypressed then halt;
Rectangle(10,10,400,80);
OutTextXY(x,34, 'Hello World');
delay(100);
end;
End;

BEGIN
gr:=Detect;
Initgraph(gr,gm,'c:\bp\bgi');
SetTextStyle(1,0,4);
SetColor(red);
vpravo;
vlevo;
END.

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


Новичок
*

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

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


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


Новичок
*

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

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


Вот так наверно будет лучше.
program mygraph;
uses crt,graph;
var x,y : integer;
s : string;
k : char;
gr,gm : iNteger;
i : char;
procedure vpravo;
Begin
for x:=10 to 60 do
begin
cleardevice;
if keypressed then halt;
Rectangle(10,10,600,80);
OutTextXY(x,34, 'Hello world');
delay(100);
end;
End;
procedure vlevo;
Begin
for x:=60 downto 11 do
begin
cleardevice;
if keypressed then halt;
Rectangle(10,10,600,80);
OutTextXY(x,34, 'Hello world');
delay(100);
end;
End;

BEGIN
i:= 'e';
gr:=Detect;
Initgraph(gr,gm,'c:\bp\bgi');
SetTextStyle(1,0,4);
SetColor(red);
while i = 'e' do
begin
vpravo;
vlevo;
end;
END.


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


Гость






Цитата
Вот так наверно будет лучше.
Тебе видней... Если нравится копи/пастить целые фрагменты кода, может и лучше... Что мешает выделить сам фрагмент очистки поля и вывода строки в отдельную процедуру? Программа станет на треть короче...

Кстати, совсем не обязательно чистить весь экран, можно очистить только тот прямоугольник, в котором выведена строка, будет гораздо быстрее и мерцать будет меньше...

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


Новичок
*

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

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


Цитата(volvo @ 5.12.2009 16:11) *

Тебе видней... Если нравится копи/пастить целые фрагменты кода, может и лучше... Что мешает выделить сам фрагмент очистки поля и вывода строки в отдельную процедуру? Программа станет на треть короче...

Кстати, совсем не обязательно чистить весь экран, можно очистить только тот прямоугольник, в котором выведена строка, будет гораздо быстрее и мерцать будет меньше...

P.S. Очень порадовал способ организации цикла: ввести специальную переменную, с помощью которой организовать банальный вечный цикл, из которого выходить halt-ом, не закрывая графический режим... "Это что-то особенного" (С)...

а вот насчет копи пастить.. Взять сделать процедуру которая будет двигать влево и вправо один и тот же текст?
А как можно очищать внутри квадрата? А насчет банального цикла Вы серьезно?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Гуру
*****

Группа: Пользователи
Сообщений: 1 220
Пол: Мужской

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


Цитата
Взять сделать процедуру которая будет двигать влево и вправо один и тот же текст?

Конечно.
Заведи переменную, например DeltaX
При движении влево она будет принимать отр-ное значение, вправо - положит. значение. А в самой процедуре строка увеличения/уменьшения координаты -
x:=x+DeltaX;
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 





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