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

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

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

 
 Ответить  Открыть новую тему 
> Использование модуля CRT
сообщение
Сообщение #1


Гость






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

Организовать вывод в окне заданного размера двух символов, "перепрыгивающих" друг через друга и двигающихся по горизонтали.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Гость






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

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


Гуру
*****

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

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


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

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

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

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


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


Гость






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


Гость






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

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


Гость






А у меня такая же задача.Только жанные размера окна нужно ввести с клавиатуры. Как это организовать?Чтобы буквы перепрыгивали друг черег друга,но при любых данных размеров окна.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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.


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


Гость






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


Гость






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


Гость






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


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

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

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


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

Пробовал ?


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





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

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


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


///
**

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

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


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


Гость






Yulianna, это что, для всей группы задания? Так и будет продолжаться? Тебе привели несколько решений, ты даже не соизволила отметиться в теме, рассказать, подошли ли они, только все время задаешь новые вопросы... Тут, извини, не роботы, которым все равно, кому-то подходит, то что они делают, или нет... dry.gif
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #19





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

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


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

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

 





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