помогите решить!!! есть программа, которая выводит на весь экран точки произвольного цвета. Необходимо, чтобы вместо точек выводило латинские буквы в произвольном порядке
Program L; uses graph; var i,x,y,c:integer; begin DetectGraph(x,y); InitGraph(x,y,'c:\tp7\BGI\'); for i:=1 to 5000 do begin x:=Random(640); y:=Random(480); c:=Random(15); PutPixel(x,y,c); end; readln; end.
compiler
19.02.2008 19:46
Цитата(-Ольга- @ 19.02.2008 14:39)
выводило латинские буквы в произвольном порядке
если работа в текстовом режиме(модуль crt в помощь), то используй: TextColor(Color : byte) – процедура задает цвет символов Color.
Сonst {Коды, допустимые для текста и фона} Black =0; {Черный} Blue =1; {Синий Green =2; {Зеленый} Cyan =3; {Голубой} Red =4; {Красный} Maganta =5; {Пурпурный} Brown =6; {Коричневый} LightGray =7; {Серый} {Коды, допустимые только для текста} DarkGray =8; {Темно-серый} LightBlue =9; {Ярко-синий} LightGreen =10; {Ярко-зеленый} LightCyan =11; {Ярко-голубой} LightRed =12; {Ярко-красный} LightMaganta =13; {Ярко-пурпурный} Yellow =14; {Ярко-желтый} White =15; {Белый}
GoToXY(X, Y : byte) – процедура перемещает курсор к элементу экрана с заданными координатами X и Y. Если хотя бы одна координата недопустима, процедура не выполняется. и в конце работы не забудь привести терминал в порядок...
если всё таки в графическом режиме(модуль graph), то OutTextXY(X, Y, 'текст'), где переменные X, Y типа Integer , а 'текст' типа String – выводит строку 'текст', начиная с точки с координатами X, Y.
Гость
19.02.2008 19:52
спасибо !!! а не подскажешь еще как сделать, чтобы 'текст' это были разнообразные латинские буквы
compiler
19.02.2008 20:11
Цитата(Гость @ 19.02.2008 14:52)
спасибо !!! а не подскажешь еще как сделать, чтобы 'текст' это были разнообразные латинские буквы
если кодировка основана на ASCII, то я б использовал следующую процедуру
function getRandLet():char; var i:integer; begin i:=integer(random(52)); if i<26 then i:=i+65 else i:=i+71; getRandLet:=chr(i); end;
* в главной программе необходимо прописывать randomize;
если в код не поймешь, задавай вопросы...
volvo
19.02.2008 20:13
OutTexyXY(X, Y, chr(random(26) + 65));
-Ольга-
19.02.2008 20:20
СПАСИБО!!! работает! только я не поняла, что значят цифры 26 и 65....... может кто-нибудь сказать
-Ольга-
19.02.2008 20:24
только буквы теперь опять не цветные
compiler
19.02.2008 20:35
Цитата(-Ольга- @ 19.02.2008 15:20)
СПАСИБО!!! работает! только я не поняла, что значят цифры 26 и 65....... может кто-нибудь сказать
в кодировках основанных на ASCII, 65 - код первой буквы(<<A>>), а 26 - количество букв в алфавите.. расмотрим функцию подробней
Код
function getRandLet():char; //функция возвращает символ var i:integer; //служебная переменная, хранит код символа begin i:=integer(random(52)); //в алфавите 26 букв, но есть большие и маленькие, итого 52 if i<26 then //если буква большая i:=i+65 //добавляем 65(код "A") else //буква маленькая i:=i+71; //добавляем 65(код "A") + 6(количество символов между "Z" и "a" ) getRandLet:=chr(i); //преобразовываем код в символ end;
Добавлено через 2 мин.
Цитата
только буквы теперь опять не цветные
в каком режиме ты работаешь(текстовый/графический)?
-Ольга-
19.02.2008 20:55
в графическом режиме
volvo
19.02.2008 21:45
Так?
uses graph; var gd, gm: integer; i, rnd: integer;
begin initgraph(gd, gm, ''); for i := 1 to 20 do begin setcolor(random(15) + 1); rnd := random(52); outtextxy(random(getmaxx), random(getmaxy), chr(rnd + 65 + byte(rnd > 26) * 6)); end; readln; closegraph; end.
-Ольга-
19.02.2008 22:01
Большое тебе спасибо! я не дописала до конца и мучаюсь "почему не работает?!"
-Ольга-
20.02.2008 15:12
Так это получилась программа для графического режима, а как сделать, чтобы теперь она работала для текстового режима. И как вывести в текстовом режиме буквы; что используется вместо OutTextXY(random(getmaxx),random(getmaxy),chr(c+65+byte(c>26)*6));
-Ольга-
20.02.2008 15:13
Так это получилась программа для графического режима, а как сделать, чтобы теперь она работала для текстового режима. И как вывести в текстовом режиме буквы; что используется вместо OutTextXY(random(getmaxx),random(getmaxy),chr(c+65+byte(c>26)*6));
volvo
20.02.2008 15:19
Ну, например, так:
uses crt;
var i, rnd: integer;
begin for i := 1 to 20 do begin textcolor(random(15) + 1); rnd := random(52); gotoxy(random(80) + 1, random(25) + 1); write(chr(rnd + 65 + byte(rnd > 26) * 6)); end; readln; textcolor(lightgray); { <--- Восстанавливаем цвет по умолчанию } end.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.