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

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

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

 
 Ответить  Открыть новую тему 
> Псевдографика в Паскале
Расим
сообщение 10.01.2009 22:31
Сообщение #1





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

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


Доброе время суток.
Люди помогите в понедельник сессия а задачу сделать не могуsad.gif
С помощью знаков «*» нарисовать 2 фигуры близнецов в соответствии . Необходимо написать собственные процедуры, функции для задания примитивов.
Подскажите хотя бы как создать эти процедуры???
Зарание Спасибо


Эскизы прикрепленных изображений
Прикрепленное изображение
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Lapp
сообщение 11.01.2009 3:54
Сообщение #2


Уникум
*******

Группа: Модераторы
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

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


Цитата(Расим @ 10.01.2009 22:31) *
Подскажите хотя бы как создать эти процедуры
Если я правильно тебя понял, тебе нужно что-то наподобие вот этого:
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.

Выглядит это пещерно-наскальное творчество примерно так: Прикрепленное изображение

Про псевдографику на Форуме совсем мало. Вот одна тема, в которой она фигурирует, глянь:
Расчет биоритмов


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
renesko1
сообщение 11.01.2009 15:04
Сообщение #3


поиск
****

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

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


Random(Random(Random(MaxY))));
Здорова, надо будет взять на заметку. smile.gif


--------------------
typedef void Śūnyatā ;
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Расим
сообщение 11.01.2009 20:06
Сообщение #4





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

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


не надо для каждой из линий написать процедуру
например голова procedure_golova и эта процедура вычерчивает голову значками * и.т.д
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Lapp
сообщение 11.01.2009 20:25
Сообщение #5


Уникум
*******

Группа: Модераторы
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

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


Цитата(Расим @ 11.01.2009 20:06) *
не надо для каждой из линий написать процедуру
например голова procedure_golova и эта процедура вычерчивает голову значками * и.т.д
Ну, замечательно, пиши. Или осталось неясным что-то?

Только совмещать их - та еще задача.. Удобнее удет, если у каждого примитива будет "точка присоединения". У головы это низ, у руки - верх. И в процедуре пересчитывать эти координаты на левый ыкрхний угол прямоугольника, от которого рисуешь.


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Расим
сообщение 11.01.2009 20:55
Сообщение #6





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

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


а можно пример такой процедуру например для головы? плз smile.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Lapp
сообщение 12.01.2009 0:18
Сообщение #7


Уникум
*******

Группа: Модераторы
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

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


Цитата(Расим @ 11.01.2009 20:55) *
а можно пример такой процедуру например для головы?

Вообще-то, самостоятельное написание процедуры для головы было бы очень полезной процедурой для твоей головы..

Вот, смотри.. Тут голова и тело. Точки соединения, про которые я говорил, я выделил знаками х. (Точки соединения - не совсем правильное название; лучше сказать - точки привязки.)

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.

Конечно, это полнейшая фигня (я имею в виду такую организацию программы). Было бы правильнее сделать примитивы как переменные - записи, содержащие массивы строк, размеры и точки привязки, а для вывода сделать одну процедуру. Тогда примитивы можно было бы задавать в файле данных (кстати, намного удобнее редактировать). Еще правильнее было бы сделать все объектами smile.gif.


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
renesko1
сообщение 13.01.2009 19:53
Сообщение #8


поиск
****

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

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


Насчёт обьектов эт я согласен, что интерессно по-проблемам ООП очень мало человек обр., видимо кто доучился до таких высот, освоил, что в инете всё есть и так smile.gif
//Извеняюсь за флуд..


--------------------
typedef void Śūnyatā ;
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Lapp
сообщение 13.01.2009 23:58
Сообщение #9


Уникум
*******

Группа: Модераторы
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

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


Цитата(renesko1 @ 13.01.2009 19:53) *
по-проблемам ООП очень мало человек обр.

что есть "обр."?
Обращаются?.. образованы? обременены? обрадованы? blink.gif
Неужели так трудно/долго написать слово целиком?


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
renesko1
сообщение 14.01.2009 22:54
Сообщение #10


поиск
****

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

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


Каюсь, не дописал... "обращаются"... привык печатать сам с собой поэтому недопичатываю слова по привычке.
Больше не буду.


--------------------
typedef void Śūnyatā ;
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 

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