• Добро пожаловать на компьютерный форум Tehnari.ru. Здесь разбираемся с проблемами ПК и ноутбуков: Windows, драйверы, «железо», сборка и апгрейд, софт и безопасность. Форум работает много лет, сейчас он переехал на новый движок, но старые темы и аккаунты мы постарались сохранить максимально аккуратно.

    Форум не связан с магазинами и сервисами – мы ничего не продаём и не даём «рекламу под видом совета». Отвечают обычные участники и модераторы, которые следят за порядком и качеством подсказок.

    Если вы у нас впервые, загляните на страницу о форуме и правила – там коротко описано, как задать вопрос так, чтобы быстро получить ответ. Чтобы создавать темы и писать сообщения, сначала зарегистрируйтесь, а затем войдите под своим логином.

    Не знаете, с чего начать? Создайте тему с описанием проблемы – подскажем и при необходимости перенесём её в подходящий раздел.
    Задать вопрос Новые сообщения Как правильно спросить
    Если пришли по старой ссылке со старого Tehnari.ru – вы на нужном месте, просто продолжайте обсуждение.

Листинг, программа

  • Автор темы Автор темы Altana
  • Дата начала Дата начала

Altana

Новые
Регистрация
12 Апр 2012
Сообщения
28
Реакции
0
Баллы
0
Листинг, программа

Помогите объяснить каждую команду пожалуйста :tehnari_ru_837:

Задача 1:
сделать мигающий квадрат.. Т.е в центре экрана появляется квадрат, затем исчезает, затем появляется другой, но уже другого цвета и другого размера, затем исчезает, затем другой и т.д. Это продолжается, пока пользователь не нажмет Esc.

Program pr1;
Uses CRT, graph;
var gd,gm:integer;
n,x1,y1,x2,y2,i:integer;
a:char;

Begin
gd:=0;
Initgraph(gd,gm,'c:\TP7\bgi');

While not keypressed do
begin
n:=random(100);
x1:=320-n;
y1:=240-n;
x2:=320+n;
y2:=240+n;

i:=random(16);
Setcolor(i);
Rectangle(x1,y1,x2,y2);
Delay(200);
Setcolor(0);
Rectangle(x1,y1,x2,y2);
end;

Readkey;
Closegraph;
End.
 
Помогите объяснить каждую команду пожалуйста
Altana, в чем дело? Ведь только что "по косточкам" разобрали эту эту задачку здесь, и всё вроде было хорошо и понятно, так теперь опять двадцать пять здрасьте приехали?
 
Да да, я это помню, но мой преподаватель сказал переделать эту задачу с другими командами, более простыми... вот что поделать)
 
Да да, я это помню, но мой преподаватель сказал переделать эту задачу с другими командами, более простыми... вот что поделать)
Ну хорошо, "более простыми", но что непонятно-то? Алгоритм остался ровно тем же, только что в явном виде заданы длины и координаты... а так...
 
Я отстаивала ту задачу как могла)) Но она у нас оооочень вредная.. -_-
 
поможете, м? пожалуйста) с момента 'while....'
 
поможете, м? пожалуйста) с момента 'while....'
Абсолютно не вижу принципиальной разницы с предыдущим вариантом, ну да ладно:
While not keypressed do {Цикл до нажатия любой клавиши}
begin {Начало цикла}
n:=random(100); {Задание полустороны квадрата случайным образом в диапазоне 0..99 пикселов}
x1:=320-n; {Определение X-координаты левого верхнего угла квадрата}
y1:=240-n; {Определение Y-координаты левого верхнего угла квадрата}
x2:=320+n; {Определение X-координаты правого нижнего угла квадрата}
y2:=240+n; {Определение Y-координаты правого нижнего угла квадрата}

i:=random(16); {Выбор цвета квадрата путем случайного задания индекса от 0 до 15}
Setcolor(i); {Установка выбранного цвета}
Rectangle(x1,y1,x2,y2); {Рисование квадрата}
Delay(200); {Задержка на 0.2 секунды}
Setcolor(0); {Установка фонового цвета}
Rectangle(x1,y1,x2,y2); {Рисование того же квадрата фоновым цветом. Квадрат исчезает}
end; {Конец цикла}

Readkey; {В таком варианте - абсолютно лишняя команда. Можете убрать}
Closegraph; {Выход из графического режима}
End. {Глобальное ВСЁ!}
 
благодарю вас)) tehno009
 
ааа.. можно ещё вопрос))
Почему в начале цикла:
"While not keypressed do"
я не могу написать:
"While ord(a)=27"?
в описании переменных добавила переменную a:char.. что тут не так?
 
Удл. сообщение, т.к. дублирует предыдущее
 
всм дублирует предыдущее? и что никак не сделать чтоли?
 
Да это моё сообщение дублировало ваше :D.
 
ааа.. можно ещё вопрос))
Почему в начале цикла:
"While not keypressed do"
я не могу написать:
"While ord(a)=27"?
в описании переменных добавила переменную a:char.. что тут не так?
Всё не так. Вот у меня было сделано "так" - и зачем понадобилось менять Repeat..Until на While..Do? Ну ладно, Ваше дело. Но чтобы это сработало, надо:
1. Внутрь цикла между Rectangle(... и end; всадить
a:=Readkey;
2. Заголовок цикла задать в виде
While a<>#27 do
либо
While Ord(a)<>27 do
 
сделала.. что-то не то.. квадратики появляются только после того, как я нажму enter o_O
 
сделала.. что-то не то.. квадратики появляются только после того, как я нажму enter o_O
Да, правильно - так:
Код:
Uses CRT, graph;
var
 gd,gm:integer;
 n,x1,y1,x2,y2,i:integer;
 a:char;

Begin
 gd:=0;
 Initgraph(gd,gm,'c:\TP7\bgi');

 While a<>#27 do
  begin
   n:=random(100);
   x1:=320-n;
   y1:=240-n;
   x2:=320+n;
   y2:=240+n;

   i:=random(15)+1;
   Setcolor(i);
   Rectangle(x1,y1,x2,y2);
   Delay(200);
   Setcolor(0);
   Rectangle(x1,y1,x2,y2);
   If KeyPressed then a:=ReadKey;
  end;

 Closegraph;
End.
 
мм.. нашла ошибку, спасибо)
 
Назад
Сверху