Skip to content

Instantly share code, notes, and snippets.

@ivanpopelyshev
Created July 30, 2012 22:21
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ivanpopelyshev/3210957 to your computer and use it in GitHub Desktop.
Save ivanpopelyshev/3210957 to your computer and use it in GitHub Desktop.
A web page created at CodePen.io.
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Canvas Pony &middot; CodePen</title>
<!--
Copyright (c) 2012 ivanpopelyshev, http://codepen.io/ivanpopelyshev
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
"Software"), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so, subject to
the following conditions:
The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-->
<link rel="stylesheet" href="http://codepen.io/stylesheets/css/normalize.css">
<style>
body {
background: #222;
}
#screen {
background: #000;
position: absolute;
top: 0px;
left: 50%;
margin: 0px 0 0 -320px;
width: 640px;
height: 480px;
}
</style>
<style>
#codepen-footer, #codepen-footer * {
-webkit-box-sizing: border-box !important;
-moz-box-sizing: border-box !important;
box-sizing: border-box !important;
}
#codepen-footer {
display: block !important;
position: fixed !important;
bottom: 0 !important;
left: 0 !important;
width: 100% !important;
padding: 0 10px !important;
margin: 0 !important;
height: 30px !important;
line-height: 30px !important;
font-size: 12px !important;
color: #eeeeee !important;
background-color: #505050 !important;
text-align: left !important;
background: -webkit-linear-gradient(top, #505050, #383838) !important;
background: -moz-linear-gradient(top, #505050, #383838) !important;
background: -ms-linear-gradient(top, #505050, #383838) !important;
background: -o-linear-gradient(top, #505050, #383838) !important;
border-top: 1px solid black !important;
border-bottom: 1px solid black !important;
border-radius: 0 !important;
border-image: none !important;
box-shadow: inset 0 1px 0 #6e6e6e, 0 2px 2px rgba(0, 0, 0, 0.4) !important;
z-index: 300 !important;
font-family: "Lucida Grande", "Lucida Sans Unicode", Tahoma, sans-serif !important;
letter-spacing: 0 !important;
word-spacing: normal !important;
word-spacing: 0 !important;
-webkit-transform: none !important;
-moz-transform: none !important;
-ms-transform: none !important;
-o-transform: none !important;
transform: none !important;
}
#codepen-footer a {
color: #a7a7a7 !important;
text-decoration: none !important;
text-shadow: none !important;
border: 0 !important;
}
#codepen-footer a:hover {
color: white !important;
}
</style>
<script>
// Kill alerts, confirmations and prompts
// window.alert = function(){}; we're going to allow alerts for now
window.confirm = function(){};
window.prompt = function(){};
window.open = function(){};
window.print = function(){};
</script>
</head>
<body>
<canvas id="screen"></canvas>
<script src="http://code.jquery.com/jquery-latest.js"></script>
<script>
(function() {
if ( !window.requestAnimationFrame ) {
window.requestAnimationFrame = ( function() {
return window.webkitRequestAnimationFrame ||
window.mozRequestAnimationFrame ||
window.oRequestAnimationFrame ||
window.msRequestAnimationFrame ||
function( /* function FrameRequestCallback */ callback, /* DOMElement Element */ element ) {
window.setTimeout( callback, 1000 / 60 );
};
} )();
}
//Pascal HTML5 emulator by Jedi_Knight
var canvas = null;
var ctx = null;
var width = 640;
var height = 480;
//var colors = ["black", "blue", "green", "cyan", "red", "magenta", "brown", "lightgray",
//"darkgray", "lightblue", "lightgreen", "lightcyan", "lightred", "lightmagenta", "yellow", "white"];
var colors = ["#000000", "#0000AA", "#00AA00", "#00AAAA", "#AA0000", "#AA00AA", "#AA5500", "#AAAAAA",
"#555555", "#5555FF", "#55FF55", "#55FFFF", "#FF5555", "#FF55FF", "#FFFF55", "#FFFFFF"];
var rgb = [
[0, 0, 0],
[0, 0, 0xAA],
[0, 0xAA, 0],
[0, 0xAA, 0xAA],
[0xAA, 0, 0],
[0xAA, 0, 0xAA],
[0xAA, 0x55, 0],
[0xAA, 0xAA, 0xAA],
[0x55, 0x55, 0x55],
[0x55, 0x55, 0xFF],
[0x55, 0xFF, 0x55],
[0x55, 0xFF, 0xFF],
[0xFF, 0x55, 0x55],
[0xFF, 0x55, 0xFF],
[0xFF, 0xFF, 0x55],
[0xFF, 0xFF, 0xFF]
];
var rgbCache = [];
var widthCache = [];
var lineCache = [];
var curline = 0;
var clr = -1;
var fillclr = -1;
function setcolor(colorIndex)
{
ctx.strokeStyle = colors[colorIndex];
clr = colorIndex;
}
function line(x1, y1, x2, y2)
{
var x_1, y_1, x_2, y_2;
var dx = x2-x1, dy = y2-y1;
var N = NN;
var N2 = Math.round(Math.sqrt(dx*dx+dy*dy) / 5);
if (N2<N) N = N2;
if (N<5) N = 1;
while (NN%N!=0) N--;
var d = NN/N;
for (i=0; i<N; i++)
{
if (curline >= lineCache.length)
{
x_1 = dx*((i-0.01)/N) + x1;
y_1 = dy*((i-0.01)/N) + y1;
x_2 = dx*((i+1.01)/N) + x1;
y_2 = dy*((i+1.01)/N) + y1;
lineCache[curline++]= [x_1, y_1, x_2, y_2];
} else
{
x_1 = lineCache[curline][0];
y_1 = lineCache[curline][1];
x_2 = lineCache[curline][2];
y_2 = lineCache[curline][3];
curline++;
}
ctx.strokeStyle = rgbCache[clr][i*d];
ctx.lineWidth = widthCache[i*d];
ctx.beginPath();
ctx.moveTo(x_1, y_1);
ctx.lineTo(x_2, y_2);
ctx.stroke();
ctx.closePath();
}
}
function setlinestyle(p, t, width)
{
ctx.lineWidth = width;
}
function setfillstyle(temp, colorIndex)
{
fillclr = colorIndex;
var r = rgb[colorIndex][0] * (2 + Math.cos(t))/3;
var g = rgb[colorIndex][1] * (2 + Math.cos(t))/3;
var b = rgb[colorIndex][2] * (2 + Math.cos(t))/3;
r = Math.round(r);
g = Math.round(g);
b = Math.round(b);
ctx.fillStyle = "rgb("+r+","+g+","+b+")";
}
function putpixel(x, y, clr)
{
var c = clr;
setcolor(clr);
ellipse(x,y,0,Math.PI*2, 1,1);
setcolor(c);
}
function arc(x, y, st, end, rad)
{
ellipse(x, y, st, end, rad, rad);
}
var NN =72;
function ellipse(x, y, st, end, xrad, yrad)
{
var x1, y1, x2, y2;
var N = NN/3;
var a1 = - end * Math.PI/180;
var a2 = - st * Math.PI/180;
while (a2<a1) a2 += 2*Math.PI;
var N2 = Math.round(((a2-a1) * (xrad+yrad)/5));
if (N2<N) N = N2;
if (N<6) N = 6;
while (NN%N!=0) N--;
var d = NN/N;
ctx.strokeStyle=colors[clr];
for (i=0; i<N; i++)
{
if (curline >= lineCache.length)
{
angle1 = (a2-a1) * (i/N-0.01) + a1;
x1 = x + xrad * Math.cos(angle1);
y1 = y + yrad * Math.sin(angle1);
angle2 = (a2-a1) * ((i+1)/N+0.01) + a1;
x2 = x + xrad * Math.cos(angle2);
y2 = y + yrad * Math.sin(angle2);
lineCache[curline++]= [x1, y1, x2, y2];
} else
{
x1 = lineCache[curline][0];
y1 = lineCache[curline][1];
x2 = lineCache[curline][2];
y2 = lineCache[curline][3];
curline++;
}
ctx.strokeStyle = rgbCache[clr][i*d];
ctx.lineWidth = widthCache[i*d];
ctx.beginPath();
ctx.moveTo(x1, y1);
ctx.lineTo(x2, y2);
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();
}
var t = 0;
var wasError = false;
function draw()
{
t=Date.now() / 500;
ctx.clearRect(0, 0, width, height);
if (!wasError)
try {
curline = 0;
var i, j;
for (i=0; i<=15; i++)
rgbCache[i] = [];
for (i=0; i<NN; i++)
{
var phase = (t + i*2*Math.PI/NN);
widthCache[i] = 2 + Math.cos(phase);
for (j=0; j<rgb.length; j++)
{
var r = rgb[j][0] * 0.25 * (3 + Math.cos(phase));
var g = rgb[j][1] * 0.25 * (3 + Math.cos(phase));
var b = rgb[j][2] * 0.25 * (3 + Math.cos(phase));
r = Math.round(r);
g = Math.round(g);
b = Math.round(b);
rgbCache[j][i] = "rgb("+r+","+g+","+b+")";
}
}
setfillstyle(0, 15);
clr = 15;
pascalCode();
} catch (err)
{
wasError = true;
}
requestAnimationFrame( draw );
}
var imageNumber = 0, pascalCode = null;
var ponies = null;
function changeCode(number)
{
ponies = [pony_0, pony_1, pony_2, pony_3, pony_4];
pascalCode = ponies[number];
lineCache = [];
}
window.nextPony = function() {
imageNumber = (imageNumber+1)%5;
changeCode(imageNumber);
}
$(function() {
canvas = $("#screen")[0];
ctx = canvas.getContext("2d");
canvas.width = width;
canvas.height = height;
$("#screen").click(nextPony);
changeCode(imageNumber);
requestAnimationFrame( draw );
});
//PONIES!!!!
function pony_0() {
//Rainbow Dash pascal graphics, (c) nick_ys ,
//http://tabun.everypony.ru/blog/17441.html , 10.04.2012
setcolor(1);
line(330, 249, 335, 231);
setcolor(14);
line(337, 232, 332, 246);
setcolor(4);
line(330, 249, 340, 232);
line(340, 232, 342, 237);
line(342, 237, 344, 235);
//{xvost}
setcolor(11);
ellipse(275, 205, 95, 175, 80, 60);
ellipse(226, 203, 95, 175, 30, 30);
ellipse(228, 310, 99, 170, 25, 140);
ellipse(178, 273, 279, 350, 25, 70);
ellipse(178, 273, 279, 330, 39, 70);
ellipse(143, 291, 279, 350, 70, 100);
ellipse(155, 291, 260, 310, 75, 100);
ellipse(190, 200, 270, 300, 30, 190);
ellipse(189, 290, 275, 340, 60, 100);
ellipse(218, 340, 300, 20, 30, 50);
ellipse(220, 280, 285, 352, 55, 107);
ellipse(280, 289, 190, 280, 5, 25);
ellipse(310, 340, 99, 170, 30, 150);
setcolor(4);
ellipse(295, 338, 99, 160, 32, 150);
ellipse(236, 243, 285, 340, 30, 130);
setcolor(12);
ellipse(280, 338, 95, 160, 32, 150);
ellipse(221, 243, 320, 340, 30, 130);
setcolor(14);
ellipse(267, 337, 97, 160, 32, 160);
ellipse(209, 233, 285, 340, 30, 150);
setcolor(2);
ellipse(290, 215, 90, 170, 53, 60);
ellipse(199, 220, 284, 340, 32, 150);
line(229, 272, 237, 205);
setcolor(5);
ellipse(280, 215, 95, 170, 55, 66);
ellipse(206, 146, 284, 340, 20, 170);
//{griva niz}
setcolor(11);
ellipse(425, 193, 270, 0, 10, 50);
line(426, 215, 425, 243);
ellipse(386, 209, 280, 350, 40, 50);
ellipse(389, 209, 280, 350, 13, 50);
ellipse(432, 220, 100, 180, 30, 45);
setcolor(5);
ellipse(399, 205, 280, 330, 12, 50);
ellipse(420, 255, 100, 150, 12, 50);
//{zadnie nogi}
setcolor(11);
ellipse(410, 360, 130, 200, 60, 89);
ellipse(421, 392, 128, 179, 109, 151);
ellipse(334, 389, 180, 340, 21, 5);
ellipse(429, 400, 128, 180, 120, 160);
ellipse(289, 400, 180, 340, 22, 5);
ellipse(388, 400, 141, 180, 120, 160);
ellipse(328, 291, 110, 184, 20, 73);
ellipse(303, 332, 79, 115, 22, 35);
//{perednie nogi}
setcolor(11);
ellipse(500, 291, 170, 260, 30, 115);
ellipse(460, 325, 160, 250, 20, 85);
ellipse(474, 402, 180, 340, 22, 5);
ellipse(439, 381, 110, 205, 30, 100);
ellipse(428, 410, 120, 185, 60, 140);
ellipse(390, 421, 180, 340, 22, 5);
//{levoe krilo}
setcolor(11);
ellipse(404, 137, 200, 250, 45, 75);
ellipse(308, 323, 45, 95, 75, 230);
ellipse(301, 110, 100, 180, 3, 15);
ellipse(340, 38, 225, 252, 60, 100);
line(322, 133, 330, 150);
ellipse(238, 244, 45, 81, 130, 130);
ellipse(255, 132, 80, 160, 5, 15);
ellipse(343, 36, 225, 252, 130, 130);
line(303, 160, 316, 170);
ellipse(291, 199, 70, 110, 70, 31);
ellipse(313, 179, 160, 200, 50, 25);
ellipse(268, 249, 60, 90, 125, 60);
ellipse(377, 214, 139, 270, 60, 24);
ellipse(375, 224, 115, 250, 30, 15);
line(360, 210, 332, 190);
ellipse(333, 179, 150, 260, 10, 10);
ellipse(333, 179, 90, 160, 10, 9);
line(334, 170, 358, 187);
ellipse(369, 126, 200, 250, 30, 65);
ellipse(338, 213, 50, 85, 36, 65);
//{pravoe krilo}
setcolor(11);
ellipse(589, 209, 80, 130, 91, 70);
ellipse(598, 148, 300, 50, 11, 10);
ellipse(602, 267, 90, 115, 109, 110);
ellipse(555, 185, 40, 90, 85, 17);
ellipse(614, 182, 300, 50, 11, 10);
ellipse(605, 201, 81, 135, 80, 10);
ellipse(540, 244, 20, 80, 51, 50);
ellipse(574, 223, 290, 350, 15, 15);
ellipse(526, 270, 42, 90, 70, 50);
ellipse(523, 239, 350, 70, 9, 20);
ellipse(513, 229, 220, 310, 30, 20);
ellipse(494, 225, 260, 30, 15, 15);
ellipse(510, 200, 263, 70, 30, 15);
ellipse(510, 170, 285, 60, 40, 15);
//{telo}
setcolor(11);
line(511, 207, 470, 270);
ellipse(392, 235, 290, 330, 90, 70);
ellipse(395, 256, 175, 265, 45, 40);
ellipse(385, 220, 45, 100, 25, 25);
//{lico}
setcolor(11);
line(410, 100, 413, 90);
ellipse(421, 151, 175, 295, 16, 19);
line(427, 169, 432, 164);
ellipse(423, 174, 280, 45, 13, 13);
setcolor(12);
ellipse(423, 174, 280, 28, 4, 13);
setcolor(11);
ellipse(457, 166, 230, 300, 52, 29);
ellipse(450, 135, 320, 360, 80, 110);
ellipse(420, 153, 240, 300, 6, 9);
setcolor(12);
ellipse(432, 183, 80, 220, 3, 3);
//{yxo}
setcolor(11);
ellipse(545, 115, 100, 150, 40, 70);
ellipse(518, 86, 295, 50, 30, 53);
ellipse(515, 84, 310, 13, 23, 33);
//{griva verx}
setcolor(11);
ellipse(496, 120, 75, 150, 67, 48);
ellipse(482, 124, 120, 150, 50, 60);
ellipse(385, 10, 264, 305, 120, 80);
ellipse(367, 10, 280, 330, 69, 80);
ellipse(419, 70, 80, 160, 30, 20);
ellipse(442, 80, 80, 160, 55, 50);
ellipse(416, 70, 50, 100, 55, 50);
ellipse(443, 74, 15, 120, 80, 60);
setcolor(12);
ellipse(499, 100, 73, 152, 60, 50);
setcolor(4);
ellipse(499, 102, 75, 150, 60, 50);
setcolor(12);
ellipse(483, 188, 81, 112, 165, 150);
setcolor(14);
ellipse(483, 186, 82, 114, 165, 150);
//{glaza}
setcolor(11);
ellipse(470, 130, 150, 20, 30, 40);
ellipse(415, 124, 311, 28, 15, 30);
ellipse(419, 125, 135, 240, 15, 30);
ellipse(415, 147, 200, 340, 10, 5);
setlinestyle(0, 0, 1);
setcolor(7);
ellipse(471, 130, 20, 150, 30, 40);
line(500, 119, 513, 119);
line(497, 108, 510, 102);
line(488, 99, 500, 89);
ellipse(417, 124, 28, 124, 14, 27);
ellipse(419, 124, 134, 135, 15, 30);
//{zrachki}
setlinestyle(0, 0, 1);
setcolor(13);
setfillstyle(1, 13);
fillellipse(460, 130, 15, 21);
fillellipse(420, 125, 8, 16);
setcolor(6);
setfillstyle(1, 6);
fillellipse(456, 130, 10, 15);
fillellipse(423, 124, 5, 12);
setfillstyle(1, 15);
setcolor(15);
fillellipse(459, 133, 3, 3);
fillellipse(464, 122, 5, 6);
fillellipse(422, 129, 1, 2);
fillellipse(423, 119, 3, 4);
}
function pony_1() {
//Princess Luna pascal graphics, (c) nick_ys ,
//http://tabun.everypony.ru/blog/15250.html , 25.03.2012
setcolor(9);
line(20, 20, 60, 110);
line(20, 20, 83, 100);
//{korona}
setcolor(1);
line(72, 85, 72, 70);
line(72, 70, 82, 81);
line(82, 81, 82, 48);
line(82, 48, 95, 82);
line(95, 82, 99, 65);
line(99, 65, 110, 96);
//{griva}
setcolor(3);
ellipse(90, 91, 20, 160, 50, 20);
ellipse(50, 133, 104, 251, 28, 50);
ellipse(30, 204, 263, 65, 28, 25);
ellipse(52, 195, 233, 320, 40, 45);
ellipse(44, 217, 258, 350, 40, 50);
ellipse(57, 198, 250, 340, 65, 73);
line(81, 102, 138, 92);
ellipse(87, 138, 95, 208, 43, 35);
ellipse(62, 136, 229, 340, 20, 25);
ellipse(73, 136, 90, 320, 10, 13);
ellipse(21, 29, 289, 318, 160, 100);
ellipse(145, 165, 350, 60, 40, 80);
ellipse(203, 180, 180, 300, 18, 30);
ellipse(190, 192, 170, 330, 25, 30);
ellipse(118, 120, 330, 0, 60, 100);
line(170, 171, 165, 186);
ellipse(105, 120, 330, 10, 60, 100);
ellipse(179, 190, 141, 270, 30, 30);
//{glas}
setcolor(9);
ellipse(120, 130, 30, 192, 25, 10);
line(95, 130, 94, 150);
ellipse(95, 129, 280, 9, 47, 20);
line(94, 150, 102, 149);
setcolor(8);
arc(94, 150, 9, 85, 15);
setcolor(2);
arc(94, 150, 9, 56, 25);
setcolor(9);
setlinestyle(0, 0, 2);
ellipse(122, 137, 50, 150, 30, 10);
line(95, 131, 88, 130);
arc(142, 121, 280, 360, 8);
arc(128, 119, 280, 10, 8);
arc(118, 118, 280, 11, 8);
arc(143, 130, 240, 300, 10);
arc(140, 135, 220, 290, 10);
arc(135, 140, 210, 270, 10);
fillellipse(100, 144, 1, 1);
fillellipse(101, 137, 3, 3);
//{yxo}
setlinestyle(0, 0, 1);
ellipse(148, 85, 110, 220, 10, 25);
ellipse(145, 96, 350, 90, 20, 35);
//{lico}
ellipse(60, 160, 270, 360, 10, 10);
ellipse(75, 170, 180, 340, 15, 15);
ellipse(89, 183, 190, 338, 15, 9);
ellipse(107, 166, 265, 340, 35, 20);
putpixel(72, 175, 9);
putpixel(73, 174, 9);
putpixel(73, 173, 9);
//{telo}
setcolor(9);
ellipse(114, 205, 310, 65, 10, 21);
line(120, 222, 110, 259);
ellipse(132, 285, 170, 260, 25, 35);
line(128, 320, 200, 370);
line(193, 222, 225, 263);
line(270, 325, 285, 350);
//{noga}
setcolor(9);
line(155, 310, 145, 340);
line(145, 340, 115, 300);
setcolor(3);
ellipse(80, 325, 31, 90, 40, 50);
ellipse(89, 310, 118, 190, 20, 40);
setcolor(9);
line(169, 320, 153, 383);
line(153, 383, 70, 319);
setcolor(3);
line(70, 319, 80, 327);
line(80, 327, 82, 310);
line(82, 310, 92, 305);
line(92, 305, 92, 295);
line(92, 295, 113, 295);
setcolor(9);
//{noga back}
setcolor(3);
line(73, 285, 63, 280);
ellipse(60, 305, 88, 240, 10, 25);
setcolor(9);
line(55, 328, 100, 390);
line(100, 390, 120, 360);
line(103, 350, 90, 333);
setcolor(3);
line(63, 338, 63, 320);
line(63, 320, 68, 317);
//{krilo}
setcolor(9);
ellipse(320, 280, 160, 240, 120, 50);
ellipse(209, 322, 20, 90, 80, 60);
ellipse(260, 304, 270, 300, 50, 20);
ellipse(235, 323, 360, 60, 50, 35);
line(283, 303, 231, 279);
line(285, 323, 220, 288);
arc(215, 295, 270, 50, 8);
arc(224, 284, 270, 40, 7);
arc(233, 273, 279, 45, 8);
//{znak}
setcolor(1);
ellipse(114, 205, 268, 342, 70, 50);
ellipse(132, 273, 150, 1, 25, 27);
ellipse(135, 234, 293, 18, 60, 40);
fillellipse(132, 276, 17, 17);
setfillstyle(1, 0);
setcolor(0);
fillellipse(125, 276, 11, 11);
}
function pony_2() {
//Twilight Sparkle pascal graphics, (c) nick_ys ,
//http://tabun.everypony.ru/blog/15804.html , 29.03.2012
setcolor(5)
ellipse(110, 80, 180, 255, 50, 60);
ellipse(110, 80, 180, 235, 50, 40);
ellipse(99, 77, 115, 235, 30, 45);
ellipse(123, 54, 160, 250, 40, 50);
ellipse(138, 83, 95, 205, 30, 43);
ellipse(160, 58, 160, 240, 30, 48);
ellipse(165, 100, 106, 180, 20, 35);
ellipse(170, 76, 165, 320, 12, 30);
ellipse(210, 95, 180, 245, 30, 40);
//{griva verx polosi}
setcolor(12);
ellipse(202, 105, 180, 245, 30, 40);
ellipse(170, 101, 180, 254, 25, 42);
setcolor(13);
ellipse(156, 88, 180, 254, 21, 54);
setcolor(5);
ellipse(140, 80, 155, 254, 25, 65);
ellipse(112, 32, 193, 254, 40, 100);
//{griva niz}
setcolor(5);
ellipse(251, 166, 120, 280, 23, 14);
line(255, 180, 239, 193);
ellipse(259, 193, 10, 170, 20, 3);
ellipse(271, 198, 80, 200, 28, 5);
line(245, 200, 276, 201);
ellipse(295, 320, 100, 140, 105, 120);
//{griva niz polosi}
setcolor(12);
ellipse(295, 310, 113, 140, 105, 120);
ellipse(320, 301, 120, 136, 150, 120);
setcolor(13);
ellipse(310, 292, 113, 131, 150, 120);
setcolor(5);
line(235, 150, 220, 159);
line(230, 169, 220, 168);
line(230, 173, 218, 172);
//{yxo}
setcolor(13);
ellipse(212, 182, 110, 149, 25, 60);
ellipse(199, 159, 300, 76, 20, 35);
arc(195, 150, 300, 10, 15);
//{povyazka golova}
setcolor(7);
ellipse(145, 139, 189, 351, 50, 3);
ellipse(121, 149, 249, 351, 70, 10);
line(97, 140, 96, 158);
line(216, 138, 230, 137);
line(230, 137, 231, 150);
line(231, 150, 218, 151);
arc(230, 127, 270, 360, 10);
arc(228, 142, 325, 50, 20);
line(231, 150, 245, 155);
line(231, 148, 248, 142);
line(231, 144, 234, 142);
line(150, 146, 190, 141);
line(144, 152, 189, 151);
//{rog}
setcolor(13);
line(105, 140, 100, 107);
line(100, 107, 127, 141);
//{povyazka}
setcolor(8);
ellipse(107, 215, 110, 160, 20, 60);
ellipse(80, 168, 296, 20, 20, 30);
line(100, 175, 150, 158);
setlinestyle(0, 0, 3);
line(110, 171, 118, 169);
line(110, 172, 118, 170);
setlinestyle(0, 0, 3);
//{face}
setcolor(13);
ellipse(68, 197, 300, 340, 25, 3);
line(90, 197, 91, 194);
ellipse(89, 203, 170, 250, 10, 13);
ellipse(89, 225, 5, 95, 16, 10);
line(104, 222, 87, 220);
ellipse(137, 192, 220, 283, 65, 45);
line(150, 235, 165, 264);
line(210, 190, 215, 245);
//{glaz}
setlinestyle(0, 0, 0);
setcolor(8);
arc(160, 150, 200, 280, 30);
ellipse(141, 227, 90, 155, 25, 53);
setcolor(13);
ellipse(140, 163, 280, 342, 25, 53);
setcolor(13);
arc(105, 275, 55, 83, 70);
setcolor(8);
arc(165, 173, 260, 301, 10);
arc(153, 221, 50, 95, 10);
arc(157, 216, 50, 95, 10);
arc(160, 211, 50, 94, 10);
setcolor(8);
ellipse(126, 195, 180, 100, 5, 9);
setcolor(5);
ellipse(126, 195, 205, 90, 7, 11);
fillellipse(128, 193, 2, 3);
fillellipse(124, 197, 1, 1);
//{lico detali}
setlinestyle(0, 0, 3);
setcolor(12);
line(160, 220, 175, 210);
setcolor(13);
line(130, 215, 120, 212);
putpixel(85, 205, 13);
putpixel(86, 205, 13);
putpixel(87, 204, 13);
//{telo}
setcolor(8);
ellipse(165, 233, 270, 350, 50, 25);
arc(225, 246, 180, 240, 10);
ellipse(193, 248, 190, 270, 30, 55);
line(218, 252, 238, 252);
line(238, 252, 265, 245);
ellipse(284, 251, 90, 150, 20, 15);
line(285, 236, 273, 245);
line(273, 245, 286, 240);
line(286, 240, 278, 246);
ellipse(243, 310, 200, 340, 26, 5);
//{telo shtrixi}
setcolor(8);
arc(190, 280, 90, 180, 11);
arc(180, 270, 270, 360, 9);
arc(210, 260, 250, 340, 20);
line(205, 278, 227, 268);
arc(270, 260, 190, 260, 5);
arc(267, 263, 190, 270, 5);
line(280, 255, 290, 270);
line(288, 267, 280, 276);
line(286, 276, 276, 261);
line(276, 268, 284, 258);
line(300, 270, 305, 264);
line(303, 279, 290, 289);
line(302, 285, 293, 292);
line(292, 280, 299, 294);
//{telo + zadnie nogi}
setcolor(8);
ellipse(280, 300, 340, 90, 39, 55);
line(315, 320, 315, 325);
arc(322, 339, 69, 110, 15);
ellipse(315, 400, 340, 70, 35, 80);
ellipse(329, 430, 150, 0, 19, 5);
ellipse(270, 399, 340, 70, 45, 80);
ellipse(301, 291, 180, 250, 40, 35);
ellipse(290, 287, 220, 240, 40, 40);
ellipse(254, 395, 345, 70, 40, 80);
ellipse(311, 417, 155, 275, 19, 5);
//{nogi shtrixi}
setcolor(13);
ellipse(345, 385, 85, 280, 25, 7);
ellipse(291, 390, 283, 80, 15, 5);
setcolor(8);
arc(325, 405, 180, 270, 3);
arc(324, 410, 180, 270, 4);
line(330, 345, 320, 350);
line(330, 338, 315, 345);
line(318, 341, 323, 352);
line(320, 335, 325, 343);
arc(318, 348, 350, 30, 10);
setcolor(13);
ellipse(200, 380, 273, 86, 25, 9);
setfillstyle(1, 5);
setcolor(8);
fillellipse(219, 360, 12, 3);
setcolor(13);
line(200, 350, 190, 348);
line(200, 360, 190, 362);
setcolor(8);
line(212, 395, 225, 410);
line(225, 400, 215, 420);
line(215, 410, 225, 420);
line(210, 400, 218, 398);
//{perednie nogi}
setcolor(8);
ellipse(178, 367, 320, 80, 11, 71);
ellipse(189, 374, 320, 70, 12, 81);
ellipse(216, 429, 160, 358, 19, 5);
ellipse(205, 412, 160, 247, 19, 5);
ellipse(203, 430, 360, 75, 32, 135);
//{xvost}
setcolor(5);
ellipse(364, 249, 80, 180, 70, 60);
line(377, 191, 365, 195);
ellipse(367, 255, 40, 90, 70, 60);
line(420, 217, 403, 215);
ellipse(342, 344, 20, 60, 120, 150);
ellipse(333, 268, 100, 140, 40, 20);
line(325, 250, 343, 266);
line(343, 266, 339, 254);
ellipse(330, 351, 345, 80, 50, 100);
ellipse(365, 80, 275, 308, 131, 300);
ellipse(365, 80, 310, 315, 131, 300);
line(450, 310, 430, 270);
line(430, 270, 445, 320);
//{xvost polosi}
setcolor(5);
ellipse(333, 292, 350, 100, 42, 44);
setcolor(13);
ellipse(333, 305, 340, 130, 50, 70);
setcolor(12);
ellipse(337, 320, 326, 134, 58, 100);
ellipse(345, 355, 359, 134, 70, 150);
setcolor(5);
ellipse(345, 360, 368, 115, 90, 160);
}
function pony_3() {
//http://tabun.everypony.ru/blog/18432.html
setcolor(8);
ellipse(253, 227, 170, 210, 55, 45);
ellipse(105, 203, 110, 200, 35, 75);
ellipse(60, 288, 340, 50, 20, 75);
ellipse(108, 323, 170, 273, 29, 45);
ellipse(116, 352, 310, 55, 9, 15);
line(109, 368, 120, 365);
ellipse(111, 280, 180, 300, 20, 69);
setcolor(7);
ellipse(242, 232, 170, 210, 54, 50);
ellipse(147, 210, 130, 170, 77, 75);
ellipse(171, 230, 135, 175, 99, 80);
ellipse(135, 312, 130, 180, 41, 40);
ellipse(137, 330, 130, 180, 40, 50);
ellipse(165, 310, 162, 200, 50, 40);
setcolor(8);
ellipse(190, 120, 305, 110, 50, 40);
ellipse(202, 139, 110, 150, 90, 60);
ellipse(119, 113, 265, 350, 22, 11);
ellipse(140, 106, 240, 340, 50, 22);
ellipse(170, 115, 270, 360, 16, 17);
ellipse(189, 95, 250, 290, 55, 40);
setcolor(7);
ellipse(78, 10, 290, 310, 140, 110);
ellipse(187, 123, 355, 120, 39, 32);
ellipse(215, 127, 1, 80, 10, 8);
ellipse(211, 133, 290, 60, 9, 17);
setcolor(7);
ellipse(110, 123, 1, 89, 15, 30);
ellipse(85, 132, 350, 5, 40, 35);
ellipse(117, 130, 105, 235, 24, 39);
ellipse(122, 127, 150, 230, 20, 25);
setcolor(7);
ellipse(181, 174, 350, 60, 39, 45);
ellipse(185, 159, 180, 205, 85, 90);
ellipse(220, 163, 240, 271, 35, 20);
ellipse(223, 187, 355, 120, 5, 5);
ellipse(173, 182, 260, 350, 55, 44);
ellipse(212, 201, 152, 240, 9, 6);
ellipse(209, 200, 270, 320, 15, 7);
arc(216, 182, 240, 280, 10);
ellipse(192, 154, 60, 110, 9, 12);
ellipse(203, 134, 240, 275, 12, 11);
ellipse(165, 150, 70, 125, 16, 10);
ellipse(146, 134, 230, 300, 17, 9);
setcolor(5);
ellipse(173, 171, 340, 20, 35, 24);
setcolor(8);
ellipse(177, 172, 340, 20, 35, 25);
ellipse(205, 165, 175, 260, 10, 15);
ellipse(204, 177, 55, 110, 25, 15);
fillellipse(201, 166, 2, 5);
putpixel(200, 173, 15);
putpixel(200, 174, 15);
line(219, 166, 225, 160);
line(217, 164, 223, 159);
line(216, 163, 222, 158);
setcolor(8);
ellipse(170, 175, 350, 80, 6, 16);
ellipse(176, 158, 170, 270, 40, 22);
ellipse(132, 160, 10, 85, 40, 6);
ellipse(152, 165, 280, 60, 12, 12);
ellipse(150, 165, 110, 190, 11, 11);
setcolor(5);
ellipse(156, 167, 290, 70, 13, 13);
ellipse(148, 163, 120, 180, 11, 11);
fillellipse(151, 160, 4, 5);
fillellipse(159, 165, 1, 2);
setcolor(8);
line(135, 154, 127, 151);
line(139, 153, 130, 147);
line(144, 153, 139, 149);
line(136, 163, 130, 164);
line(140, 167, 134, 170);
line(144, 171, 139, 173);
setcolor(7);
ellipse(107, 211, 320, 70, 5, 15);
ellipse(110, 246, 90, 180, 3, 24);
ellipse(172, 249, 90, 180, 3, 22);
ellipse(179, 242, 270, 335, 30, 19);
ellipse(139, 265, 190, 255, 33, 45);
ellipse(193, 265, 270, 300, 85, 65);
ellipse(235, 304, 350, 120, 58, 62);
setcolor(7);
ellipse(264, 290, 165, 300, 35, 50);
ellipse(276, 395, 335, 75, 20, 65);
ellipse(290, 425, 360, 67, 45, 120);
ellipse(314, 424, 190, 350, 22, 5);
ellipse(300, 315, 5, 175, 8, 5);
ellipse(214, 320, 220, 299, 15, 15);
line(221, 334, 216, 365);
ellipse(245, 378, 160, 269, 30, 40);
ellipse(245, 392, 275, 50, 10, 26);
line(249, 335, 245, 370);
line(245, 370, 251, 372);
setcolor(7);
line(126, 307, 110, 349);
ellipse(55, 87, 283, 308, 80, 357);
ellipse(105, 27, 284, 317, 55, 420);
ellipse(95, 435, 185, 355, 23, 5);
ellipse(150, 279, 20, 180, 14, 14);
ellipse(174, 270, 190, 227, 40, 60);
ellipse(253, 266, 190, 209, 90, 55);
ellipse(191, 314, 180, 260, 45, 50);
ellipse(148, 354, 0, 50, 48, 53);
ellipse(185, 353, 275, 355, 10, 10);
ellipse(302, 287, 190, 209, 140, 55);
ellipse(185, 305, 275, 45, 15, 14);
setcolor(15);
ellipse(169, 258, 358, 90, 10, 15);
ellipse(135, 239, 290, 330, 40, 20);
ellipse(144, 250, 295, 330, 40, 20);
setcolor(13);
ellipse(104, 255, 62, 180, 7, 8);
ellipse(106, 256, 180, 290, 9, 15);
ellipse(141, 258, 0, 100, 6, 8);
setcolor(13);
ellipse(122, 260, 0, 360, 5, 7);
line(118, 255, 108, 248);
line(127, 255, 138, 250);
line(118, 265, 109, 271);
line(127, 265, 138, 270);
line(147, 265, 147, 259);
setcolor(8);
ellipse(286, 321, 330, 105, 49, 69);
ellipse(316, 265, 50, 160, 62, 58);
setcolor(7);
ellipse(325, 270, 55, 155, 72, 50);
ellipse(310, 345, 55, 120, 95, 110);
line(365, 254, 408, 285);
ellipse(253, 331, 30, 65, 130, 80);
ellipse(501, 256, 205, 239, 150, 80);
ellipse(525, 220, 198, 240, 200, 160);
ellipse(427, 325, 180, 275, 55, 66);
ellipse(431, 375, 270, 39, 26, 16);
ellipse(430, 240, 217, 260, 120, 150);
ellipse(435, 275, 215, 265, 107, 128);
ellipse(420, 275, 215, 258, 110, 131);
setcolor(8);
ellipse(260, 355, 360, 55, 165, 165);
ellipse(435, 359, 170, 270, 10, 20);
ellipse(440, 370, 245, 65, 12, 10);
ellipse(437, 380, 300, 70, 25, 20);
ellipse(405, 334, 230, 293, 112, 70);
//{¬ҐвЄ }
setcolor(5);
ellipse(245, 260, 20, 220, 4, 5);
ellipse(265, 260, 190, 280, 23, 20);
ellipse(269, 277, 260, 50, 3, 3);
ellipse(248, 275, 325, 70, 2, 17);
ellipse(257, 286, 180, 10, 7, 7);
ellipse(259, 284, 0, 180, 5, 8);
ellipse(257, 284, 180, 50, 3, 3);
}
function pony_4() {
//http://tabun.everypony.ru/blog/20224.html
setcolor(13);
ellipse(237, 55, 25, 100, 63, 48);
ellipse(237, 60, 100, 195, 63, 53);
line(177, 75, 198, 140);
ellipse(258, 99, 200, 233, 50, 80);
ellipse(194, 156, 310, 50, 7, 20);
ellipse(195, 166, 180, 290, 7, 7);
ellipse(192, 166, 10, 180, 4, 5);
ellipse(203, 170, 180, 330, 24, 25);
ellipse(188, 167, 10, 190, 9, 10);
ellipse(268, 72, 49, 140, 35, 30);
ellipse(228, 93, 55, 220, 22, 50);
ellipse(310, 260, 45, 80, 26, 196);
ellipse(344, 148, 160, 180, 50, 90);
ellipse(344, 175, 170, 280, 15, 25);
ellipse(345, 192, 300, 100, 4, 9);
ellipse(346, 200, 270, 100, 10, 18);
ellipse(345, 159, 188, 270, 52, 60);
//{mane+}
ellipse(192, 175, 330, 62, 19, 35);
ellipse(215, 60, 130, 210, 10, 30);
ellipse(224, 59, 19, 130, 22, 30);
ellipse(210, 59, 15, 95, 40, 45);
ellipse(225, 44, 0, 70, 30, 40);
ellipse(255, 33, 342, 48, 20, 27);
ellipse(265, 30, 320, 20, 20, 20);
ellipse(307, 103, 320, 25, 15, 45);
ellipse(327, 185, 150, 240, 16, 29);
//{ear}
setcolor(14);
ellipse(300, 65, 100, 165, 10, 36);
ellipse(299, 58, 310, 90, 15, 28);
ellipse(302, 56, 315, 50, 5, 15);
//{face}
ellipse(257, 86, 122, 268, 35, 45);
ellipse(273, 80, 295, 0, 36, 49);
//{body}
ellipse(306, 156, 150, 175, 15, 70);
ellipse(233, 139, 330, 18, 22, 22);
ellipse(289, 167, 280, 0, 2, 35);
ellipse(262, 214, 185, 270, 20, 20);
//{left leg up}
ellipse(241, 167, 20, 140, 15, 25);
ellipse(243, 179, 135, 245, 19, 40);
ellipse(231, 176, 295, 325, 25, 42);
ellipse(238, 196, 250, 290, 9, 20);
ellipse(260, 160, 190, 230, 15, 21);
//{right leg up}
ellipse(266, 175, 70, 140, 13, 26);
ellipse(269, 172, 5, 80, 9, 22);
ellipse(268, 185, 130, 250, 19, 35);
ellipse(264, 199, 250, 290, 9, 20);
ellipse(257, 179, 295, 340, 24, 43);
ellipse(282, 174, 190, 262, 12, 21);
ellipse(274, 174, 290, 345, 12, 21);
//{right leg down}
ellipse(278, 224, 295, 40, 15, 33);
ellipse(290, 275, 65, 110, 12, 23);
ellipse(288, 259, 320, 40, 10, 9);
ellipse(301, 316, 110, 170, 16, 55);
ellipse(248, 297, 300, 340, 40, 30);
ellipse(266, 303, 190, 275, 12, 20);
ellipse(279, 315, 119, 170, 25, 55);
ellipse(274, 254, 180, 260, 15, 15);
ellipse(274, 260, 110, 170, 15, 45);
//{left leg down}
ellipse(250, 232, 150, 280, 17, 32);
ellipse(268, 296, 140, 175, 25, 50);
ellipse(260, 293, 180, 250, 17, 20);
//{left eye}
setcolor(7);
ellipse(236, 84, 9, 175, 8, 15);
ellipse(223, 84, 270, 0, 5, 5);
ellipse(223, 82, 275, 0, 5, 5);
ellipse(224, 78, 276, 0, 4, 5);
//{right eye}
ellipse(284, 81, 10, 179, 12, 16);
ellipse(305, 79, 180, 280, 9, 6);
ellipse(301, 78, 180, 351, 5, 4);
ellipse(299, 75, 200, 350, 4, 3);
//{nose}
setcolor(5);
ellipse(258, 100, 60, 120, 15, 10);
ellipse(254, 95, 190, 245, 5, 5);
ellipse(261, 95, 315, 0, 4, 4);
//{mouth}
setcolor(14);
ellipse(258, 104, 200, 0, 9, 5);
ellipse(262, 103, 200, 270, 12, 16);
ellipse(263, 103, 260, 350, 4, 15);
setcolor(12);
ellipse(261, 126, 70, 110, 9, 11);
//{right wing}
setcolor(14);
ellipse(257, 57, 290, 351, 95, 100);
ellipse(355, 95, 20, 120, 9, 22);
ellipse(275, 65, 330, 350, 90, 105);
ellipse(240, 66, 320, 345, 149, 80);
ellipse(388, 107, 34, 120, 9, 22);
ellipse(254, 72, 313, 347, 145, 90);
ellipse(358, 109, 260, 316, 40, 30);
ellipse(393, 132, 0, 150, 7, 5);
ellipse(349, 51, 260, 310, 80, 105);
ellipse(331, 167, 350, 80, 25, 12);
ellipse(333, 168, 295, 350, 23, 6);
line(342, 173, 291, 166);
ellipse(344, 180, 80, 110, 25, 70);
ellipse(250, 112, 330, 0, 100, 50);
ellipse(343, 153, 50, 110, 13, 17);
ellipse(328, 141, 255, 0, 23, 12);
ellipse(320, 163, 0, 75, 10, 10);
ellipse(320, 158, 280, 330, 12, 12);
//{left wing}
setcolor(14);
ellipse(182, 62, 190, 270, 15, 30);
ellipse(171, 76, 80, 110, 9, 10);
ellipse(158, 215, 60, 85, 60, 120);
ellipse(207, 93, 195, 255, 47, 40);
ellipse(167, 106, 120, 160, 6, 11);
//{tail}
setcolor(13);
ellipse(290, 235, 60, 90, 35, 40);
ellipse(313, 257, 0, 50, 50, 50);
ellipse(323, 258, 290, 0, 40, 100);
ellipse(342, 370, 120, 250, 10, 20);
ellipse(356, 378, 220, 50, 23, 16);
ellipse(349, 386, 270, 50, 35, 27);
ellipse(349, 358, 165, 270, 57, 55);
ellipse(286, 311, 310, 68, 12, 43);
//{tail+}
setcolor(13);
ellipse(273, 276, 325, 70, 50, 77);
ellipse(333, 362, 130, 230, 29, 53);
ellipse(290, 174, 300, 340, 75, 194);
ellipse(355, 374, 140, 230, 37, 48);
//{cutiemark}
setcolor(2);
line(284, 222, 287, 217);
line(287, 217, 288, 213);
line(287, 217, 291, 215);
line(275, 224, 276, 231);
line(275, 224, 272, 220);
line(275, 224, 276, 219);
line(287, 234, 283, 240);
line(287, 234, 287, 230);
line(287, 234, 290, 232);
setcolor(13);
ellipse(284, 215, 320, 240, 2, 3);
ellipse(282, 219, 90, 270, 4, 3);
ellipse(286, 223, 150, 60, 3, 3);
ellipse(288, 220, 300, 150, 4, 3);
ellipse(273, 226, 30, 270, 2, 3);
ellipse(273, 230, 110, 0, 2, 3);
ellipse(277, 226, 280, 180, 2, 3);
ellipse(278, 231, 200, 90, 2, 3);
ellipse(284, 233, 350, 200, 2, 3);
ellipse(281, 237, 80, 310, 3, 2);
ellipse(284, 241, 160, 10, 2, 3);
ellipse(288, 237, 260, 100, 3, 2);
}
})();
</script>
<div id="codepen-footer">
<a style="color: #f73535 !important;" href="https://codepen.wufoo.com/forms/m7x3r3/def/field14=" target="_blank">Report Abuse</a>
&nbsp;
<a href="/ivanpopelyshev/pen/mndwc" target="_blank">Edit this Pen</a>
</div>
</body>
</html>
if ( !window.requestAnimationFrame ) {
window.requestAnimationFrame = ( function() {
return window.webkitRequestAnimationFrame ||
window.mozRequestAnimationFrame ||
window.oRequestAnimationFrame ||
window.msRequestAnimationFrame ||
function( /* function FrameRequestCallback */ callback, /* DOMElement Element */ element ) {
window.setTimeout( callback, 1000 / 60 );
};
} )();
}
//Pascal HTML5 emulator by Jedi_Knight
var canvas = null;
var ctx = null;
var width = 640;
var height = 480;
//var colors = ["black", "blue", "green", "cyan", "red", "magenta", "brown", "lightgray",
//"darkgray", "lightblue", "lightgreen", "lightcyan", "lightred", "lightmagenta", "yellow", "white"];
var colors = ["#000000", "#0000AA", "#00AA00", "#00AAAA", "#AA0000", "#AA00AA", "#AA5500", "#AAAAAA",
"#555555", "#5555FF", "#55FF55", "#55FFFF", "#FF5555", "#FF55FF", "#FFFF55", "#FFFFFF"];
var rgb = [
[0, 0, 0],
[0, 0, 0xAA],
[0, 0xAA, 0],
[0, 0xAA, 0xAA],
[0xAA, 0, 0],
[0xAA, 0, 0xAA],
[0xAA, 0x55, 0],
[0xAA, 0xAA, 0xAA],
[0x55, 0x55, 0x55],
[0x55, 0x55, 0xFF],
[0x55, 0xFF, 0x55],
[0x55, 0xFF, 0xFF],
[0xFF, 0x55, 0x55],
[0xFF, 0x55, 0xFF],
[0xFF, 0xFF, 0x55],
[0xFF, 0xFF, 0xFF]
];
var rgbCache = [];
var widthCache = [];
var lineCache = [];
var curline = 0;
var clr = -1;
var fillclr = -1;
function setcolor(colorIndex)
{
ctx.strokeStyle = colors[colorIndex];
clr = colorIndex;
}
function line(x1, y1, x2, y2)
{
var x_1, y_1, x_2, y_2;
var dx = x2-x1, dy = y2-y1;
var N = NN;
var N2 = Math.round(Math.sqrt(dx*dx+dy*dy) / 5);
if (N2<N) N = N2;
if (N<5) N = 1;
while (NN%N!=0) N--;
var d = NN/N;
for (i=0; i<N; i++)
{
if (curline >= lineCache.length)
{
x_1 = dx*((i-0.01)/N) + x1;
y_1 = dy*((i-0.01)/N) + y1;
x_2 = dx*((i+1.01)/N) + x1;
y_2 = dy*((i+1.01)/N) + y1;
lineCache[curline++]= [x_1, y_1, x_2, y_2];
} else
{
x_1 = lineCache[curline][0];
y_1 = lineCache[curline][1];
x_2 = lineCache[curline][2];
y_2 = lineCache[curline][3];
curline++;
}
ctx.strokeStyle = rgbCache[clr][i*d];
ctx.lineWidth = widthCache[i*d];
ctx.beginPath();
ctx.moveTo(x_1, y_1);
ctx.lineTo(x_2, y_2);
ctx.stroke();
ctx.closePath();
}
}
function setlinestyle(p, t, width)
{
ctx.lineWidth = width;
}
function setfillstyle(temp, colorIndex)
{
fillclr = colorIndex;
var r = rgb[colorIndex][0] * (2 + Math.cos(t))/3;
var g = rgb[colorIndex][1] * (2 + Math.cos(t))/3;
var b = rgb[colorIndex][2] * (2 + Math.cos(t))/3;
r = Math.round(r);
g = Math.round(g);
b = Math.round(b);
ctx.fillStyle = "rgb("+r+","+g+","+b+")";
}
function putpixel(x, y, clr)
{
var c = clr;
setcolor(clr);
ellipse(x,y,0,Math.PI*2, 1,1);
setcolor(c);
}
function arc(x, y, st, end, rad)
{
ellipse(x, y, st, end, rad, rad);
}
var NN =72;
function ellipse(x, y, st, end, xrad, yrad)
{
var x1, y1, x2, y2;
var N = NN/3;
var a1 = - end * Math.PI/180;
var a2 = - st * Math.PI/180;
while (a2<a1) a2 += 2*Math.PI;
var N2 = Math.round(((a2-a1) * (xrad+yrad)/5));
if (N2<N) N = N2;
if (N<6) N = 6;
while (NN%N!=0) N--;
var d = NN/N;
ctx.strokeStyle=colors[clr];
for (i=0; i<N; i++)
{
if (curline >= lineCache.length)
{
angle1 = (a2-a1) * (i/N-0.01) + a1;
x1 = x + xrad * Math.cos(angle1);
y1 = y + yrad * Math.sin(angle1);
angle2 = (a2-a1) * ((i+1)/N+0.01) + a1;
x2 = x + xrad * Math.cos(angle2);
y2 = y + yrad * Math.sin(angle2);
lineCache[curline++]= [x1, y1, x2, y2];
} else
{
x1 = lineCache[curline][0];
y1 = lineCache[curline][1];
x2 = lineCache[curline][2];
y2 = lineCache[curline][3];
curline++;
}
ctx.strokeStyle = rgbCache[clr][i*d];
ctx.lineWidth = widthCache[i*d];
ctx.beginPath();
ctx.moveTo(x1, y1);
ctx.lineTo(x2, y2);
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();
}
var t = 0;
var wasError = false;
function draw()
{
t=Date.now() / 500;
ctx.clearRect(0, 0, width, height);
if (!wasError)
try {
curline = 0;
var i, j;
for (i=0; i<=15; i++)
rgbCache[i] = [];
for (i=0; i<NN; i++)
{
var phase = (t + i*2*Math.PI/NN);
widthCache[i] = 2 + Math.cos(phase);
for (j=0; j<rgb.length; j++)
{
var r = rgb[j][0] * 0.25 * (3 + Math.cos(phase));
var g = rgb[j][1] * 0.25 * (3 + Math.cos(phase));
var b = rgb[j][2] * 0.25 * (3 + Math.cos(phase));
r = Math.round(r);
g = Math.round(g);
b = Math.round(b);
rgbCache[j][i] = "rgb("+r+","+g+","+b+")";
}
}
setfillstyle(0, 15);
clr = 15;
pascalCode();
} catch (err)
{
wasError = true;
}
requestAnimationFrame( draw );
}
var imageNumber = 0, pascalCode = null;
var ponies = null;
function changeCode(number)
{
ponies = [pony_0, pony_1, pony_2, pony_3, pony_4];
pascalCode = ponies[number];
lineCache = [];
}
window.nextPony = function() {
imageNumber = (imageNumber+1)%5;
changeCode(imageNumber);
}
$(function() {
canvas = $("#screen")[0];
ctx = canvas.getContext("2d");
canvas.width = width;
canvas.height = height;
$("#screen").click(nextPony);
changeCode(imageNumber);
requestAnimationFrame( draw );
});
//PONIES!!!!
function pony_0() {
//Rainbow Dash pascal graphics, (c) nick_ys ,
//http://tabun.everypony.ru/blog/17441.html , 10.04.2012
setcolor(1);
line(330, 249, 335, 231);
setcolor(14);
line(337, 232, 332, 246);
setcolor(4);
line(330, 249, 340, 232);
line(340, 232, 342, 237);
line(342, 237, 344, 235);
//{xvost}
setcolor(11);
ellipse(275, 205, 95, 175, 80, 60);
ellipse(226, 203, 95, 175, 30, 30);
ellipse(228, 310, 99, 170, 25, 140);
ellipse(178, 273, 279, 350, 25, 70);
ellipse(178, 273, 279, 330, 39, 70);
ellipse(143, 291, 279, 350, 70, 100);
ellipse(155, 291, 260, 310, 75, 100);
ellipse(190, 200, 270, 300, 30, 190);
ellipse(189, 290, 275, 340, 60, 100);
ellipse(218, 340, 300, 20, 30, 50);
ellipse(220, 280, 285, 352, 55, 107);
ellipse(280, 289, 190, 280, 5, 25);
ellipse(310, 340, 99, 170, 30, 150);
setcolor(4);
ellipse(295, 338, 99, 160, 32, 150);
ellipse(236, 243, 285, 340, 30, 130);
setcolor(12);
ellipse(280, 338, 95, 160, 32, 150);
ellipse(221, 243, 320, 340, 30, 130);
setcolor(14);
ellipse(267, 337, 97, 160, 32, 160);
ellipse(209, 233, 285, 340, 30, 150);
setcolor(2);
ellipse(290, 215, 90, 170, 53, 60);
ellipse(199, 220, 284, 340, 32, 150);
line(229, 272, 237, 205);
setcolor(5);
ellipse(280, 215, 95, 170, 55, 66);
ellipse(206, 146, 284, 340, 20, 170);
//{griva niz}
setcolor(11);
ellipse(425, 193, 270, 0, 10, 50);
line(426, 215, 425, 243);
ellipse(386, 209, 280, 350, 40, 50);
ellipse(389, 209, 280, 350, 13, 50);
ellipse(432, 220, 100, 180, 30, 45);
setcolor(5);
ellipse(399, 205, 280, 330, 12, 50);
ellipse(420, 255, 100, 150, 12, 50);
//{zadnie nogi}
setcolor(11);
ellipse(410, 360, 130, 200, 60, 89);
ellipse(421, 392, 128, 179, 109, 151);
ellipse(334, 389, 180, 340, 21, 5);
ellipse(429, 400, 128, 180, 120, 160);
ellipse(289, 400, 180, 340, 22, 5);
ellipse(388, 400, 141, 180, 120, 160);
ellipse(328, 291, 110, 184, 20, 73);
ellipse(303, 332, 79, 115, 22, 35);
//{perednie nogi}
setcolor(11);
ellipse(500, 291, 170, 260, 30, 115);
ellipse(460, 325, 160, 250, 20, 85);
ellipse(474, 402, 180, 340, 22, 5);
ellipse(439, 381, 110, 205, 30, 100);
ellipse(428, 410, 120, 185, 60, 140);
ellipse(390, 421, 180, 340, 22, 5);
//{levoe krilo}
setcolor(11);
ellipse(404, 137, 200, 250, 45, 75);
ellipse(308, 323, 45, 95, 75, 230);
ellipse(301, 110, 100, 180, 3, 15);
ellipse(340, 38, 225, 252, 60, 100);
line(322, 133, 330, 150);
ellipse(238, 244, 45, 81, 130, 130);
ellipse(255, 132, 80, 160, 5, 15);
ellipse(343, 36, 225, 252, 130, 130);
line(303, 160, 316, 170);
ellipse(291, 199, 70, 110, 70, 31);
ellipse(313, 179, 160, 200, 50, 25);
ellipse(268, 249, 60, 90, 125, 60);
ellipse(377, 214, 139, 270, 60, 24);
ellipse(375, 224, 115, 250, 30, 15);
line(360, 210, 332, 190);
ellipse(333, 179, 150, 260, 10, 10);
ellipse(333, 179, 90, 160, 10, 9);
line(334, 170, 358, 187);
ellipse(369, 126, 200, 250, 30, 65);
ellipse(338, 213, 50, 85, 36, 65);
//{pravoe krilo}
setcolor(11);
ellipse(589, 209, 80, 130, 91, 70);
ellipse(598, 148, 300, 50, 11, 10);
ellipse(602, 267, 90, 115, 109, 110);
ellipse(555, 185, 40, 90, 85, 17);
ellipse(614, 182, 300, 50, 11, 10);
ellipse(605, 201, 81, 135, 80, 10);
ellipse(540, 244, 20, 80, 51, 50);
ellipse(574, 223, 290, 350, 15, 15);
ellipse(526, 270, 42, 90, 70, 50);
ellipse(523, 239, 350, 70, 9, 20);
ellipse(513, 229, 220, 310, 30, 20);
ellipse(494, 225, 260, 30, 15, 15);
ellipse(510, 200, 263, 70, 30, 15);
ellipse(510, 170, 285, 60, 40, 15);
//{telo}
setcolor(11);
line(511, 207, 470, 270);
ellipse(392, 235, 290, 330, 90, 70);
ellipse(395, 256, 175, 265, 45, 40);
ellipse(385, 220, 45, 100, 25, 25);
//{lico}
setcolor(11);
line(410, 100, 413, 90);
ellipse(421, 151, 175, 295, 16, 19);
line(427, 169, 432, 164);
ellipse(423, 174, 280, 45, 13, 13);
setcolor(12);
ellipse(423, 174, 280, 28, 4, 13);
setcolor(11);
ellipse(457, 166, 230, 300, 52, 29);
ellipse(450, 135, 320, 360, 80, 110);
ellipse(420, 153, 240, 300, 6, 9);
setcolor(12);
ellipse(432, 183, 80, 220, 3, 3);
//{yxo}
setcolor(11);
ellipse(545, 115, 100, 150, 40, 70);
ellipse(518, 86, 295, 50, 30, 53);
ellipse(515, 84, 310, 13, 23, 33);
//{griva verx}
setcolor(11);
ellipse(496, 120, 75, 150, 67, 48);
ellipse(482, 124, 120, 150, 50, 60);
ellipse(385, 10, 264, 305, 120, 80);
ellipse(367, 10, 280, 330, 69, 80);
ellipse(419, 70, 80, 160, 30, 20);
ellipse(442, 80, 80, 160, 55, 50);
ellipse(416, 70, 50, 100, 55, 50);
ellipse(443, 74, 15, 120, 80, 60);
setcolor(12);
ellipse(499, 100, 73, 152, 60, 50);
setcolor(4);
ellipse(499, 102, 75, 150, 60, 50);
setcolor(12);
ellipse(483, 188, 81, 112, 165, 150);
setcolor(14);
ellipse(483, 186, 82, 114, 165, 150);
//{glaza}
setcolor(11);
ellipse(470, 130, 150, 20, 30, 40);
ellipse(415, 124, 311, 28, 15, 30);
ellipse(419, 125, 135, 240, 15, 30);
ellipse(415, 147, 200, 340, 10, 5);
setlinestyle(0, 0, 1);
setcolor(7);
ellipse(471, 130, 20, 150, 30, 40);
line(500, 119, 513, 119);
line(497, 108, 510, 102);
line(488, 99, 500, 89);
ellipse(417, 124, 28, 124, 14, 27);
ellipse(419, 124, 134, 135, 15, 30);
//{zrachki}
setlinestyle(0, 0, 1);
setcolor(13);
setfillstyle(1, 13);
fillellipse(460, 130, 15, 21);
fillellipse(420, 125, 8, 16);
setcolor(6);
setfillstyle(1, 6);
fillellipse(456, 130, 10, 15);
fillellipse(423, 124, 5, 12);
setfillstyle(1, 15);
setcolor(15);
fillellipse(459, 133, 3, 3);
fillellipse(464, 122, 5, 6);
fillellipse(422, 129, 1, 2);
fillellipse(423, 119, 3, 4);
}
function pony_1() {
//Princess Luna pascal graphics, (c) nick_ys ,
//http://tabun.everypony.ru/blog/15250.html , 25.03.2012
setcolor(9);
line(20, 20, 60, 110);
line(20, 20, 83, 100);
//{korona}
setcolor(1);
line(72, 85, 72, 70);
line(72, 70, 82, 81);
line(82, 81, 82, 48);
line(82, 48, 95, 82);
line(95, 82, 99, 65);
line(99, 65, 110, 96);
//{griva}
setcolor(3);
ellipse(90, 91, 20, 160, 50, 20);
ellipse(50, 133, 104, 251, 28, 50);
ellipse(30, 204, 263, 65, 28, 25);
ellipse(52, 195, 233, 320, 40, 45);
ellipse(44, 217, 258, 350, 40, 50);
ellipse(57, 198, 250, 340, 65, 73);
line(81, 102, 138, 92);
ellipse(87, 138, 95, 208, 43, 35);
ellipse(62, 136, 229, 340, 20, 25);
ellipse(73, 136, 90, 320, 10, 13);
ellipse(21, 29, 289, 318, 160, 100);
ellipse(145, 165, 350, 60, 40, 80);
ellipse(203, 180, 180, 300, 18, 30);
ellipse(190, 192, 170, 330, 25, 30);
ellipse(118, 120, 330, 0, 60, 100);
line(170, 171, 165, 186);
ellipse(105, 120, 330, 10, 60, 100);
ellipse(179, 190, 141, 270, 30, 30);
//{glas}
setcolor(9);
ellipse(120, 130, 30, 192, 25, 10);
line(95, 130, 94, 150);
ellipse(95, 129, 280, 9, 47, 20);
line(94, 150, 102, 149);
setcolor(8);
arc(94, 150, 9, 85, 15);
setcolor(2);
arc(94, 150, 9, 56, 25);
setcolor(9);
setlinestyle(0, 0, 2);
ellipse(122, 137, 50, 150, 30, 10);
line(95, 131, 88, 130);
arc(142, 121, 280, 360, 8);
arc(128, 119, 280, 10, 8);
arc(118, 118, 280, 11, 8);
arc(143, 130, 240, 300, 10);
arc(140, 135, 220, 290, 10);
arc(135, 140, 210, 270, 10);
fillellipse(100, 144, 1, 1);
fillellipse(101, 137, 3, 3);
//{yxo}
setlinestyle(0, 0, 1);
ellipse(148, 85, 110, 220, 10, 25);
ellipse(145, 96, 350, 90, 20, 35);
//{lico}
ellipse(60, 160, 270, 360, 10, 10);
ellipse(75, 170, 180, 340, 15, 15);
ellipse(89, 183, 190, 338, 15, 9);
ellipse(107, 166, 265, 340, 35, 20);
putpixel(72, 175, 9);
putpixel(73, 174, 9);
putpixel(73, 173, 9);
//{telo}
setcolor(9);
ellipse(114, 205, 310, 65, 10, 21);
line(120, 222, 110, 259);
ellipse(132, 285, 170, 260, 25, 35);
line(128, 320, 200, 370);
line(193, 222, 225, 263);
line(270, 325, 285, 350);
//{noga}
setcolor(9);
line(155, 310, 145, 340);
line(145, 340, 115, 300);
setcolor(3);
ellipse(80, 325, 31, 90, 40, 50);
ellipse(89, 310, 118, 190, 20, 40);
setcolor(9);
line(169, 320, 153, 383);
line(153, 383, 70, 319);
setcolor(3);
line(70, 319, 80, 327);
line(80, 327, 82, 310);
line(82, 310, 92, 305);
line(92, 305, 92, 295);
line(92, 295, 113, 295);
setcolor(9);
//{noga back}
setcolor(3);
line(73, 285, 63, 280);
ellipse(60, 305, 88, 240, 10, 25);
setcolor(9);
line(55, 328, 100, 390);
line(100, 390, 120, 360);
line(103, 350, 90, 333);
setcolor(3);
line(63, 338, 63, 320);
line(63, 320, 68, 317);
//{krilo}
setcolor(9);
ellipse(320, 280, 160, 240, 120, 50);
ellipse(209, 322, 20, 90, 80, 60);
ellipse(260, 304, 270, 300, 50, 20);
ellipse(235, 323, 360, 60, 50, 35);
line(283, 303, 231, 279);
line(285, 323, 220, 288);
arc(215, 295, 270, 50, 8);
arc(224, 284, 270, 40, 7);
arc(233, 273, 279, 45, 8);
//{znak}
setcolor(1);
ellipse(114, 205, 268, 342, 70, 50);
ellipse(132, 273, 150, 1, 25, 27);
ellipse(135, 234, 293, 18, 60, 40);
fillellipse(132, 276, 17, 17);
setfillstyle(1, 0);
setcolor(0);
fillellipse(125, 276, 11, 11);
}
function pony_2() {
//Twilight Sparkle pascal graphics, (c) nick_ys ,
//http://tabun.everypony.ru/blog/15804.html , 29.03.2012
setcolor(5)
ellipse(110, 80, 180, 255, 50, 60);
ellipse(110, 80, 180, 235, 50, 40);
ellipse(99, 77, 115, 235, 30, 45);
ellipse(123, 54, 160, 250, 40, 50);
ellipse(138, 83, 95, 205, 30, 43);
ellipse(160, 58, 160, 240, 30, 48);
ellipse(165, 100, 106, 180, 20, 35);
ellipse(170, 76, 165, 320, 12, 30);
ellipse(210, 95, 180, 245, 30, 40);
//{griva verx polosi}
setcolor(12);
ellipse(202, 105, 180, 245, 30, 40);
ellipse(170, 101, 180, 254, 25, 42);
setcolor(13);
ellipse(156, 88, 180, 254, 21, 54);
setcolor(5);
ellipse(140, 80, 155, 254, 25, 65);
ellipse(112, 32, 193, 254, 40, 100);
//{griva niz}
setcolor(5);
ellipse(251, 166, 120, 280, 23, 14);
line(255, 180, 239, 193);
ellipse(259, 193, 10, 170, 20, 3);
ellipse(271, 198, 80, 200, 28, 5);
line(245, 200, 276, 201);
ellipse(295, 320, 100, 140, 105, 120);
//{griva niz polosi}
setcolor(12);
ellipse(295, 310, 113, 140, 105, 120);
ellipse(320, 301, 120, 136, 150, 120);
setcolor(13);
ellipse(310, 292, 113, 131, 150, 120);
setcolor(5);
line(235, 150, 220, 159);
line(230, 169, 220, 168);
line(230, 173, 218, 172);
//{yxo}
setcolor(13);
ellipse(212, 182, 110, 149, 25, 60);
ellipse(199, 159, 300, 76, 20, 35);
arc(195, 150, 300, 10, 15);
//{povyazka golova}
setcolor(7);
ellipse(145, 139, 189, 351, 50, 3);
ellipse(121, 149, 249, 351, 70, 10);
line(97, 140, 96, 158);
line(216, 138, 230, 137);
line(230, 137, 231, 150);
line(231, 150, 218, 151);
arc(230, 127, 270, 360, 10);
arc(228, 142, 325, 50, 20);
line(231, 150, 245, 155);
line(231, 148, 248, 142);
line(231, 144, 234, 142);
line(150, 146, 190, 141);
line(144, 152, 189, 151);
//{rog}
setcolor(13);
line(105, 140, 100, 107);
line(100, 107, 127, 141);
//{povyazka}
setcolor(8);
ellipse(107, 215, 110, 160, 20, 60);
ellipse(80, 168, 296, 20, 20, 30);
line(100, 175, 150, 158);
setlinestyle(0, 0, 3);
line(110, 171, 118, 169);
line(110, 172, 118, 170);
setlinestyle(0, 0, 3);
//{face}
setcolor(13);
ellipse(68, 197, 300, 340, 25, 3);
line(90, 197, 91, 194);
ellipse(89, 203, 170, 250, 10, 13);
ellipse(89, 225, 5, 95, 16, 10);
line(104, 222, 87, 220);
ellipse(137, 192, 220, 283, 65, 45);
line(150, 235, 165, 264);
line(210, 190, 215, 245);
//{glaz}
setlinestyle(0, 0, 0);
setcolor(8);
arc(160, 150, 200, 280, 30);
ellipse(141, 227, 90, 155, 25, 53);
setcolor(13);
ellipse(140, 163, 280, 342, 25, 53);
setcolor(13);
arc(105, 275, 55, 83, 70);
setcolor(8);
arc(165, 173, 260, 301, 10);
arc(153, 221, 50, 95, 10);
arc(157, 216, 50, 95, 10);
arc(160, 211, 50, 94, 10);
setcolor(8);
ellipse(126, 195, 180, 100, 5, 9);
setcolor(5);
ellipse(126, 195, 205, 90, 7, 11);
fillellipse(128, 193, 2, 3);
fillellipse(124, 197, 1, 1);
//{lico detali}
setlinestyle(0, 0, 3);
setcolor(12);
line(160, 220, 175, 210);
setcolor(13);
line(130, 215, 120, 212);
putpixel(85, 205, 13);
putpixel(86, 205, 13);
putpixel(87, 204, 13);
//{telo}
setcolor(8);
ellipse(165, 233, 270, 350, 50, 25);
arc(225, 246, 180, 240, 10);
ellipse(193, 248, 190, 270, 30, 55);
line(218, 252, 238, 252);
line(238, 252, 265, 245);
ellipse(284, 251, 90, 150, 20, 15);
line(285, 236, 273, 245);
line(273, 245, 286, 240);
line(286, 240, 278, 246);
ellipse(243, 310, 200, 340, 26, 5);
//{telo shtrixi}
setcolor(8);
arc(190, 280, 90, 180, 11);
arc(180, 270, 270, 360, 9);
arc(210, 260, 250, 340, 20);
line(205, 278, 227, 268);
arc(270, 260, 190, 260, 5);
arc(267, 263, 190, 270, 5);
line(280, 255, 290, 270);
line(288, 267, 280, 276);
line(286, 276, 276, 261);
line(276, 268, 284, 258);
line(300, 270, 305, 264);
line(303, 279, 290, 289);
line(302, 285, 293, 292);
line(292, 280, 299, 294);
//{telo + zadnie nogi}
setcolor(8);
ellipse(280, 300, 340, 90, 39, 55);
line(315, 320, 315, 325);
arc(322, 339, 69, 110, 15);
ellipse(315, 400, 340, 70, 35, 80);
ellipse(329, 430, 150, 0, 19, 5);
ellipse(270, 399, 340, 70, 45, 80);
ellipse(301, 291, 180, 250, 40, 35);
ellipse(290, 287, 220, 240, 40, 40);
ellipse(254, 395, 345, 70, 40, 80);
ellipse(311, 417, 155, 275, 19, 5);
//{nogi shtrixi}
setcolor(13);
ellipse(345, 385, 85, 280, 25, 7);
ellipse(291, 390, 283, 80, 15, 5);
setcolor(8);
arc(325, 405, 180, 270, 3);
arc(324, 410, 180, 270, 4);
line(330, 345, 320, 350);
line(330, 338, 315, 345);
line(318, 341, 323, 352);
line(320, 335, 325, 343);
arc(318, 348, 350, 30, 10);
setcolor(13);
ellipse(200, 380, 273, 86, 25, 9);
setfillstyle(1, 5);
setcolor(8);
fillellipse(219, 360, 12, 3);
setcolor(13);
line(200, 350, 190, 348);
line(200, 360, 190, 362);
setcolor(8);
line(212, 395, 225, 410);
line(225, 400, 215, 420);
line(215, 410, 225, 420);
line(210, 400, 218, 398);
//{perednie nogi}
setcolor(8);
ellipse(178, 367, 320, 80, 11, 71);
ellipse(189, 374, 320, 70, 12, 81);
ellipse(216, 429, 160, 358, 19, 5);
ellipse(205, 412, 160, 247, 19, 5);
ellipse(203, 430, 360, 75, 32, 135);
//{xvost}
setcolor(5);
ellipse(364, 249, 80, 180, 70, 60);
line(377, 191, 365, 195);
ellipse(367, 255, 40, 90, 70, 60);
line(420, 217, 403, 215);
ellipse(342, 344, 20, 60, 120, 150);
ellipse(333, 268, 100, 140, 40, 20);
line(325, 250, 343, 266);
line(343, 266, 339, 254);
ellipse(330, 351, 345, 80, 50, 100);
ellipse(365, 80, 275, 308, 131, 300);
ellipse(365, 80, 310, 315, 131, 300);
line(450, 310, 430, 270);
line(430, 270, 445, 320);
//{xvost polosi}
setcolor(5);
ellipse(333, 292, 350, 100, 42, 44);
setcolor(13);
ellipse(333, 305, 340, 130, 50, 70);
setcolor(12);
ellipse(337, 320, 326, 134, 58, 100);
ellipse(345, 355, 359, 134, 70, 150);
setcolor(5);
ellipse(345, 360, 368, 115, 90, 160);
}
function pony_3() {
//http://tabun.everypony.ru/blog/18432.html
setcolor(8);
ellipse(253, 227, 170, 210, 55, 45);
ellipse(105, 203, 110, 200, 35, 75);
ellipse(60, 288, 340, 50, 20, 75);
ellipse(108, 323, 170, 273, 29, 45);
ellipse(116, 352, 310, 55, 9, 15);
line(109, 368, 120, 365);
ellipse(111, 280, 180, 300, 20, 69);
setcolor(7);
ellipse(242, 232, 170, 210, 54, 50);
ellipse(147, 210, 130, 170, 77, 75);
ellipse(171, 230, 135, 175, 99, 80);
ellipse(135, 312, 130, 180, 41, 40);
ellipse(137, 330, 130, 180, 40, 50);
ellipse(165, 310, 162, 200, 50, 40);
setcolor(8);
ellipse(190, 120, 305, 110, 50, 40);
ellipse(202, 139, 110, 150, 90, 60);
ellipse(119, 113, 265, 350, 22, 11);
ellipse(140, 106, 240, 340, 50, 22);
ellipse(170, 115, 270, 360, 16, 17);
ellipse(189, 95, 250, 290, 55, 40);
setcolor(7);
ellipse(78, 10, 290, 310, 140, 110);
ellipse(187, 123, 355, 120, 39, 32);
ellipse(215, 127, 1, 80, 10, 8);
ellipse(211, 133, 290, 60, 9, 17);
setcolor(7);
ellipse(110, 123, 1, 89, 15, 30);
ellipse(85, 132, 350, 5, 40, 35);
ellipse(117, 130, 105, 235, 24, 39);
ellipse(122, 127, 150, 230, 20, 25);
setcolor(7);
ellipse(181, 174, 350, 60, 39, 45);
ellipse(185, 159, 180, 205, 85, 90);
ellipse(220, 163, 240, 271, 35, 20);
ellipse(223, 187, 355, 120, 5, 5);
ellipse(173, 182, 260, 350, 55, 44);
ellipse(212, 201, 152, 240, 9, 6);
ellipse(209, 200, 270, 320, 15, 7);
arc(216, 182, 240, 280, 10);
ellipse(192, 154, 60, 110, 9, 12);
ellipse(203, 134, 240, 275, 12, 11);
ellipse(165, 150, 70, 125, 16, 10);
ellipse(146, 134, 230, 300, 17, 9);
setcolor(5);
ellipse(173, 171, 340, 20, 35, 24);
setcolor(8);
ellipse(177, 172, 340, 20, 35, 25);
ellipse(205, 165, 175, 260, 10, 15);
ellipse(204, 177, 55, 110, 25, 15);
fillellipse(201, 166, 2, 5);
putpixel(200, 173, 15);
putpixel(200, 174, 15);
line(219, 166, 225, 160);
line(217, 164, 223, 159);
line(216, 163, 222, 158);
setcolor(8);
ellipse(170, 175, 350, 80, 6, 16);
ellipse(176, 158, 170, 270, 40, 22);
ellipse(132, 160, 10, 85, 40, 6);
ellipse(152, 165, 280, 60, 12, 12);
ellipse(150, 165, 110, 190, 11, 11);
setcolor(5);
ellipse(156, 167, 290, 70, 13, 13);
ellipse(148, 163, 120, 180, 11, 11);
fillellipse(151, 160, 4, 5);
fillellipse(159, 165, 1, 2);
setcolor(8);
line(135, 154, 127, 151);
line(139, 153, 130, 147);
line(144, 153, 139, 149);
line(136, 163, 130, 164);
line(140, 167, 134, 170);
line(144, 171, 139, 173);
setcolor(7);
ellipse(107, 211, 320, 70, 5, 15);
ellipse(110, 246, 90, 180, 3, 24);
ellipse(172, 249, 90, 180, 3, 22);
ellipse(179, 242, 270, 335, 30, 19);
ellipse(139, 265, 190, 255, 33, 45);
ellipse(193, 265, 270, 300, 85, 65);
ellipse(235, 304, 350, 120, 58, 62);
setcolor(7);
ellipse(264, 290, 165, 300, 35, 50);
ellipse(276, 395, 335, 75, 20, 65);
ellipse(290, 425, 360, 67, 45, 120);
ellipse(314, 424, 190, 350, 22, 5);
ellipse(300, 315, 5, 175, 8, 5);
ellipse(214, 320, 220, 299, 15, 15);
line(221, 334, 216, 365);
ellipse(245, 378, 160, 269, 30, 40);
ellipse(245, 392, 275, 50, 10, 26);
line(249, 335, 245, 370);
line(245, 370, 251, 372);
setcolor(7);
line(126, 307, 110, 349);
ellipse(55, 87, 283, 308, 80, 357);
ellipse(105, 27, 284, 317, 55, 420);
ellipse(95, 435, 185, 355, 23, 5);
ellipse(150, 279, 20, 180, 14, 14);
ellipse(174, 270, 190, 227, 40, 60);
ellipse(253, 266, 190, 209, 90, 55);
ellipse(191, 314, 180, 260, 45, 50);
ellipse(148, 354, 0, 50, 48, 53);
ellipse(185, 353, 275, 355, 10, 10);
ellipse(302, 287, 190, 209, 140, 55);
ellipse(185, 305, 275, 45, 15, 14);
setcolor(15);
ellipse(169, 258, 358, 90, 10, 15);
ellipse(135, 239, 290, 330, 40, 20);
ellipse(144, 250, 295, 330, 40, 20);
setcolor(13);
ellipse(104, 255, 62, 180, 7, 8);
ellipse(106, 256, 180, 290, 9, 15);
ellipse(141, 258, 0, 100, 6, 8);
setcolor(13);
ellipse(122, 260, 0, 360, 5, 7);
line(118, 255, 108, 248);
line(127, 255, 138, 250);
line(118, 265, 109, 271);
line(127, 265, 138, 270);
line(147, 265, 147, 259);
setcolor(8);
ellipse(286, 321, 330, 105, 49, 69);
ellipse(316, 265, 50, 160, 62, 58);
setcolor(7);
ellipse(325, 270, 55, 155, 72, 50);
ellipse(310, 345, 55, 120, 95, 110);
line(365, 254, 408, 285);
ellipse(253, 331, 30, 65, 130, 80);
ellipse(501, 256, 205, 239, 150, 80);
ellipse(525, 220, 198, 240, 200, 160);
ellipse(427, 325, 180, 275, 55, 66);
ellipse(431, 375, 270, 39, 26, 16);
ellipse(430, 240, 217, 260, 120, 150);
ellipse(435, 275, 215, 265, 107, 128);
ellipse(420, 275, 215, 258, 110, 131);
setcolor(8);
ellipse(260, 355, 360, 55, 165, 165);
ellipse(435, 359, 170, 270, 10, 20);
ellipse(440, 370, 245, 65, 12, 10);
ellipse(437, 380, 300, 70, 25, 20);
ellipse(405, 334, 230, 293, 112, 70);
//{¬ҐвЄ }
setcolor(5);
ellipse(245, 260, 20, 220, 4, 5);
ellipse(265, 260, 190, 280, 23, 20);
ellipse(269, 277, 260, 50, 3, 3);
ellipse(248, 275, 325, 70, 2, 17);
ellipse(257, 286, 180, 10, 7, 7);
ellipse(259, 284, 0, 180, 5, 8);
ellipse(257, 284, 180, 50, 3, 3);
}
function pony_4() {
//http://tabun.everypony.ru/blog/20224.html
setcolor(13);
ellipse(237, 55, 25, 100, 63, 48);
ellipse(237, 60, 100, 195, 63, 53);
line(177, 75, 198, 140);
ellipse(258, 99, 200, 233, 50, 80);
ellipse(194, 156, 310, 50, 7, 20);
ellipse(195, 166, 180, 290, 7, 7);
ellipse(192, 166, 10, 180, 4, 5);
ellipse(203, 170, 180, 330, 24, 25);
ellipse(188, 167, 10, 190, 9, 10);
ellipse(268, 72, 49, 140, 35, 30);
ellipse(228, 93, 55, 220, 22, 50);
ellipse(310, 260, 45, 80, 26, 196);
ellipse(344, 148, 160, 180, 50, 90);
ellipse(344, 175, 170, 280, 15, 25);
ellipse(345, 192, 300, 100, 4, 9);
ellipse(346, 200, 270, 100, 10, 18);
ellipse(345, 159, 188, 270, 52, 60);
//{mane+}
ellipse(192, 175, 330, 62, 19, 35);
ellipse(215, 60, 130, 210, 10, 30);
ellipse(224, 59, 19, 130, 22, 30);
ellipse(210, 59, 15, 95, 40, 45);
ellipse(225, 44, 0, 70, 30, 40);
ellipse(255, 33, 342, 48, 20, 27);
ellipse(265, 30, 320, 20, 20, 20);
ellipse(307, 103, 320, 25, 15, 45);
ellipse(327, 185, 150, 240, 16, 29);
//{ear}
setcolor(14);
ellipse(300, 65, 100, 165, 10, 36);
ellipse(299, 58, 310, 90, 15, 28);
ellipse(302, 56, 315, 50, 5, 15);
//{face}
ellipse(257, 86, 122, 268, 35, 45);
ellipse(273, 80, 295, 0, 36, 49);
//{body}
ellipse(306, 156, 150, 175, 15, 70);
ellipse(233, 139, 330, 18, 22, 22);
ellipse(289, 167, 280, 0, 2, 35);
ellipse(262, 214, 185, 270, 20, 20);
//{left leg up}
ellipse(241, 167, 20, 140, 15, 25);
ellipse(243, 179, 135, 245, 19, 40);
ellipse(231, 176, 295, 325, 25, 42);
ellipse(238, 196, 250, 290, 9, 20);
ellipse(260, 160, 190, 230, 15, 21);
//{right leg up}
ellipse(266, 175, 70, 140, 13, 26);
ellipse(269, 172, 5, 80, 9, 22);
ellipse(268, 185, 130, 250, 19, 35);
ellipse(264, 199, 250, 290, 9, 20);
ellipse(257, 179, 295, 340, 24, 43);
ellipse(282, 174, 190, 262, 12, 21);
ellipse(274, 174, 290, 345, 12, 21);
//{right leg down}
ellipse(278, 224, 295, 40, 15, 33);
ellipse(290, 275, 65, 110, 12, 23);
ellipse(288, 259, 320, 40, 10, 9);
ellipse(301, 316, 110, 170, 16, 55);
ellipse(248, 297, 300, 340, 40, 30);
ellipse(266, 303, 190, 275, 12, 20);
ellipse(279, 315, 119, 170, 25, 55);
ellipse(274, 254, 180, 260, 15, 15);
ellipse(274, 260, 110, 170, 15, 45);
//{left leg down}
ellipse(250, 232, 150, 280, 17, 32);
ellipse(268, 296, 140, 175, 25, 50);
ellipse(260, 293, 180, 250, 17, 20);
//{left eye}
setcolor(7);
ellipse(236, 84, 9, 175, 8, 15);
ellipse(223, 84, 270, 0, 5, 5);
ellipse(223, 82, 275, 0, 5, 5);
ellipse(224, 78, 276, 0, 4, 5);
//{right eye}
ellipse(284, 81, 10, 179, 12, 16);
ellipse(305, 79, 180, 280, 9, 6);
ellipse(301, 78, 180, 351, 5, 4);
ellipse(299, 75, 200, 350, 4, 3);
//{nose}
setcolor(5);
ellipse(258, 100, 60, 120, 15, 10);
ellipse(254, 95, 190, 245, 5, 5);
ellipse(261, 95, 315, 0, 4, 4);
//{mouth}
setcolor(14);
ellipse(258, 104, 200, 0, 9, 5);
ellipse(262, 103, 200, 270, 12, 16);
ellipse(263, 103, 260, 350, 4, 15);
setcolor(12);
ellipse(261, 126, 70, 110, 9, 11);
//{right wing}
setcolor(14);
ellipse(257, 57, 290, 351, 95, 100);
ellipse(355, 95, 20, 120, 9, 22);
ellipse(275, 65, 330, 350, 90, 105);
ellipse(240, 66, 320, 345, 149, 80);
ellipse(388, 107, 34, 120, 9, 22);
ellipse(254, 72, 313, 347, 145, 90);
ellipse(358, 109, 260, 316, 40, 30);
ellipse(393, 132, 0, 150, 7, 5);
ellipse(349, 51, 260, 310, 80, 105);
ellipse(331, 167, 350, 80, 25, 12);
ellipse(333, 168, 295, 350, 23, 6);
line(342, 173, 291, 166);
ellipse(344, 180, 80, 110, 25, 70);
ellipse(250, 112, 330, 0, 100, 50);
ellipse(343, 153, 50, 110, 13, 17);
ellipse(328, 141, 255, 0, 23, 12);
ellipse(320, 163, 0, 75, 10, 10);
ellipse(320, 158, 280, 330, 12, 12);
//{left wing}
setcolor(14);
ellipse(182, 62, 190, 270, 15, 30);
ellipse(171, 76, 80, 110, 9, 10);
ellipse(158, 215, 60, 85, 60, 120);
ellipse(207, 93, 195, 255, 47, 40);
ellipse(167, 106, 120, 160, 6, 11);
//{tail}
setcolor(13);
ellipse(290, 235, 60, 90, 35, 40);
ellipse(313, 257, 0, 50, 50, 50);
ellipse(323, 258, 290, 0, 40, 100);
ellipse(342, 370, 120, 250, 10, 20);
ellipse(356, 378, 220, 50, 23, 16);
ellipse(349, 386, 270, 50, 35, 27);
ellipse(349, 358, 165, 270, 57, 55);
ellipse(286, 311, 310, 68, 12, 43);
//{tail+}
setcolor(13);
ellipse(273, 276, 325, 70, 50, 77);
ellipse(333, 362, 130, 230, 29, 53);
ellipse(290, 174, 300, 340, 75, 194);
ellipse(355, 374, 140, 230, 37, 48);
//{cutiemark}
setcolor(2);
line(284, 222, 287, 217);
line(287, 217, 288, 213);
line(287, 217, 291, 215);
line(275, 224, 276, 231);
line(275, 224, 272, 220);
line(275, 224, 276, 219);
line(287, 234, 283, 240);
line(287, 234, 287, 230);
line(287, 234, 290, 232);
setcolor(13);
ellipse(284, 215, 320, 240, 2, 3);
ellipse(282, 219, 90, 270, 4, 3);
ellipse(286, 223, 150, 60, 3, 3);
ellipse(288, 220, 300, 150, 4, 3);
ellipse(273, 226, 30, 270, 2, 3);
ellipse(273, 230, 110, 0, 2, 3);
ellipse(277, 226, 280, 180, 2, 3);
ellipse(278, 231, 200, 90, 2, 3);
ellipse(284, 233, 350, 200, 2, 3);
ellipse(281, 237, 80, 310, 3, 2);
ellipse(284, 241, 160, 10, 2, 3);
ellipse(288, 237, 260, 100, 3, 2);
}
<canvas id="screen"></canvas>
body {
background: #222;
}
#screen {
background: #000;
position: absolute;
top: 0px;
left: 50%;
margin: 0px 0 0 -320px;
width: 640px;
height: 480px;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment