242 lines
5.2 KiB
JavaScript
242 lines
5.2 KiB
JavaScript
'use strict';
|
|
/*global require*/
|
|
var Drone = require('drone'),
|
|
blocks = require('blocks');
|
|
/************************************************************************
|
|
### Drone.logojs() method
|
|
|
|
Constructs a large Javascript Logo (black JS on Yellow background)
|
|
See: https://raw.github.com/voodootikigod/logo.js/master/js.png
|
|
|
|
#### Parameters
|
|
|
|
* foregroundBlock (Optional - default is blocks.wool.gray)
|
|
* backgroundBlock (Optional - default is blocks.gold)
|
|
|
|
***/
|
|
function logojs(fg, bg) {
|
|
|
|
// foreground defaults to gray wool
|
|
if (typeof fg == "undefined")
|
|
fg = blocks.wool.gray;
|
|
// background defaults to gold blocks
|
|
if (typeof bg == "undefined")
|
|
bg = blocks.gold;
|
|
|
|
// Draw the sqaure
|
|
this
|
|
.chkpt('logojs-start')
|
|
.up()
|
|
.box(bg, 100, 100, 1);
|
|
|
|
// Draw the J, starting with the hook
|
|
this
|
|
.right(30)
|
|
.up(13)
|
|
.box(fg)
|
|
.right()
|
|
.down()
|
|
.box(fg, 1, 3, 1)
|
|
.right()
|
|
.down()
|
|
.box(fg, 1, 5, 1)
|
|
.right()
|
|
.down()
|
|
.box(fg, 1, 7, 1)
|
|
.right()
|
|
.box(fg, 1, 8, 1)
|
|
.right()
|
|
.down()
|
|
.box(fg, 1, 10, 1)
|
|
.right()
|
|
.box(fg, 1, 9, 1)
|
|
.right()
|
|
.box(fg, 1, 8, 1)
|
|
.right()
|
|
.down()
|
|
.box(fg, 2, 8, 1)
|
|
.right(2)
|
|
.box(fg, 4, 7, 1)
|
|
.right(4)
|
|
.box(fg, 1, 8, 1)
|
|
.right()
|
|
.box(fg, 1, 9, 1)
|
|
.right()
|
|
.up()
|
|
.box(fg, 3, 10, 1)
|
|
.right(3)
|
|
.up()
|
|
.box(fg, 2, 9, 1)
|
|
.right(2)
|
|
.up()
|
|
.box(fg, 2, 8, 1)
|
|
.right(2)
|
|
.up()
|
|
.box(fg, 1, 7, 1)
|
|
.right()
|
|
.up()
|
|
.box(fg, 1, 6, 1)
|
|
.right()
|
|
.up()
|
|
.box(fg, 1, 5, 1)
|
|
.right()
|
|
.up(2)
|
|
.box(fg, 1, 3, 1)
|
|
.left(9)
|
|
.up(3)
|
|
.box(fg, 10, 31, 1)
|
|
|
|
// Draw the S
|
|
// It's drawn in three strokes from bottom to top. Look for when
|
|
// it switches from .right() to .left() then back again
|
|
|
|
// move to starting point for S
|
|
.right(22).down(6)
|
|
// stroke 1
|
|
.box(fg)
|
|
.right().down()
|
|
.box(fg, 1, 3, 1)
|
|
.right().down()
|
|
.box(fg, 1, 5, 1)
|
|
.right().down()
|
|
.box(fg, 1, 7, 1)
|
|
.right()
|
|
.box(fg, 1, 8, 1)
|
|
.right().down()
|
|
.box(fg, 1, 10, 1)
|
|
.right()
|
|
.box(fg, 1, 9, 1)
|
|
.right()
|
|
.box(fg, 1, 8, 1)
|
|
.right().down()
|
|
.box(fg, 2, 8, 1)
|
|
.right(2)
|
|
.box(fg, 4, 7, 1)
|
|
.right(4)
|
|
.box(fg, 2, 8, 1)
|
|
.right(2)
|
|
.box(fg, 1, 9, 1)
|
|
.right().up()
|
|
.box(fg, 1, 9, 1)
|
|
.right()
|
|
.box(fg, 1, 10, 1)
|
|
.right()
|
|
.box(fg, 1, 22, 1)
|
|
.right().up()
|
|
.box(fg, 2, 20, 1)
|
|
.right().up()
|
|
.box(fg, 1, 18, 1)
|
|
.right().up()
|
|
.box(fg, 1, 17, 1)
|
|
.right().up()
|
|
.box(fg, 1, 15, 1)
|
|
.right().up()
|
|
.box(fg, 1, 13, 1)
|
|
.right().up(2)
|
|
.box(fg, 1, 9, 1)
|
|
.right().up(2)
|
|
.box(fg, 1, 5, 1)
|
|
// stroke 2
|
|
.left(8).up(4)
|
|
.box(fg, 1, 9, 1)
|
|
.left().up()
|
|
.box(fg, 1, 9, 1)
|
|
.left().up()
|
|
.box(fg, 1, 8, 1)
|
|
.left(2).up()
|
|
.box(fg, 2, 8, 1)
|
|
.left(2).up()
|
|
.box(fg, 2, 7, 1)
|
|
.left(2).up()
|
|
.box(fg, 2, 7, 1)
|
|
.left()
|
|
.box(fg, 1, 8, 1)
|
|
.left().up()
|
|
.box(fg, 1, 8, 1)
|
|
.left()
|
|
.box(fg, 1, 9, 1)
|
|
.left(2).up()
|
|
.box(fg, 2, 19, 1)
|
|
.left().up()
|
|
.box(fg, 1, 17, 1)
|
|
.left()
|
|
.box(fg, 1, 16, 1)
|
|
.left().up()
|
|
.box(fg, 1, 14, 1)
|
|
.left().up(2)
|
|
.box(fg, 1, 10, 1)
|
|
.left().up(2)
|
|
.box(fg, 1, 6, 1)
|
|
// stroke 3
|
|
.right(7).up(6)
|
|
.box(fg, 1, 8, 1)
|
|
.right().up()
|
|
.box(fg, 1, 7, 1)
|
|
.right().up()
|
|
.box(fg, 2, 7, 1)
|
|
.right(2).up()
|
|
.box(fg, 4, 6, 1)
|
|
.right(4).down()
|
|
.box(fg, 2, 7, 1)
|
|
.right().down()
|
|
.box(fg, 1, 8, 1)
|
|
.right()
|
|
.box(fg, 1, 7, 1)
|
|
.right().down()
|
|
.box(fg, 1, 8, 1)
|
|
.right().down()
|
|
.box(fg, 1, 9, 1)
|
|
.right().down()
|
|
.box(fg, 1, 9, 1)
|
|
.right().up()
|
|
.box(fg, 1, 8, 1)
|
|
.right().up()
|
|
.box(fg, 1, 6, 1)
|
|
.right().up()
|
|
.box(fg, 1, 5, 1)
|
|
.right().up()
|
|
.box(fg, 1, 3, 1)
|
|
.right().up()
|
|
.box(fg);
|
|
|
|
this.move('logojs-start');
|
|
|
|
return this;
|
|
}
|
|
//
|
|
// Makes a cube of JS logos!
|
|
// This is a wrapper for logojs() so look at its docs
|
|
//
|
|
// Until the drone can rotate on its Z axis we can't
|
|
// use logojs() to create top/bottom sides of cube.
|
|
//
|
|
function logojscube(fg, bg) {
|
|
|
|
this.chkpt('jscube-start')
|
|
.logojs(fg, bg);
|
|
|
|
this.move('jscube-start')
|
|
.right(100)
|
|
.turn(3)
|
|
.logojs(fg, bg);
|
|
|
|
this.move('jscube-start')
|
|
.right(100)
|
|
.turn(3)
|
|
.right(100)
|
|
.turn(3)
|
|
.logojs(fg, bg);
|
|
|
|
this.move('jscube-start')
|
|
.right(100)
|
|
.turn(3)
|
|
.right(100)
|
|
.turn(3)
|
|
.right(100)
|
|
.turn(3)
|
|
.logojs(fg, bg);
|
|
|
|
return this;
|
|
}
|
|
Drone.extend( logojs );
|
|
Drone.extend( logojscube );
|