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

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

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

> Использование модуля CRT
Гость
сообщение 2.03.2007 1:17
Сообщение #1


Гость






Помогите написать программку. Вообще не имею понятия как ее написать...

Организовать вывод в окне заданного размера двух символов, "перепрыгивающих" друг через друга и двигающихся по горизонтали.
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов(1 - 18)
Bokul
сообщение 2.03.2007 2:45
Сообщение #2


Гуру
*****

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

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



uses crt;

const
time=100;

procedure jump(r:byte; c:char; Var x,y:byte);//с помощью этой процедуры осуществляется прыжок
var i:byte;
begin
for i:=1 to 2*r do begin
gotoxy(x,y); write(' ');
inc(x);
if i<=r then dec(y)
else inc(y);
gotoxy(x,y); write©;
delay(time);
end;
end;


var x1,y1,x2,y2:byte;//координаты символов
begin
window(10,1,50,25);//наше окно
TextBackGround(blue);//фоновый цвет окна
clrscr;
x1:=3; y1:=10;//---\
x2:=6; y2:=10;//----\начальные координаты
repeat//прыгаем
jump(3,'a',x1,y1);
jump(3,'b',x2,y2);
until keypressed;//пока не надоест (нажимаем любую клавишу для выхода)
end.




--------------------
Лао-Цзы :
Знать много и не выставлять себя знающим есть нравственная высота. Знать мало и выставлять себя знающим есть болезнь. Только понимая эту болезнь, мы можем избавиться от нее.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 2.03.2007 2:52
Сообщение #3


Гость






Bokul, а ты в Турбо Паскале это запускать пробовал? smile.gif Попробуй, тебе понравится... smile.gif

А в FPC меня порадовало поведение программы, когда символы допрыгивают до края окна ... lol.gif
 К началу страницы 
+ Ответить 
Bokul
сообщение 2.03.2007 3:00
Сообщение #4


Гуру
*****

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

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


Цитата
Bokul, а ты в Турбо Паскале это запускать пробовал? smile.gif Попробуй, тебе понравится...

Ну тоже самое что и в Fpc? Нет?

Цитата
А в FPC меня порадовало поведение программы, когда символы допрыгивают до края окна ...

smile.gif Им надоедает прыгать и они просто идут.. Все природно smile.gif


--------------------
Лао-Цзы :
Знать много и не выставлять себя знающим есть нравственная высота. Знать мало и выставлять себя знающим есть болезнь. Только понимая эту болезнь, мы можем избавиться от нее.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 2.03.2007 3:13
Сообщение #5


Гость






Попробуй вот это:
...
procedure jump(r:byte; c:char; Var x,y:byte);
var i:byte;
begin
for i:=1 to 2*r do begin
gotoxy(x,y); write(' ');
inc(x);

if x > lo(windmax) - lo(windmin) then begin
x := 1;
end;

if i<=r then dec(y)
else inc(y);
gotoxy(x,y); write©;
delay(time);

end;
end;
...



Добавлено через 1 мин.
P.S. А курсор можно погасить: Курсор
 К началу страницы 
+ Ответить 
Bokul
сообщение 2.03.2007 3:50
Сообщение #6


Гуру
*****

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

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


Можно и так:


procedure jump(r:byte; c:char; Var x,y,dir:byte);
var i:byte; b:boolean;
begin
for i:=1 to 2*r do begin
gotoxy(x,y); write(' ');
if (x=lo(windmax)-lo(windmin)) or (x=0) then
dir:=-dir;
inc(x,dir);
if i<=r then dec(y)
else inc(y);
gotoxy(x,y); write©;
delay(time);
end;
end;



Добавлено через 17 мин.
Т.е. полный вариант выглядит так:

uses crt;

const
time=100;

procedure jump(r:byte; c:char; Var x,y,dir:byte);
var i:byte; b:boolean;
begin
for i:=1 to 2*r do begin
gotoxy(x,y); write(' ');
if (x=lo(windmax)-lo(windmin)) or (x=0) then
dir:=-dir;
inc(x,dir);
if i<=r then dec(y)
else inc(y);
gotoxy(x,y); write©;
delay(time);
end;
end;


var x1,y1,x2,y2:byte;
dir1,dir2:byte;
begin
window(10,1,50,25);
TextBackGround(blue);
clrscr;
dir1:=1; dir2:=1;
x1:=3; y1:=10;
x2:=6; y2:=10;
repeat
jump(5,'a',x1,y1,dir1);
jump(5,'b',x2,y2,dir2);
until keypressed;
end.




--------------------
Лао-Цзы :
Знать много и не выставлять себя знающим есть нравственная высота. Знать мало и выставлять себя знающим есть болезнь. Только понимая эту болезнь, мы можем избавиться от нее.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Гость
сообщение 2.03.2007 15:12
Сообщение #7


Гость






Спасиба большое.
Я только одного не понял... что делает переменная dir?
 К началу страницы 
+ Ответить 
volvo
сообщение 2.03.2007 15:14
Сообщение #8


Гость






Направление движения... Если dir > 0 , то символы перемещаются слева направо, если dir < 0 - то справа налево...

Естественно, dir1 и dir2 должны быть одинаковыми, иначе получится бред...
 К началу страницы 
+ Ответить 
-Кошка-
сообщение 5.03.2007 16:42
Сообщение #9


Гость






А у меня такая же задача.Только жанные размера окна нужно ввести с клавиатуры. Как это организовать?Чтобы буквы перепрыгивали друг черег друга,но при любых данных размеров окна.
 К началу страницы 
+ Ответить 
Алена
сообщение 5.03.2007 16:48
Сообщение #10


Гость






Изменяем только основную программу, все остальное - как и было:
...
var
x1,y1,x2,y2:byte;
w, h: integer;
begin
{
w := 20;
h := 10;
}

write('ширина [10 .. 20] = '); readln(w); { можно добавить проверку введенных данных }
write('высота [10 .. 20] = '); readln(h);

window(10, 1, 10 + w, 1 + h);
TextBackGround(blue);
clrscr;
x1:=3; y1:=10;
x2:=6; y2:=10;
repeat
jump(3,'a',x1,y1);
jump(3,'b',x2,y2);
until keypressed;
end.


Сообщение отредактировано: Алена - 5.03.2007 16:49
 К началу страницы 
+ Ответить 
-Кошка-
сообщение 6.03.2007 15:25
Сообщение #11


Гость






Спасибо. Попробую...
 К началу страницы 
+ Ответить 
Гость
сообщение 6.03.2007 21:07
Сообщение #12


Гость






А как например эта задача будет выглять в блок-схеме алгоритма?
Блок начала,блок ввода, 3 блока решения (процесс),блок решения(логический блок) и блок конец.
Так?
 К началу страницы 
+ Ответить 
Гость
сообщение 6.03.2007 21:48
Сообщение #13


Гость






Если кто-то может, то выложите здесь лучше блок-схему к этой программе и её подпрограмме...
 К началу страницы 
+ Ответить 
klem4
сообщение 6.03.2007 22:14
Сообщение #14


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

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

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


Программа построения блок-схем

Пробовал ?


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





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

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


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


///
**

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

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


Ты должна удалять и рисовать символы по-переменно.....
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 7.03.2007 18:13
Сообщение #17


Гость






Yulianna, это что, для всей группы задания? Так и будет продолжаться? Тебе привели несколько решений, ты даже не соизволила отметиться в теме, рассказать, подошли ли они, только все время задаешь новые вопросы... Тут, извини, не роботы, которым все равно, кому-то подходит, то что они делают, или нет... dry.gif
 К началу страницы 
+ Ответить 
Zzzz...
сообщение 7.03.2007 19:25
Сообщение #18


///
**

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

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


Ну вот такой сойдёт???

uses crt;
var
a,b:char;
i,x1,x2:integer;
begin
clrscr;
a:='*';
b:='@';
x1:=1;
x2:=2;
for i:=0 to 38 do
begin
x1:=x2+1;
delay(100);
clrscr;
gotoxy(x1,1);
write(a);
x2:=x1+1;
delay(100);
clrscr;
gotoxy(x2,1);
write(b);
end;
for i:=38 downto 0 do
begin
x1:=x2-1;
delay(100);
clrscr;
gotoxy(x1,1);
write(a);
x2:=x1-1;
delay(100);
clrscr;
gotoxy(x2,1);
write(b);
end;
end.

 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Yulianna
сообщение 8.03.2007 0:54
Сообщение #19





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

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


volvo,это одно моё задание. Я только учусь программированию на Паскале,поэтому не совсем пока разбераюсь. Спасибо, что вы помогаете. Просто то, что делаю я в последнее время постоянно не нравится преподавателю-вот только поэтому я начала спрашивать здесь. Извини, конечно, если получается что я задаю вопросы. Больше этого делать не буду. пасибо за помощь!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 



- Текстовая версия 20.07.2025 18:11
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"