User Tag List

Страница 26 из 35 ПерваяПервая ... 222324252627282930 ... ПоследняяПоследняя
Показано с 251 по 260 из 342

Тема: PASCAL + MACRO11 (УКНЦ-ДВК).

  1. #251

    Регистрация
    20.04.2013
    Адрес
    г. Павловский Посад
    Сообщений
    4,246
    Спасибо Благодарностей отдано 
    498
    Спасибо Благодарностей получено 
    557
    Поблагодарили
    436 сообщений
    Mentioned
    42 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от hobot Посмотреть сообщение
    пример
    Не силен в Паскале, расскажу на словах, для дисплея 15-ИЭ-00хххх.
    Нужно нарисовать на экране размером 80х24 символа круг из буковок, используя позиционирование курсора , привязанное к функции Кос и Син.
    Блог : http://collectingrd.kxk.ru/ . В ЛС прошу не писать, все сообщения MMTEMA@MAIL.RU

  2. #252

    Регистрация
    30.08.2011
    Адрес
    Зеленоград
    Сообщений
    7,161
    Спасибо Благодарностей отдано 
    2,979
    Спасибо Благодарностей получено 
    374
    Поблагодарили
    311 сообщений
    Mentioned
    13 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    в сети никто не "парится" символами - там везде модулем графики окружность рисуют )))

    Цитата Сообщение от MM Посмотреть сообщение
    Нужно нарисовать на экране размером 80х24 символа круг из буковок
    слазил полистал шпоры по построению окружностей, ув. @MM - сжальтесь над Хоботом, пожалуйста.

    - - - Добавлено - - -

    набросал такое, но конкретно с выводом по координатам проблема, что я не понимаю сам себя )))

    Код:
    PROGRAM MMM;
    VAR
        X0, Y0:    INTEGER; (* ЦЕНТР *)
        XR, YR: INTEGER; (* ТОЧКА НА ОКР. *)
        RR:    INTEGER; (* ВЫЧИСЛЯЕМЫЙ РАДИУС *)
        XT,YT:    INTEGER; (* ЭКРАННЫЕ КООРДИНАТЫ *)
    BEGIN
        WRITE(CHR(17B),CHR(27),'H',CHR(27),'J');
        X0:=0;Y0:=0;XR:=0;YR:=0;RR:=0;XT:=0;YT:=0;
        WRITE('ВВЕДИТЕ КООРДИНАТЫ СЕРЕДИНЫ ОКР. XO, YO >');
        READLN(X0,Y0);
        WRITE('ВВЕДИТЕ КООРДИНАТЫ ТОЧКИ НА ОКР. XR, YR >');
        READLN(XR,YR);
    
        RR:=ROUND(SQRT(SQR(XR-X0)+SQR(YR-Y0)));
    
        FOR XT:=(X0-RR) TO RR*2 DO 
         FOR YT:=(Y0-RR) TO RR*2 DO
          BEGIN
               IF ((XT=(X0-RR))OR(XT=(RR*2)))AND((YT=(Y0-RR))OR(YT=(RR*2))) THEN
            BEGIN
               WRITE(CHR(27),'Y',CHR(32+YT),CHR(32+XT));
               WRITE('#':1);
            END;
          END;
    
    REPEAT UNTIL 0>0;
    END.
    Архив программ для УК-НЦ, ДВК и БК.

    Ищу игру "СТРАНА МОНСТРОВ" [monstr.sav] для ДВК.

  3. #253

    Регистрация
    30.11.2015
    Адрес
    г. Самара
    Сообщений
    7,509
    Спасибо Благодарностей отдано 
    344
    Спасибо Благодарностей получено 
    714
    Поблагодарили
    596 сообщений
    Mentioned
    13 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Набросок
    Код:
    PROGRAM CIRCLE;
    
    VAR
      X0: INTEGER;
      Y0: INTEGER;
      R:  INTEGER;
    
      PROCEDURE PUTPIXEL(X: INTEGER; Y: INTEGER; PIXEL: CHAR);
      BEGIN
        IF X > 79 THEN X:=79;
        IF X < 0  THEN X:=0;
        IF Y > 23 THEN Y:=23;
        IF Y < 0  THEN Y:=0;
        X:=X + 32;
        Y:=ROUND(Y/2) + 6 + 32;
        WRITE(CHR(27),'Y',CHR(Y),CHR(X), PIXEL);
      END;
    
      PROCEDURE PIXELCIRCLE(XC: INTEGER; YC: INTEGER;
                            DX: INTEGER; DY: INTEGER;
                            PIXEL: CHAR);
      BEGIN
       PUTPIXEL(XC+DX, YC+DY, PIXEL);
       PUTPIXEL(XC+DY, YC+DX, PIXEL);
       PUTPIXEL(XC+DY, YC-DX, PIXEL);
       PUTPIXEL(XC+DX, YC-DY, PIXEL);
       PUTPIXEL(XC-DX, YC-DY, PIXEL);
       PUTPIXEL(XC-DY, YC-DX, PIXEL);
       PUTPIXEL(XC-DY, YC+DX, PIXEL);
       PUTPIXEL(XC-DX, YC+DY, PIXEL);
      END;
    
      PROCEDURE CIRCLE(XC: INTEGER; YC: INTEGER; R: INTEGER; PIXEL: CHAR);
      VAR
         DX: INTEGER;
         DY: INTEGER;
         Z:  INTEGER;
         DD: INTEGER;
      BEGIN
        DX:=0;
        DY:=R;
        DD:=2*(1-R);
    
        WHILE DX < DY DO BEGIN
          PIXELCIRCLE(XC, YC, DX, DY, PIXEL);
          IF DD = 0 THEN BEGIN
            DX:=DX+1; DY:=DY-1; DD:=DD+2*(DX-DY+1); END
          ELSE BEGIN
            Z:=2*DD-1;
            IF DD > 0 THEN BEGIN
              IF Z+2*DX <= 0 THEN BEGIN
                DX:=DX+1; DY:=DY-1; DD:=DD+2*(DX-DY+1); END
              ELSE BEGIN
                DY:=DY-1; DD:=DD-2*DY+1;
              END; END
            ELSE BEGIN
              IF Z+2*DY > 0 THEN BEGIN
                DX:=DX+1; DY:=DY-1; DD:=DD+2*(DX-DY+1); END
              ELSE BEGIN
                DX:=DX+1; DD:=DD+2*DX+1;
              END;
            END;
          END;
        END;
        IF DX = DY THEN PIXELCIRCLE(XC, YC, DX, DY, PIXEL);
      END;
    
    BEGIN
      WRITE('wwedite koordinaty serediny okruzhnosti XO, YO >');
      READLN(X0,Y0);
      WRITE('wwedite radius okruzhnosti R >');
      READLN(R);
    
      WRITE(CHR(17B),CHR(27),'H',CHR(27),'J');
      CIRCLE(X0, Y0, R, '.');
    
      REPEAT UNTIL FALSE;
    END.
    Результат

    Код:
    
    
    
    
    
    
    
                                          .....
                                       ...     ...
                                     ..           ..
                                    ..             ..
                                    .               .
                                    .               .
                                     .             .
                                      .          ..
                                        .........
    Что требует доработки.
    - Более тщательный учёт округления челочисленной арифметики, особенно учитывая небольшой диапазон значений по X и особенно по Y (в наброске проги - не парился)
    - Учёт несимметричности экрана по координатам X и Y (квадрат при подходе в лоб будет выглядеть прямоугольником) (в наброске проги - коэффициент 2 для оси Y - реальный коэффициент будет чуть больше двух)

    - - - Добавлено - - -

    Как выглядит окошко, в котором всё это было нарисовано. Минут за 20

    Код:
    .............................................!   !
    .............................................!  2!C.LST
    C.PAS .......................................!  1!C.PAS
    C.BLD .......................................!   !C.BLD
    C.TSK .......................................!   !C.TSK
    .............................................!   !C.OBJ
    .............................................!   !
    .............................................!   !
    .............................................!   !
    .............................................!   !USERCCL.CCL
    [* КОНЕЦ ТЕКСТА *]

  4. #254

    Регистрация
    30.08.2011
    Адрес
    Зеленоград
    Сообщений
    7,161
    Спасибо Благодарностей отдано 
    2,979
    Спасибо Благодарностей получено 
    374
    Поблагодарили
    311 сообщений
    Mentioned
    13 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Hunta Посмотреть сообщение
    Что требует доработки.
    Цитата Сообщение от MM Посмотреть сообщение
    Не силен в Паскале, расскажу на словах, для дисплея 15-ИЭ-00хххх.
    Нужно нарисовать на экране размером 80х24 символа круг из буковок, используя позиционирование курсора , привязанное к функции Кос и Син.
    И похоже @MM сильно переживает за размер исполняемого файла
    Архив программ для УК-НЦ, ДВК и БК.

    Ищу игру "СТРАНА МОНСТРОВ" [monstr.sav] для ДВК.

  5. #255

    Регистрация
    30.11.2015
    Адрес
    г. Самара
    Сообщений
    7,509
    Спасибо Благодарностей отдано 
    344
    Спасибо Благодарностей получено 
    714
    Поблагодарили
    596 сообщений
    Mentioned
    13 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от MM Посмотреть сообщение
    привязанное к функции Кос и Син.
    Не вижу в твоём варианте.

    Цитата Сообщение от hobot Посмотреть сообщение
    сильно переживает за размер исполняемого файла
    Значит, писать на MACRO. Кстати, свой вариант я перенесу минут за 10.

  6. #256

    Регистрация
    30.08.2011
    Адрес
    Зеленоград
    Сообщений
    7,161
    Спасибо Благодарностей отдано 
    2,979
    Спасибо Благодарностей получено 
    374
    Поблагодарили
    311 сообщений
    Mentioned
    13 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Hunta Посмотреть сообщение
    Не вижу в твоём варианте.
    так я же пояснил , что для начала просто по двум точкам попробовал построить цирцле из #
    синусы - косинусы - это пока в сторонку было отложено...ибо я с выводом на жкран ничего не получилось.

    Цитата Сообщение от Hunta Посмотреть сообщение
    Значит, писать на MACRO.
    ну вот, а @MM зачем то понадобился Паскаль )
    Да ещё и син , и цос - не я ТЗ писал, мой набросок - это попытка нахрапом символьную окружность построить.
    Как и твой, только у меня цикл отрисовки "НЕ РАБОТАЕТ". Повторюсь - копал в форумах, но там все "хитромодные"
    все рисуют графмодулем.

    У OMSI PASCAL - исполняемый файл на выходе весьма мал. По сравнению с более поздними версиями Паскалей на его основе. В архиве он оформлен как PASDWK.(SAV,OBJ)
    Последний раз редактировалось hobot; 24.12.2020 в 12:40.
    Архив программ для УК-НЦ, ДВК и БК.

    Ищу игру "СТРАНА МОНСТРОВ" [monstr.sav] для ДВК.

  7. #256
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  8. #257

    Регистрация
    30.11.2015
    Адрес
    г. Самара
    Сообщений
    7,509
    Спасибо Благодарностей отдано 
    344
    Спасибо Благодарностей получено 
    714
    Поблагодарили
    596 сообщений
    Mentioned
    13 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от hobot Посмотреть сообщение
    ибо я с выводом на жкран ничего не получилось
    У тебя в слове "я" ошибка

  9. #258

    Регистрация
    24.08.2007
    Адрес
    Днепропетровская обл.
    Сообщений
    1,681
    Спасибо Благодарностей отдано 
    2,717
    Спасибо Благодарностей получено 
    170
    Поблагодарили
    130 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Господа хорошие, окружности лучше всего рисовать не синусом и косинусом, а квадратами, даже не выходя на вещ. арифметику.

    Код:
    PROCEDURE Circle (cx, cy, radius: INTEGER);
    VAR
      x, y, rr, xx, yy: INTEGER;
      PROCEDURE Cursors;
      BEGIN
        PutPixel(cx+x, cy+y); PutPixel(cx-x, cy+y);
        PutPixel(cx+x, cy-y); PutPixel(cx-x, cy-y);
        PutPixel(cx+y, cy+x); PutPixel(cx-y, cy+x);
        PutPixel(cx+y, cy-x); PutPixel(cx-y, cy-x)
      END {Cursors};
    BEGIN
      x := radius; y := 0; rr := x*x; xx := rr-x; yy := 0;
      REPEAT
        Cursors; INC(yy, y+y+1); INC(y);
        IF xx > (rr-yy) THEN BEGIN INC(xx, 1-x-x); DEC(x); Cursors END
      UNTIL x < y
    END {Circle};

    Этот пользователь поблагодарил Oleg N. Cher за это полезное сообщение:

    hobot(25.12.2020)

  10. #259

    Регистрация
    30.08.2011
    Адрес
    Зеленоград
    Сообщений
    7,161
    Спасибо Благодарностей отдано 
    2,979
    Спасибо Благодарностей получено 
    374
    Поблагодарили
    311 сообщений
    Mentioned
    13 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Oleg N. Cher Посмотреть сообщение
    вещ. арифметику.
    экранные координаты и окружность из символов , только целый тип.
    А можешь по ТЗ сочинить? И показать @MM размеры исполняемого файла?
    Хотя всегда есть шанс, что "препод", просто оценив старания экзаминующихся, поставит зачёт за половину ответа )))
    Архив программ для УК-НЦ, ДВК и БК.

    Ищу игру "СТРАНА МОНСТРОВ" [monstr.sav] для ДВК.

  11. #260

    Регистрация
    24.08.2007
    Адрес
    Днепропетровская обл.
    Сообщений
    1,681
    Спасибо Благодарностей отдано 
    2,717
    Спасибо Благодарностей получено 
    170
    Поблагодарили
    130 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Лучше предложи как доработать, чтобы программа учитывала разный аспект соотношений сторон, для текстового режима это важно)

Страница 26 из 35 ПерваяПервая ... 222324252627282930 ... ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. "Исходники" Turbo Pascal нужны кому ?
    от esl в разделе Программирование
    Ответов: 2
    Последнее: 19.10.2018, 11:33
  2. Продам МС5310 блок дисководов к УКНЦ+КМД УКНЦ
    от Mad Killer/PG в разделе Барахолка (архив)
    Ответов: 7
    Последнее: 19.03.2012, 11:27
  3. в розыске дисковая версия Pascal.
    от goblinish в разделе Программирование
    Ответов: 18
    Последнее: 16.08.2011, 16:30
  4. Pascal
    от Andrew771 в разделе Программирование
    Ответов: 22
    Последнее: 24.05.2011, 21:20
  5. Скопировать/вставить из/в HiSoft Pascal в эмуляторе
    от kit в разделе Программирование
    Ответов: 1
    Последнее: 05.02.2010, 15:35

Метки этой темы

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •