Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Звёздочки, В командной строке 
:(
    Опции темы
Сый
Дата 25.3.2006, 19:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 131
Регистрация: 23.1.2006

Репутация: 2
Всего: 3



Написал такой вот код:
Код

ОТДЕЛ Зв+;

ИСПОЛЬЗУЕТ
  Вывод ИЗ "...\Отделы\Обмен\",
  ОС    ИЗ "...\Отделы\Обмен\",
  Матем ИЗ "...\Отделы\Числа\",
  Цепь  ИЗ "...\Отделы\Иное\";

ЗАДАЧА ВывестиЗв();
ПОСТ
  ЦветПоУмолчанию = 7;
ПЕР
  Ху, Ух: ЦЕЛ;
  МинЦепьЗнак: РЯД 2 ИЗ ЗНАК;
ЗАДАЧА Вывести(Знак: ЗНАК);
УКАЗ
    МинЦепьЗнак := "";
    Цепь.ДобавитьЗнак(МинЦепьЗнак, Знак);
    Вывод.ВПрямоуг(Ху, Ух, Ху, Ух, МинЦепьЗнак);
    ОС.Спать(150)
КОН Вывести;
УКАЗ
  Ху := УЗК(ВШИРЦЕЛ(Матем.случ()*79)); Ух := УЗК(ВШИРЦЕЛ(Матем.случ()*24));
  Вывод.Цвет(Ху, Ух, Ху, Ух, (ЦветПоУмолчанию ДЕЛИТЬ 16)+УЗК(ВШИРЦЕЛ(Матем.случ()*15)));
  Вывести(ВЗНАК(95H));
  Вывести(ВЗНАК(2AH));
  Вывести(ВЗНАК(0FH));
  Вывести(" ");
  Вывод.Цвет(Ху, Ух, Ху, Ух, ЦветПоУмолчанию)
КОН ВывестиЗв;


УКАЗ
  КОЛЬЦО ВывестиЗв; ОС.Спать(150) КОН

КОН Зв.

Он выводит на экране командной строки в случайном месте звёздочку случайного цвета, которая увеличивается (в три этапа: точка, '*' и более крупная звёздочка) и исчезает. Чтобы проходило некоторое время между этапами развития звёздочки и между их появлением используется задача ОС.Спать (sleep из WinAPI). А нужно мне, чтобы выводилось сразу несколько этих самых звёздочек на экран - пока одна будет развиваться, другая должна будет появляться.
--------------------
 Язык программирования, родственный языкам Паскаль и Оберон, использующий русские служебные слова - Глагол: http://glagol.nad.ru 
PM MAIL   Вверх
maxim1000
Дата 25.3.2006, 23:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 3334
Регистрация: 11.1.2003
Где: Киев

Репутация: 33
Всего: 110



ну так в теле цикла выводить не одну звездочку, а несколько
можно сделать массив, который содержит состояния всех звездочек, и:
1. использовать его содержимое для вывода каждой звездочки
2. изменять его при каждом проходе цикла
например, массив может содержать сами символы, которые используются при выводе звездочки

Модератор:
теперь небольшое обращение ко всем, кто собирается тут что-то писать (основано на опыте предыдущих тем): при появлении вопросов (и ответов), которые касаются самого языка Глагол, но не касаются данной задачи, я либо удалю эти сообщения, либо (если вся дискуссия скатится в ту сторону) выкину тему куда-нибудь...


--------------------
qqq
PM WWW   Вверх
Сый
Дата 26.3.2006, 00:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 131
Регистрация: 23.1.2006

Репутация: 2
Всего: 3



Да решение это просто, само собой на ум приходит, да вот задача ОС.Спать известна тем, что прерывает выполнение приложения на указанное время. То есть пока программа спит, ничего произойти в ней не может.
Думаю, тут нужно сделать задачу, которая будет создавать новую звезду и обновлять существующие, и сразу после этого отправлять программу в спячку на 150 мс, например. Естественно, тогда нужно будет использовать ряд (массив) координат каждой звезды. Если это было бы так просто для меня, не обращался бы за помощью smile
--------------------
 Язык программирования, родственный языкам Паскаль и Оберон, использующий русские служебные слова - Глагол: http://glagol.nad.ru 
PM MAIL   Вверх
maxim1000
Дата 26.3.2006, 00:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 3334
Регистрация: 11.1.2003
Где: Киев

Репутация: 33
Всего: 110



Цитата(Сый @ 25.3.2006, 23:02 Найти цитируемый пост)
Думаю, тут нужно сделать задачу, которая будет создавать новую звезду и обновлять существующие, и сразу после этого отправлять программу в спячку на 150 мс, например. Естественно, тогда нужно будет использовать ряд (массив) координат каждой звезды

именно это я и имел в виду - не связывать паузу с выводом только одной звездочки
только я не понимаю, в чем теперь проблема?
есть массив координат, массив состояний, количество звездочек (т.е. кол-во используемых ячеек в массивах)
делаем цикл
в нем:
1. для каждой звезды (т.е. еще один цикл внутри) выводим ее текущее состояние (координаты и символ берем из массива)
2. все звезды, у которых состояние последнее, удаляем
3. у остальных делаем состояние следующим
4. по какому-то критерию (например, каждые 10 проходов) создаем новую звездочку
5. пауза...


--------------------
qqq
PM WWW   Вверх
Сый
Дата 26.3.2006, 09:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 131
Регистрация: 23.1.2006

Репутация: 2
Всего: 3



Спасибо, попробую осуществить.
--------------------
 Язык программирования, родственный языкам Паскаль и Оберон, использующий русские служебные слова - Глагол: http://glagol.nad.ru 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Алгоритмы"

maxim1000

Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Алгоритмы | Следующая тема »


 




[ Время генерации скрипта: 0.0422 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.