IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> Помогите решить, текстовый режим
-Ольга-
сообщение 19.02.2008 15:39
Сообщение #1


Гость






помогите решить!!! есть программа, которая выводит на весь экран точки произвольного цвета. Необходимо, чтобы вместо точек выводило латинские буквы в произвольном порядке

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 15:46
Сообщение #2


Человек
*****

Группа: Пользователи
Сообщений: 1 050
Пол: Мужской
Реальное имя: Станислав

Репутация: -  3  +


Цитата(-Ольга- @ 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.

Сообщение отредактировано: compiler - 19.02.2008 15:51


--------------------
Спасибо!
Удачи!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Гость
сообщение 19.02.2008 15:52
Сообщение #3


Гость






спасибо give_rose.gif !!! а не подскажешь еще как сделать, чтобы 'текст' это были разнообразные латинские буквы
 К началу страницы 
+ Ответить 
compiler
сообщение 19.02.2008 16:11
Сообщение #4


Человек
*****

Группа: Пользователи
Сообщений: 1 050
Пол: Мужской
Реальное имя: Станислав

Репутация: -  3  +


Цитата(Гость @ 19.02.2008 14:52) *
спасибо give_rose.gif !!! а не подскажешь еще как сделать, чтобы 'текст' это были разнообразные латинские буквы
если кодировка основана на 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;

если в код не поймешь, задавай вопросы...

Сообщение отредактировано: compiler - 19.02.2008 16:14


--------------------
Спасибо!
Удачи!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 19.02.2008 16:13
Сообщение #5


Гость






OutTexyXY(X, Y, chr(random(26) + 65));


Сообщение отредактировано: volvo - 19.02.2008 16:13
 К началу страницы 
+ Ответить 
-Ольга-
сообщение 19.02.2008 16:20
Сообщение #6


Гость






СПАСИБО!!! работает! только я не поняла, что значят цифры 26 и 65....... может кто-нибудь сказать
 К началу страницы 
+ Ответить 
-Ольга-
сообщение 19.02.2008 16:24
Сообщение #7


Гость






только буквы теперь опять не цветные
 К началу страницы 
+ Ответить 
compiler
сообщение 19.02.2008 16:35
Сообщение #8


Человек
*****

Группа: Пользователи
Сообщений: 1 050
Пол: Мужской
Реальное имя: Станислав

Репутация: -  3  +


Цитата(-Ольга- @ 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 мин.
Цитата
только буквы теперь опять не цветные
в каком режиме ты работаешь(текстовый/графический)?

Сообщение отредактировано: compiler - 19.02.2008 16:39


--------------------
Спасибо!
Удачи!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
-Ольга-
сообщение 19.02.2008 16:55
Сообщение #9


Гость






в графическом режиме
 К началу страницы 
+ Ответить 
volvo
сообщение 19.02.2008 17:45
Сообщение #10


Гость






Так?
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 18:01
Сообщение #11


Гость






Большое тебе спасибо! я не дописала до конца и мучаюсь "почему не работает?!"
 К началу страницы 
+ Ответить 
-Ольга-
сообщение 20.02.2008 11:12
Сообщение #12


Гость






Так это получилась программа для графического режима, а как сделать, чтобы теперь она работала для текстового режима. И как вывести в текстовом режиме буквы; что используется вместо OutTextXY(random(getmaxx),random(getmaxy),chr(c+65+byte(c>26)*6));
 К началу страницы 
+ Ответить 
-Ольга-
сообщение 20.02.2008 11:13
Сообщение #13


Гость






Так это получилась программа для графического режима, а как сделать, чтобы теперь она работала для текстового режима. И как вывести в текстовом режиме буквы; что используется вместо OutTextXY(random(getmaxx),random(getmaxy),chr(c+65+byte(c>26)*6));
 К началу страницы 
+ Ответить 
volvo
сообщение 20.02.2008 11:19
Сообщение #14


Гость






Ну, например, так:

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.
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 20.07.2025 8:35
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"