Как сделать цветок в паскале
Текст, который мы выводим на экран с помощью процедуры Writeln или с помощью оператора Write можно изменять. Процедура Textcolor используется для изменения цвета выводимого текста. Процедура Textbackground изменяет цвет фона, на котором выводится текст. Процедура Window задает окно, в котором будет выводиться текст.
Строка №2. Подключаем к программе модуль Crt. Мы уже упоминали этот модуль, когда использовали процедуру очистки экрана Clrscr. Помимо этого данный модуль подключается к программе для управления способами вывода на экран. Он позволяет устанавливать курсор в нужную позицию на экране (gotoxy), устанавливать цвет фона (textbackground) и цвет выводимых символов (textcolor) и многое другое. В конце обязательно ставится точка с запятой.
Строка №5. Записываем процедуру Window. Эта процедура определяет, где на экране будет находиться текстовое окно. Window (x1, y1, x2, y2): (x1, y1) - координаты для верхнего левого угла окна. (x2,y2) – координаты для нижнего правого угла окна. Таким образом, запись Window (20,5,60,20) означает, что у нас задается окно. Его координаты: левый верхний угол (20,5) и нижний правый угол (60,20). Ниже дана простая схема.
В строке №6 записываем процедуру Textbackground, которая устанавливает цвет для фона, на котором будет выводиться текст. После записи слова Textbackground в скобках указывается значение. Мы указали значение 14. Это число соответствует желтому цвету в палитре цветов Паскаля. Ниже находится таблица, в которой указаны все 16 цветов, входящих в палитру цветов Паскаля.
В строке №7 записываем процедуру Textcolor. Эта процедура устанавливает цвет для выводимого на экран текста. После записи Textcolor в скобках записываем значение 1, что соответствует синему цвету.
Теперь набрем программу в Паскале и запустим ее.
Дополнение к материалу.
CRT – английская аббревиатура, которая обозначает электронно-лучевую трубку. Таким образом, название модуля Crt подчеркивает, что он умеет управлять способами вывода на экран.
Эта программа на подобие PAINT.
procedure keydown(key: integer);
begin
if key=Vk_up then S:=S+1;
if key=Vk_down then S:=S-1;
if key=Vk_left then A:=A-1;
if key=Vk_right then A:=A+1;
if A=0 then A:=A+1;
if A=11 then A:=A-1;
if S=0 then S:=S+1;
if S=10 then S:=S-1;
end;
procedure MouseDown(x,y,mb: integer);
begin
MoveTo(x,y);
end;
procedure MouseMove(x,y,mb: integer);
begin
if S=1 then begin setbrushcolor(clwhite); circle(7,7,12); setpencolor(clblack); setbrushcolor(clblack); circle(7,7,A); end;
if S=2 then begin setbrushcolor(clwhite); circle(7,7,12); setpencolor(clgreen); setbrushcolor(clgreen); circle(7,7,A); end;
if S=3 then begin setbrushcolor(clwhite); circle(7,7,12); setpencolor(clred); setbrushcolor(clred); circle(7,7,A); end;
if S=4 then begin setbrushcolor(clwhite); circle(7,7,12); setpencolor(clblue); setbrushcolor(clblue); circle(7,7,A); end;
if S=5 then begin setbrushcolor(clwhite); circle(7,7,12); setpencolor(clyellow); setbrushcolor(clyellow); circle(7,7,A); end;
if S=6 then begin setbrushcolor(clwhite); circle(7,7,12); setpencolor(clbrown); setbrushcolor(clbrown); circle(7,7,A); end;
if S=7 then begin setbrushcolor(clwhite); circle(7,7,12); setpencolor(clsilver); setbrushcolor(clsilver); circle(7,7,A); end;
if S=8 then begin setbrushcolor(clwhite); circle(7,7,12); setpencolor(clpurple); setbrushcolor(clpurple); circle(7,7,A); end;
if S=9 then begin setbrushcolor(clwhite); circle(7,7,12); setpencolor(cllime); setbrushcolor(cllime); circle(7,7,A); end;
if mb=1 then circle(X,Y,A);
setbrushcolor(clwhite);
setpencolor(clwhite);
if mb=2 then circle(X,Y,A);
end;
begin
gotoxy(1,2);
write('меняйте цвет стрелками на клавиатуре вверх и вниз. стирать пкм, рисовать лкм.');
gotoxy(5,1);
write('менять размер кисти стрелками влево и вправо.');
Onkeydown:=keyDown;
OnMouseDown:=MouseDown;
OnMouseMove:=MouseMove
end.
Это оооочень сырая версия игры PAC MAN. но может-быть кому-то сойдёт за образец.
program pakman;
uses graphABC,events,ABCObjects,crt;
A,B,i:integer; // кординаты для перемещения
SPeed:integer; // скорость перемещения пакмана
AA:rectangleABC; //препятствия, стены и т.д.
L : integer; //жизни
K : integer; //ключи
procedure keydown(key: integer);
begin
if key=Vk_up then A:=A-speed;
if key=Vk_down then A:=A+speed;
if key=Vk_left then B:=B-speed;
if key=Vk_right then B:=B+speed;
if B>485 then B:=B-485; // X
if B 370 then A:=A-370; // Y
if A 100 then begin writeln('СЛИШКОМ БОЛЬШОЕ ЧИСЛО! ИНТЕРВАЛ: от 0 до 100'); T:=T+1; end;
if C C then writeln('нет, я загадала число побольше. ') else T:=T-1;
if B C then writeln('-1 жизнь');
if B 280 then A:=A-SPEED;
if B 480 then B:=B-SPEED;
/////////////////////////////////////////
line(0,0,0,300);
line(20,0,20,300);
line(40,0,40,300);
line(60,0,60,300);
line(80,0,80,300);
line(100,0,100,300);
line(120,0,120,300);
line(140,0,140,300);
line(160,0,160,300);
line(180,0,180,300);
line(200,0,200,300);
line(220,0,220,300);
line(240,0,240,300);
line(260,0,260,300);
line(280,0,280,300);
line(300,0,300,300);
line(320,0,320,300);
line(340,0,340,300);
line(360,0,360,300);
line(380,0,380,300);
line(400,0,400,300);
line(420,0,420,300);
line(440,0,440,300);
line(460,0,460,300);
line(480,0,480,300);
line(0,20,500,20);
line(0,40,500,40);
line(0,60,500,60);
line(0,80,500,80);
line(0,100,500,100);
line(0,120,500,120);
line(0,140,500,140);
line(0,160,500,160);
line(0,180,500,180);
line(0,200,500,200);
line(0,220,500,220);
line(0,240,500,240);
line(0,260,500,260);
line(0,280,500,280);
line(0,300,500,300);
textout(480,283,' F ');
setbrushcolor(clyellow);
textout(0,385,'кординаты: ');
gotoxy(11,25);
write(B,' ',A);
/////////////////////////////////////////
Malder ( 2002-04-04 21:27 ) [0]
Я понимаю, что не в тему чуть-чуть =), но просто не знаю куда обратиться - сайтов по паскалю не осталось.
Вообщем, у меня есть задача: матрица, и в каждую ее ячейку нужно ввести цвет. То есть я себе представляю это так:
Допустим, есть матрица 10X10. При запуске программы рисуется таблица 10X10 клеток. И предлагается выбрать цвет. Выбираешь, жмешь Enter, первая ячейка закрашивается выбранным цветом. Далее опять предлагается выбрать цвет, выбираешь. и вторая ячейка окрашивается. Так до тех пор пока не раскраситься вся таблица.
Как это реализовать ? Как можно рисовать в Паскале ? Желательно, как можно более простой вариант и без использование нестандартных модулей. Если кто встречался с таким - с благодарностью приму готовый код (ну или почти готовый). Вообщем, поможите чем-нибудь.
Что бы нарисовать прямоугольник можно использовать Rectangle(x1,y1,x2,y2:Integer);
Устанавливает цвет линий: SetColor(c:Word);
Стиль закраски: SetFillStyle(pattern:Word,color:Word);
<- ->al creator ( 2002-04-04 21:51 ) [3]
Прежде всего надо знать - как ты рисуешь. Есть два варианта : 1) в граф режиме; 2) в текстовом.
Если ты это делаешь в тестовом режиме (это проще - советую делать в нём - в графическом режиме надо учитывать различные режимы (EGA,VGA,SVGA и т.п.), инициализирования экрана, страницы памяти . дофига - в текстовом меньше и проще. но это текстовый режим. )
. блин, а я не могу вспомнить для текстового режима функции позиционирования. для граф. могу. сейчас.
TextColor(value) = задаёт цвет текста (1..16)
TextBackGround(value) =аналогично
Window(x1,y1,x2,y2) - рисует окно с фоном определённом и текстом (настройками определёнными выше)
GotoXY(x,y) - пизиционирует курсор в координатах
Левый верхний угол экрана - 0,0
Если не ошибаюсь - ClrScr - очистка экрана
WhereX,WhereY - координаты курсора(функции)
Дальше сам копай
al creator ( 2002-04-04 21:52 ) [4]
сори. цвета от 0..16
<- ->cok ( 2002-04-04 21:59 ) [5]
Ну ладно, напишу поподробнее :)
ClearViewPort-очистить окно
CloseGraph-закрыть графический режим
Line-чертит линию
LineTo-чертит линию (начиная с текущей позиции)
OutText-вывод текста
SetBkColor-цвет фона
SetColor-цвет того, что будешь рисовать
SetFillStyle-стиль закраски
SetLineStyle-стиль линии
SetTextStyle-стиль текста
.
Параметры см. в хэлпах (я думаю с этим справишься)
al creator ( 2002-04-04 22:12 ) [6]
Откопал пример:
Для граф модуля:
uses crt, graph;
var GraphDriver,GraphMode:integer;
begin
GraphDriver:=detect;
InitGraph(GraphDriver,GraphMode,"");
IF GraphResult<>grOk then begin writeln("Fuck error!graph
loose");Halt(1);end;ClearDevice;SetBkColor(..);SetColor(..);
///
тут смотри что тебе писал cok
.
CloseGraph;
end.
al creator ( 2002-04-04 22:15 ) [7]
да, вспомнил нюанс - если хочешь, чтобы определённые настройки цвера срабатывали (те, что по умолчанию), то ClrScr или ClearDevice - пиши после них. и цвета от 0..15,blink - это точнее, а то я тебя прошлый раз тоже обманул
<- ->Malder ( 2002-04-05 00:04 ) [8]
Спасибо, народ. Остался вопрос:
al creator © (04.04.02 21:51)
. Есть два варианта : 1) в граф режиме; 2) в текстовом.
Эта программа на подобие PAINT.
procedure keydown(key: integer);
begin
if key=Vk_up then S:=S+1;
if key=Vk_down then S:=S-1;
if key=Vk_left then A:=A-1;
if key=Vk_right then A:=A+1;
if A=0 then A:=A+1;
if A=11 then A:=A-1;
if S=0 then S:=S+1;
if S=10 then S:=S-1;
end;
procedure MouseDown(x,y,mb: integer);
begin
MoveTo(x,y);
end;
procedure MouseMove(x,y,mb: integer);
begin
if S=1 then begin setbrushcolor(clwhite); circle(7,7,12); setpencolor(clblack); setbrushcolor(clblack); circle(7,7,A); end;
if S=2 then begin setbrushcolor(clwhite); circle(7,7,12); setpencolor(clgreen); setbrushcolor(clgreen); circle(7,7,A); end;
if S=3 then begin setbrushcolor(clwhite); circle(7,7,12); setpencolor(clred); setbrushcolor(clred); circle(7,7,A); end;
if S=4 then begin setbrushcolor(clwhite); circle(7,7,12); setpencolor(clblue); setbrushcolor(clblue); circle(7,7,A); end;
if S=5 then begin setbrushcolor(clwhite); circle(7,7,12); setpencolor(clyellow); setbrushcolor(clyellow); circle(7,7,A); end;
if S=6 then begin setbrushcolor(clwhite); circle(7,7,12); setpencolor(clbrown); setbrushcolor(clbrown); circle(7,7,A); end;
if S=7 then begin setbrushcolor(clwhite); circle(7,7,12); setpencolor(clsilver); setbrushcolor(clsilver); circle(7,7,A); end;
if S=8 then begin setbrushcolor(clwhite); circle(7,7,12); setpencolor(clpurple); setbrushcolor(clpurple); circle(7,7,A); end;
if S=9 then begin setbrushcolor(clwhite); circle(7,7,12); setpencolor(cllime); setbrushcolor(cllime); circle(7,7,A); end;
if mb=1 then circle(X,Y,A);
setbrushcolor(clwhite);
setpencolor(clwhite);
if mb=2 then circle(X,Y,A);
end;
begin
gotoxy(1,2);
write('меняйте цвет стрелками на клавиатуре вверх и вниз. стирать пкм, рисовать лкм.');
gotoxy(5,1);
write('менять размер кисти стрелками влево и вправо.');
Onkeydown:=keyDown;
OnMouseDown:=MouseDown;
OnMouseMove:=MouseMove
end.
Читайте также: