...
...

Простое программирование, или курсовой своими руками

Простое программирование, или курсовой своими руками

Ничто так не ограничивает полет мысли программиста, как собственный компилятор.
Старый анекдот

Да, вы не ослышались. Курсовой своими руками, а не своими деньгами. Пора бы и вспомнить, что компьютер ваш не для Quake 3 разрабатывался, и на нем не только музыку слушать можно. В дипломе будет написано "инженер-программист", а не "геймер-любитель", так что хватит кричать, что просто нет времени (на Quake-то есть), что ваш "Атлон" 1600 Мгц слабоват для Паскаля и что вся кафедра будет кучно умирать со смеху и тыкать пальцами в монитор, глядя на ваше программное творение.

Мы все когда-то начинали. Курсовой на "отлично" можно написать за одну ночь, зная хотя бы азы языка программирования. Я надеюсь, что данная статья научит некоторым простым приемам, которые могут существенно поднять вас в глазах преподавателя перед предстоящим экзаменом.
Все исходники будут на языке Turbo Pascal и написаны с учетом того, что у вас нет никаких дополнительных модулей и графических драйверов. Все писалось для стандартной поставки Turbo Pascal 7.0, но пойдет в теории для любой версии. Статья рассчитана на людей, имеющих хотя бы небольшой опыт в программировании, но не представляющих себе самих алгоритмов, что случается довольно часто. Ну что ж, поехали...

Красивая графика
В хорошей программе, как и в хорошей веб-странице, лучше всего использовать однотонность. Это сразу поднимает разрабатываемый продукт на более высокий уровень. Идеально подходят градации одного цвета (я предпочитаю градации зеленого, посему все описанное ниже цвета зданий БНТУ). Для создания сей зеленоватой/красноватой/голубоватой (тьфу-тьфу, конечно:)) красоты пишем:
{для переназначения цветов под оттенки зеленого}
setrgbpalette(1,0,15,0);
setrgbpalette(2,0,20,0);
setrgbpalette(3,0,30,0);
setrgbpalette(4,0,40,0);
setrgbpalette(5,0,0,0);

Писать это следует сразу после инициализации графики (initgraph();). Известно, что каждый цвет состоит из трех составляющих: красной (Red), зеленой (Green) и синей (Blue). В процедуре setrgbpalette() сперва указывается номер цвета, который мы меняем, а затем все 3 его составляющих. Красную и синюю мы оставляем равными 0, а зеленую постепенно увеличиваем для перехода от темных к светлым оттенкам. Т.е. при рисовании линии цветом 1 и рисовании линии цветом 4 мы увидим, что линия 1 темно-зеленая, а линия 4 — светло-зеленая. Исключение составляет цвет 5, который будет абсолютно черным (R=0, G=0, B=0). Для чего это делается, будет написано далее. Итого мы получим 4 цвета зеленого оттенка, идущих от темного к светлому, и 1 цвет черный.

Логотип
Пишете вы "Приключения злобного колобка 2" или "Расчет скорости кирпича в водной среде при свободном погружении", программу нужно начинать с логотипа, где большими (огромными даже) буквами будет написано: "Программа сия по перемножению двух чисел и отображению результата на экран создана великим Васей Пупкиным и защищена всевозможными законами об авторском праве!!!"
Ниже приводятся некоторые примеры нестандартных надписей:

Объемный текст:
settextstyle(7,0,4);
setcolor(1);outtextxy (180,200,'Vasya Pupkin');
setcolor(2);outtextxy (181,201,'Vasya Pupkin');
setcolor(3);outtextxy (182,202,'Vasya Pupkin');
setcolor(4);outtextxy (183,203,'Vasya Pupkin');

Процедура settextstyle() устанавливает номер шрифта для надписи, стиль его выведения (0 по горизонтали, 1 — по вертикали) и размер шрифта. Все дополнительные шрифты в Паскале находятся в папке BGI, и путь к ним должен быть указан при инициализации графики (например, (initgraph(d,m,'..\bgi');)). Для работы этого эффекта цвета должны быть определены процедурой setrgbpalette() как указывалось выше.

Рисование текста точками:
settextstyle(7,0,4);
setcolor(5);outtextxy (180,200,'Vasya Pupkin');
for i:=1 to 30000 do begin
x:=180+random(400);
y:=200+random(50);
if getpixel(x,y)=5 then putpixel(x,y,4);
delay(2);
end;

Смертельный номер: проба объяснения принципа работы этого эффекта. Если не поймете — не зацикливайтесь, просто поэкспериментируйте сами. Алгоритм работы данного кусочка кода заключается в том, что мы сперва пишем надпись цветом 5 (черный цвет после нашего переопределения палитры). Фон имеет цвет номер 0 (тоже черный). Так как фон и текст абсолютно черные, вашей строки не видно (логично, не правда ли:)). Затем в месте, где она должна быть в цикле, на месте точки, цвет которой равен 5, мы рисуем свою зеленую точку. Звучит запутанно, но главная идея в том, что номер цвета фона и номер цвета надписи должны различаться. Эта особенность используется в дальнейших эффектах:

Надпись текстурой (1):
c:=1; {с — переменная типа integer}
settextstyle(7,0,4);
setcolor(5);outtextxy (180,200,'Vasya Pupkin');
for i:=180 to 500 do begin {i — переменная типа integer}
inc(c);
if c=5 then c:=1;
for k:=200 to 250 do begin {k — переменная типа integer}
if getpixel(i,k)=5 then putpixel(i,k,c);
end;
end;

Надпись текстурой (2):
c:=1;
settextstyle(7,0,4);
setcolor(5);outtextxy (180,200,'Vasya Pupkin');
for i:=180 to 500 do begin
for k:=200 to 250 do begin
if getpixel(i,k)=5 then putpixel(i,k,c);
inc(c);
if c=5 then c:=1;
end;
end;
Падающий текст:
y:=10;
settextstyle(7,0,4);
repeat
setcolor(3);outtextxy (180,y,'Vasya Pupkin');
delay(100); {Delay неправильно работает на быстрых процессорах, так что ставьте значение под себя или патчите Паскаль}
setcolor(0);outtextxy (180,y,'Vasya Pupkin');
inc(y,1);
until y> 200;
setcolor(3);outtextxy (180,200,'Vasya Pupkin');
Все эти эффекты крайне просты, и вам не составит труда разобраться с ними. Стандартные надписи должны гласить: "Иванов&Co — presents — Kolobok 2":). Да, не забудьте, что в уважающей себя программе непременно должен быть ваш копирайт. Строка типа: "

© Компьютерная газета

полезные ссылки
Аренда ноутбуков