Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.12.2013, 17:55   #1
DSBM
Пользователь
 
Регистрация: 15.12.2013
Сообщений: 13
По умолчанию Ёлочка с мигающими игрушками в Turbo Pascal

Привет форумчане!
Дано задание:
>Нарисовать ёлочку с мигающими игрушками. Игрушки задать с помощью элементов псевдографики.
Ёлку-то я нарисовал, а вот шарики написаны с помощью "fillellipse", что, собственно не радует ни меня, ни моего препода.
Подскажите, как сделать вместо шариков элемент псевдографики?
Исходный код Turbo Pascal ниже.
Код:
{Made by DSBM}
program DSBM;
uses graph, crt;
var dr, md: integer;
    i, j, x, y: byte;
begin
clrscr;
x:=succ(0);
y:=succ(0);
window(x, y, x+20, y+20);
clrscr;
gotoxy(6,2);
dr:=0;
md:=0;
initgraph(dr, md, '');
{Подключил модуль Graph.TPU}
setcolor(green);
SetFillStyle(1, green);
line(100,50,50,100);
line(50,100,150,100);
line(150,100,100,50);
floodfill(52,99,green);
{Нарисовал первый треугольник Ёлочки}
line(100,100,50,150);
line(50,150,150,150);
line(150,150,100,100);
floodfill(52,149,green);
{Нарисовал второй треугольник Ёлочки}
line(100,150,50,200);
line(50,200,150,200);
line(150,200,100,150);
floodfill(52,199,green);
{Нарисовал третий треугольник Ёлочки}
setfillstyle(1,brown);
setcolor(brown);
line(90,201,90,240);
line(90,240,110,240);
line(110,240,110,201);
line(110,201,90,201);
floodfill(100,210,brown);
{Задан ствол дерева}
repeat
setcolor(red);
setfillstyle(1,red);
fillellipse(150,105,4,4);
fillellipse(50,155,4,4);
fillellipse(150,205,4,4);
setcolor(yellow);
setfillstyle(1,black);
fillellipse(50,105,4,4);
fillellipse(150,155,4,4);
fillellipse(50,205,4,4);
delay(700);
{горят красные}
setcolor(red);
setfillstyle(1,black);
fillellipse(150,105,4,4);
fillellipse(50,155,4,4);
fillellipse(150,205,4,4);
setfillstyle(1,yellow);
setcolor(yellow);
fillellipse(50,105,4,4);
fillellipse(150,155,4,4);
fillellipse(50,205,4,4);
delay(700);
{горят желтые}
until keypressed;
end.
Заранее спасибо.
DSBM вне форума Ответить с цитированием
Старый 15.12.2013, 18:47   #2
ViktorR
Старожил
 
Регистрация: 23.10.2010
Сообщений: 2,309
По умолчанию

При использовании псевдографики ненужен графический режим.
Код сивола определяется как #<число>.
Например:
Код:
uses crt;
var bSim : Char;
   x, y : byte;
   ColorSim : byte;

begin
ClrScr;
   x := 40;
   y := 5;
   gotoXY(x,y);
   ColorSim := 2;
   TextColor(ColorSim); {или TextColor(Green);}
   bSim := #176;
   writeln(bSim);
   y := y + 1;
   x := x - 1;
   gotoXY(x,y);
   ColorSim := 10;
   TextColor(ColorSim); {или TextColor(LightGreen);}
   bSim := #176;
   writeln(bSim);
end.
Конечно, не так красиво будет выглядеть, да и шарики будут не круглые, но по условию задачи.
Как вариант, можно описать двумерный массив, элементы которого задать в процессе описания.
После этого только менять цвета отдельных элементов (перерисовывать), которые имитируют шарики, для обеспечения пиемлемого мерцания и/или перехода цветов.
Как выглядит псевдографический символ и его код, так думаю, найти не сложно: таблица ASCII кодов.


Как-то так, ...
Как-то так, ...
ViktorR вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
pascal abc, pascal turbo. выборка данных из одного .txt в другой ТипичныйСтудент Помощь студентам 6 27.04.2013 15:29
Задача turbo pascal на тему: файлы с произвольным доступом в Pascal ExCiTeC Паскаль, Turbo Pascal, PascalABC.NET 0 28.01.2013 20:36
Turbo Pascal и Free Pascal , в чем разница? antoxann Паскаль, Turbo Pascal, PascalABC.NET 31 09.11.2011 07:52
а free pascal не читает задачи которые написаны на turbo pascal? demonara Паскаль, Turbo Pascal, PascalABC.NET 3 25.05.2009 16:28
проблема с мигающими shape'ами и картинками Chugun Помощь студентам 1 04.02.2009 22:24