Пользователь
0,0
рейтинг
11 апреля 2012 в 22:03

Разработка → «Паскалевская графика на HTML5» или «Что Opera сделала с Rainbow Dash»

Увидел на тематическом сайте, посвящённом сериалу My Little Pony код на Turbo Pascal, использующий старинный модуль Graph и рисующий нескольких персонажей.

Код содержал только вызовы функций и комментарии, javascript отлично его парсил. Осталось только дописать свои графические функции.

Финальная версия

var colors = ["#000000", "#0000AA", "#00AA00", "#00AAAA", "#AA0000", "#AA00AA", "#AA5500", "#AAAAAA", 
"#555555", "#5555FF", "#55FF55", "#55FFFF", "#FF5555", "#FF55FF", "#FFFF55", "#FFFFFF"];
function setcolor(colorIndex)
{
	ctx.strokeStyle = colors[colorIndex];
}
function line(x1, y1, x2, y2)
{
	ctx.beginPath();
	ctx.moveTo(x1, y1);
	ctx.lineTo(x2, y2);
	ctx.stroke();
	ctx.closePath();
}
function setlinestyle(p, t, width)
{
	ctx.lineWidth = width;
}

function setfillstyle(t, colorIndex)
{
	ctx.fillStyle = colors[colorIndex];
}

function ellipse(x, y, st, end, xrad, yrad)
{
	ctx.save();
	ctx.translate(x, y);
	ctx.scale(xrad, -yrad);
	ctx.beginPath();
	ctx.arc(0, 0, 1, st * Math.PI / 180.0, end * Math.PI / 180.0, false);	
	ctx.restore();
	ctx.stroke();
}

function fillellipse(x, y, xrad, yrad)
{
	ctx.save();
	ctx.translate(x, y);
	ctx.scale(xrad, yrad);
	ctx.beginPath();
	ctx.arc(0, 0, 1, 0, Math.PI * 2, true);
	ctx.fill();
	ctx.closePath();
	ctx.restore();
}


Вот что вышло
На мою реализацию функции ellipse() плохо среагировала Opera:


Баг зарепортили.

Но я на этом не остановился, и результат можно наблюдать тут.



В данный момент думаю, как ещё всё это можно ускорить. Идеи?
Иван @Jedi_Knight
карма
82,0
рейтинг 0,0
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Реклама

Самое читаемое Разработка

Комментарии (114)

  • 0
    Я конечно всё понимаю, мисье там…
  • +27
    Пони!
  • +40
    К сожалению, идей нет, но…

    Не удержался:
    image
    :)
    • +5
      а тож)
  • +17


    И да, цвета не по канону. Принцесса Селестия не одобряет.
    • +4
      Так перепиши, исправим код! :)
      Но вообще да, рисунок не мой.
      • +4
        Думаю, достаточно взять пипетку в графическом редакторе. :)
        Во, нашел: docs.google.com/viewer?url=http://fc07.deviantart.net/fs70/f/2011/258/e/6/rainbow_dash_color_guide_by_kefkafloyd-d3aseal.pdf&chrome=true&pli=1
        • +3
          Эх, хабрапарсер. goo.gl/GIPVN
        • +3
          Нет, в паскале надо :)

          Я конечно могу потом сделать продвинутый онлайн-редактор с эффектами, сохраняющий вектор в js-код…
          • +3
            Мммм, я так понимаю нужно изменить
            var colors = ["#000000", "#0000AA", "#00AA00", "#00AAAA", "#AA0000", "#AA00AA", "#AA5500", "#AAAAAA", "#555555", "#5555FF", "#55FF55", "#55FFFF", "#FF5555", "#FF55FF", "#FFFF55", "#FFFFFF"]; в соответствии с картой.
            • +3
              Сейчас там несколько другой код.
              Прямо в окошке с кодом пишешь:

              rgb[4][0] = 0x1 //R
              rgb[4][1] = 0xA //G
              rgb[4][2] = 0xBB //B
              

              так меняется 4-ый цвет.
  • +8
    Перепись пониебов ITT ^_^
    • +18
      Лол, заминосовали первого же пониеба :D Я как раз вчера первый сезон закончил. И жену втянул. ^_^
  • НЛО прилетело и опубликовало эту надпись здесь
    • +6
      Это должно быть на 20% круче :)
  • +37
    UFO IS ASLEEP, POST PONIES!
  • +6
    Как будто на двач зашёл, на доску /mlp/
    • +1
      Осторожнее, здесь минусуют за слово «двач»
      • НЛО прилетело и опубликовало эту надпись здесь
        • +1
          Кто он?
          • +5
            Двач, очевидно же. Некоторое время после смерти его функции выполнял тиреч, теперь — сомалич
            • +14
              Называйте сосач сосачем, чего уж там.
              • +6
                Кто все эти люди?
          • +2
            Извините, не удержался, тем более, раз уж пошла такая пьянка…
            image
  • +17
    «На мою реализацию функции ellipse() плохо среагировала Opera:»

    а как по мне, так очень даже! =))
    • +11
      «На мою реализацию функции ellipse() плохо среагировала Opera»

      I just don't know what went wrong!
    • +1
      В 12й опере вроде как всё путём.
  • +37
    Понитред на хабре. Тематический. Заплюсованный. В лучшем.
    Все, я счастлив.
    • +15
      Habr has become at least 20% cooler.
  • +10
    Ахаха, интервенция пони на хабре началась! xD
    • 0
      А разве интервенция это не когда кого-то за что-то осуждают?
      • +13
        Я может быть сейчас чрезвычайно банален, но интервенция.
      • +1
        Заинтригован, с чем же Вы перепутали… Может, с инвективой? Или с инсинуацией? Или с репробацией? Или с проскрипциями?
        • +3
          Сразу видно, что Тед Мосби для вас пустой звук!
        • +1
          • +1
            Я чувствовал что это не про страны, но про людей у нас интервенции в википедии нет.
  • +11
    Вот интересно, сколько народу зашло посмотреть на «паскалевскую графику на html5» и сколько вникало в код :)
    • +7
      А там, между прочим, интересно, комментарии на транслите в стиле {perednie nogi} ^_^
    • +4
      Я смотрел) Ничего особого, но забавно)
      • +7
        Блин, пристыдили, тоже посмотрю…
        • +7
          Ну я в смысле в код смотрел)
          • +6
            Ну так и я в том же смысле!
            • +8

              Зрите в код, товарищи!
              • +1
                Мне кажется, или в треде действительно замечена Молестия? :))
    • +3
      Графика? Код? Комментарии!
  • +13
    >Что Opera сделала с Rainbow Dash
    >Rainbow Dash
    Не поверил своим глазам. Перечитывал раза три, всё равно не верил. Пока не посмотрел что под катом.
  • +9
    image
    • +10
      И тебе +1 в карму. Всем +1 в карму! Объявляю этот топик топиком добра и дружбомагии :)
      • +10
        Да че тут обьявлять, он естественным образом таковым стал :)
      • +5
        Добра тебе.
      • +1
        А когда я такое как-то раз сказал, меня заминусовали)

        Алсо… Уay, второй человек на хабре с RD на аватарке!

        Всем добра, посоны.
        • +1
          На хабре нельзя говорить это слово.
          • +2
            Да я в курсе. Но, так как этот тред можно считать анклавом дружбомагии, то все окей.
    • +5
      Всем лучиков добра!
  • +18
    image
  • +7
    Я сегодня провинился в топике про нокию, поплюсую тут народ чтоли.
    • +5
      Ага, добро побеждает зло! ^_^
  • +9
    пони на хабре, отлично, просто отлично
  • +8
    Классно! =)

    А остальные персонажи будут?

    image
    • +3
      Надеюсь, автор кода наделает ещё картинок. А я уж приведу цвета к каноничным и поработаю над эффектами :)
  • +6
    >На мою реализацию функции ellipse() плохо среагировала Opera
    Она почему-то все дуги в другую сторону выворачивает… Хотя в этом топике, видимо, всем на реализацию пофиг… ну и ладно :)
    • +3
      Как раз в этой функции ellipse() Опера плохо реагирует на вот эту строку:
      ctx.scale(xrad, -yrad);
      А точнее на минус у yrad. Если его убрать, то картинка будет неправильной, но зато во всех браузерах одинаковая. Опера этот «минус» отрабатывает как-то зеркально…
      • +1
        А потом удивляются, почему современные разработчики не любят оперу)
        • +2
          Да ошибки есть у всех, главное, чтобы их вовремя устраняли… А тут ещё и эта функция ellipse() мутная какая-то. Возможно нужно уйти от translate() & scale() и использовать просто arc() с абсолютными координатами… конечно, если это возможно.
          • +1
            Сейчас там вообще линиями рисуется
  • +6
    прочитала заголовок. не поверила. зашла под кат. пришлось поверить)
    с нетерпением жду остальных пони))
  • +5

    Я всё проспал, ничего умного в голову нейдёт, но не засветиться в понитреде на хабре было бы большой ошибкой.
    Запишите-ка и меня в перепись :)
  • +8
    Мм, чесслово, первый раз услышал, что такое mlp.

    Интересненько! Похоже, я знаю, что я теперь буду смотреть))
    • +7
      На всякий случай подскажу: лучше смотреть без дубляжа.
      • +5
        Как и все стоящие вещи.
    • +5
      А потом:
      — Познакомлюсь с девочкой для совместного похода в макдональдс. Пони мне.
      • +4
        Та ладно, я сам с покерфейсом их покупал, и без всякой псевдо-еды :)
        Пришел, сказал «мне пони. Всех. Без хеппи-милла», забрал, ушел с улыбкой шире плеч :)
        • НЛО прилетело и опубликовало эту надпись здесь
          • +3
            Ну мне как бы 34 уже (зимой, когда совершал набег на макдачные, было еще 33). Это суровее. А я еще и бритоголовый-усатый-бородатый к тому же :)

            И кстати да, что-то не так — нечего маленьким девочкам возиться с богомерзкими покемонами! :)
            • НЛО прилетело и опубликовало эту надпись здесь
          • +4
            пффф 17-летний.
            Вот когда 40-летний со счастливым видом возиться с пони, тут уже есть над чем задуматься
        • +1
          Я что-то стормозил. А где это ещё можно успеть забрать всю серию? О_о
          • +1
            Уже нигде :(
            • +2
              Надеюсь увеличение продаж хеппимилов подстегнут руководство к повторении акции.
        • +2
          я тоже
  • +2
    Пользуясь случаем хочу прояснить непонятку у пони-специалистов.
    Это из этого мультика популярная на блогах фраза про то, что пони кушают радугу и какают бабочками? Просто судя по первой картинке все наоборот :)
    • +1
      По-моему, с радугой были единороги. В этом мультике никто радугу не кушает, вроде бы.
      • +1
        Спасибо. Вижу что не из этой оперы ария. Просто первая картинка вызывает ассоциации, а общения с племянницей у меня ограничилось паровозиками и ретро «Мишками Гамми».
      • +2
        Пинкамена кушает кексики.
    • +6
      Эта фраза маленького жёлтого существа из мультфильма «Хортон»)
    • +1
      «Пони кушают радугу и какают бабочками» из мультика Хортон
      Вот как раз тот отрывок, с которого долго народ сходил с ума :)
      www.youtube.com/watch?v=xJkaKAIl_Fc
    • +5
      Там пони — это все-таки пони. Едят они сено в кафешках. Хотя Пинки Пай уплетает за обе щеки сладости. Да и пунш все пьют. И только дракончик Спайк ведет себя как дракон — ест самоцветы :)
      Конкретно Rainbow Dash — пегас. Она может оставлять за собой радугу. Спойлер: дважды делала Радужный удар!
      Экспресс-курс можно пройти здесь: www.youtube.com/watch?feature=player_embedded&v=qVCFV7jT9ho
  • +8
    image
  • +3
    Хороший топик, и паскаль, и программинг и пони :)
  • +7
    Уговорили, пойду качать
    • +7
      Приятного просмотра)
      • +5
        Спасибо :) Чую, ночью поспать не получится
        • +4
          А не надо залпом смотреть, поней лучше принимать порциями по две-три серии за раз, чтобы удовольствие растянуть :)
  • +6
    Этот топик подобен зубной щетке:
    image
  • +4
    Благодаря этому топику узнал, откуда взялось слово «няша».

    Забавно :)
    • +3
      Забавно, но слово «няша» я знал задолго до того, как пони (нынешнего 4-го поколения) появились на свет.
      Всё-таки, мне кажется, что оно из анимешной тусовки пришло как производное от слова «НЯ».
  • +4
    Bronies! Всем — Frendship!
    • +6
      *fix >Friendship
  • +2
    Опера такая жестокая.

    image
  • +4
    www.youtube.com/watch?v=ntIFhbtmwCc

    www.youtube.com/watch?v=qVCFV7jT9ho

    Извините, не мог удержаться.
  • +1
    image
    Что только не придумают…
  • +4
    Добрые пони! Такие добрые…
  • +2
    В альфа версии Opera 12 все отлично, а следовательно бага не актуальна
    image
  • +3
    После просмотра картинки выше воспринимаются иначе :)
    • +2
      После просмотра всё воспринимается иначе)
      • +2
        Верно подмечено :)

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.