![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() ![]() |
![]() |
Расим |
![]()
Сообщение
#1
|
Группа: Пользователи Сообщений: 3 Пол: Мужской Репутация: ![]() ![]() ![]() |
Доброе время суток.
Люди помогите в понедельник сессия а задачу сделать не могу ![]() С помощью знаков «*» нарисовать 2 фигуры близнецов в соответствии . Необходимо написать собственные процедуры, функции для задания примитивов. Подскажите хотя бы как создать эти процедуры??? Зарание Спасибо Эскизы прикрепленных изображений ![]() |
Lapp |
![]()
Сообщение
#2
|
![]() Уникум ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: ![]() ![]() ![]() |
Подскажите хотя бы как создать эти процедуры Если я правильно тебя понял, тебе нужно что-то наподобие вот этого:uses
CRT;
procedure DrawMan(x,y: integer);
const
m=16;
Man: array[1..m]of string=(
' ***** ',
'** * * ',
' * * * ',
' * ***** ',
' * * ',
' ************* ',
' * * * ',
' * * * ',
' * * **',
' * * ',
' *** ',
' * * ',
' * * ',
' * * ',
' * * ',
'** **'
);
var
i: integer;
begin
for i:=1 to m do begin
GoToXY(x,y+i-1);
Write(Man[i])
end
end;
begin
ClrScr;
DrawMan(20,2);
TextColor(LightGreen);
DrawMan(60,6);
TextColor(LightRed);
DrawMan(40,8);
GotoXY(1,Hi(WindMax));
ReadLn
end.
Это простейшее, что можно придумать. Если же нужно, например, накладывать изображения друг на друга, то можно сделать так (я еще добавил некий фон, чтоб было понятно, о чем речь): uses
CRT;
procedure DrawMan(x,y: integer);
const
m=16;
n=15;
Man: array[1..m]of string=(
' ***** ',
'** * * ',
' * * * ',
' * ***** ',
' * * ',
' ************* ',
' * * * ',
' * * * ',
' * * **',
' * * ',
' *** ',
' * * ',
' * * ',
' * * ',
' * * ',
'** **'
);
var
i,j: integer;
begin
for i:=1 to m do for j:=1 to n do if Man[i][j]<>' ' then begin
GoToXY(x+j-1,y+i-1);
Write(Man[i][j])
end
end;
var
i,MaxX,MaxY: integer;
begin
ClrScr;
MaxX:=Lo(WindMax);
MaxY:=Hi(WindMax);
{заполняем фон}
TextColor(Blue);
TextBackGround(Green);
for i:=1 to 2000 do begin
GoToXY(Random(MaxX)+1,MaxY-Random(Random(Random(MaxY))));
Write('+')
end;
TextBackGround(Black);
TextColor(Yellow);
DrawMan(20,2);
TextColor(LightBlue);
DrawMan(60,6);
TextColor(LightRed);
DrawMan(40,8);
GotoXY(1,Hi(WindMax));
ReadLn
end.
Выглядит это пещерно-наскальное творчество примерно так: ![]() Про псевдографику на Форуме совсем мало. Вот одна тема, в которой она фигурирует, глянь: Расчет биоритмов -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
renesko1 |
![]()
Сообщение
#3
|
![]() поиск ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 346 Пол: Мужской Реальное имя: nir Репутация: ![]() ![]() ![]() |
Random(Random(Random(MaxY))));
Здорова, надо будет взять на заметку. ![]() -------------------- typedef void Śūnyatā ;
|
Расим |
![]()
Сообщение
#4
|
Группа: Пользователи Сообщений: 3 Пол: Мужской Репутация: ![]() ![]() ![]() |
не надо для каждой из линий написать процедуру
например голова procedure_golova и эта процедура вычерчивает голову значками * и.т.д |
Lapp |
![]()
Сообщение
#5
|
![]() Уникум ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: ![]() ![]() ![]() |
не надо для каждой из линий написать процедуру Ну, замечательно, пиши. Или осталось неясным что-то?например голова procedure_golova и эта процедура вычерчивает голову значками * и.т.д Только совмещать их - та еще задача.. Удобнее удет, если у каждого примитива будет "точка присоединения". У головы это низ, у руки - верх. И в процедуре пересчитывать эти координаты на левый ыкрхний угол прямоугольника, от которого рисуешь. -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
Расим |
![]()
Сообщение
#6
|
Группа: Пользователи Сообщений: 3 Пол: Мужской Репутация: ![]() ![]() ![]() |
а можно пример такой процедуру например для головы? плз
![]() |
Lapp |
![]()
Сообщение
#7
|
![]() Уникум ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: ![]() ![]() ![]() |
а можно пример такой процедуру например для головы? Вообще-то, самостоятельное написание процедуры для головы было бы очень полезной процедурой для твоей головы.. Вот, смотри.. Тут голова и тело. Точки соединения, про которые я говорил, я выделил знаками х. (Точки соединения - не совсем правильное название; лучше сказать - точки привязки.) uses
CRT;
procedure DrawHead(x,y: integer);
const
m=5;
n=7;
Man: array[1..m]of string=(
' ***** ',
'* . . *',
'* | *',
'* - *',
' **x** '
);
var
i,j: integer;
begin
x:=x-3;
y:=y-4;
for i:=1 to m do for j:=1 to n do if Man[i][j]<>' ' then begin
GoToXY(x+j-1,y+i-1);
Write(Man[i][j])
end
end;
procedure DrawBody(x,y: integer);
const
m=10;
n=9;
Man: array[1..m]of string=(
'****x****',
'* *',
'* *',
'* *',
'* *',
'* *',
'* *',
'* *',
'* *',
'********* '
);
var
i,j: integer;
begin
x:=x-n div 2;
for i:=1 to m do for j:=1 to n do if Man[i][j]<>' ' then begin
GoToXY(x+j-1,y+i-1);
Write(Man[i][j])
end
end;
var
i,MaxX,MaxY: integer;
begin
ClrScr;
MaxX:=Lo(WindMax);
MaxY:=Hi(WindMax);
TextColor(Yellow);
DrawHead(20,10);
TextColor(LightBlue);
DrawBody(20,12);
ReadLn
end.
Конечно, это полнейшая фигня (я имею в виду такую организацию программы). Было бы правильнее сделать примитивы как переменные - записи, содержащие массивы строк, размеры и точки привязки, а для вывода сделать одну процедуру. Тогда примитивы можно было бы задавать в файле данных (кстати, намного удобнее редактировать). Еще правильнее было бы сделать все объектами ![]() -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
renesko1 |
![]()
Сообщение
#8
|
![]() поиск ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 346 Пол: Мужской Реальное имя: nir Репутация: ![]() ![]() ![]() |
Насчёт обьектов эт я согласен, что интерессно по-проблемам ООП очень мало человек обр., видимо кто доучился до таких высот, освоил, что в инете всё есть и так
![]() //Извеняюсь за флуд.. -------------------- typedef void Śūnyatā ;
|
Lapp |
![]()
Сообщение
#9
|
![]() Уникум ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: ![]() ![]() ![]() |
по-проблемам ООП очень мало человек обр. что есть "обр."? Обращаются?.. образованы? обременены? обрадованы? ![]() Неужели так трудно/долго написать слово целиком? -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
renesko1 |
![]()
Сообщение
#10
|
![]() поиск ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 346 Пол: Мужской Реальное имя: nir Репутация: ![]() ![]() ![]() |
Каюсь, не дописал... "обращаются"... привык печатать сам с собой поэтому недопичатываю слова по привычке.
Больше не буду. -------------------- typedef void Śūnyatā ;
|
![]() ![]() |
![]() |
Текстовая версия | 22.07.2025 20:32 |