directory reorg - moving non-core javascript files to examples directory
This commit is contained in:
parent
718475d7b0
commit
5218f66659
8 changed files with 206 additions and 0 deletions
52
example_scripts/castle.js
Normal file
52
example_scripts/castle.js
Normal file
|
@ -0,0 +1,52 @@
|
|||
load($SCRIPT_DIR + "/fort.js");
|
||||
//
|
||||
// a castle is just a big wide fort with 4 taller forts at each corner
|
||||
//
|
||||
function castle (side, height, drone)
|
||||
{
|
||||
//
|
||||
// use sensible default parameter values
|
||||
// if no parameters are supplied
|
||||
//
|
||||
if (typeof drone == "undefined")
|
||||
drone = new Drone();
|
||||
if (typeof side == "undefined")
|
||||
side = 24;
|
||||
if (typeof height == "undefined")
|
||||
height = 10;
|
||||
if (height < 8 || side < 20)
|
||||
throw new java.lang.RuntimeException("Castles must be at least 20 wide X 8 tall");
|
||||
//
|
||||
// remember where the drone is so it can return 'home'
|
||||
//
|
||||
drone.chkpt('castle');
|
||||
//
|
||||
// how big the towers at each corner will be...
|
||||
//
|
||||
var towerSide = 10;
|
||||
var towerHeight = height+4;
|
||||
|
||||
//
|
||||
// the main castle building will be front and right of the first tower
|
||||
//
|
||||
drone.fwd(towerSide/2).right(towerSide/2);
|
||||
//
|
||||
// the castle is really just a big fort with 4 smaller 'tower' forts at each corner
|
||||
//
|
||||
drone = fort(side,height,drone);
|
||||
//
|
||||
// move back to start position
|
||||
//
|
||||
drone.move('castle');
|
||||
//
|
||||
// now place 4 towers at each corner (each tower is another fort)
|
||||
//
|
||||
for (var corner = 0; corner < 4; corner++)
|
||||
{
|
||||
// construct a 'tower' fort
|
||||
fort(towerSide,towerHeight,drone);
|
||||
// move forward the length of the castle then turn right
|
||||
drone.fwd(side+towerSide-1).turn();
|
||||
}
|
||||
return drone.move('castle');
|
||||
}
|
93
example_scripts/cottage.js
Normal file
93
example_scripts/cottage.js
Normal file
|
@ -0,0 +1,93 @@
|
|||
//
|
||||
// need to use the drone module to create buildings easily
|
||||
// it can be done using calls to putBlock(), putSign(), getPlayerPos() and getMousePos()
|
||||
// but it's easier to use the Drone class
|
||||
// $SCRIPT_DIR is a special javascript variable whose value is the directory where the
|
||||
// current script resides.
|
||||
// $SCRIPT is a special javascript variable whose value is the full name of the current script.
|
||||
//
|
||||
var scriptDir = $SCRIPT_DIR;
|
||||
load(scriptDir + "/drone.js"); // assumes cottage.js and drone.js are in same directory
|
||||
//
|
||||
// usage:
|
||||
// [1] to build a cottage at the player's current location or the cross-hairs location...
|
||||
//
|
||||
// /js cottage();
|
||||
//
|
||||
// [2] to build a cottage using an existing drone...
|
||||
//
|
||||
// /js cottage(drone);
|
||||
//
|
||||
|
||||
function cottage(/* optional */ drone)
|
||||
{
|
||||
if (typeof drone == "undefined"){
|
||||
drone = new Drone();
|
||||
}
|
||||
drone.chkpt('cottage')
|
||||
.box0(48,7,2,6) // 4 walls
|
||||
.right(3).door() // door front and center
|
||||
.up(1).left(2).box(102) // windows to left and right
|
||||
.right(4).box(102)
|
||||
.left(5).up().prism0(53,7,6);
|
||||
//
|
||||
// put up a sign near door.
|
||||
//
|
||||
drone.down().right(4).sign(["Home","Sweet","Home"],68);
|
||||
|
||||
return drone.move('cottage');
|
||||
};
|
||||
//
|
||||
// a more complex script that builds an tree-lined avenue with
|
||||
// cottages on both sides.
|
||||
//
|
||||
function cottage_road(numberCottages,/* optional */ drone)
|
||||
{
|
||||
if (typeof numberCottages == "undefined"){
|
||||
numberCottages = 6;
|
||||
}
|
||||
if (typeof drone == "undefined"){
|
||||
drone = new Drone();
|
||||
}
|
||||
var i=0, distanceBetweenTrees = 11;
|
||||
//
|
||||
// step 1 build the road.
|
||||
//
|
||||
var cottagesPerSide = Math.floor(numberCottages/2);
|
||||
drone
|
||||
.chkpt("cottage_road") // make sure the drone's state is saved.
|
||||
.box(43,3,1,cottagesPerSide*(distanceBetweenTrees+1)) // build the road
|
||||
.up().right() // now centered in middle of road
|
||||
.chkpt("cr"); // will be returning to this position later
|
||||
|
||||
//
|
||||
// step 2 line the road with trees
|
||||
//
|
||||
for (; i < cottagesPerSide+1;i++){
|
||||
drone
|
||||
.left(5).oak()
|
||||
.right(10).oak()
|
||||
.left(5) // return to middle of road
|
||||
.fwd(distanceBetweenTrees+1); // move forward.
|
||||
}
|
||||
drone.move("cr").back(6); // move back 1/2 the distance between trees
|
||||
|
||||
// this function builds a path leading to a cottage.
|
||||
function pathAndCottage(d){
|
||||
return cottage(d.down().box(43,1,1,5).fwd(5).left(3).up());
|
||||
};
|
||||
//
|
||||
// step 3 build cottages on each side
|
||||
//
|
||||
for (i = 0;i < cottagesPerSide; i++)
|
||||
{
|
||||
drone.fwd(distanceBetweenTrees+1).chkpt("r"+i);
|
||||
// build cottage on left
|
||||
pathAndCottage(drone.turn(3)).move("r"+i);
|
||||
// build cottage on right
|
||||
pathAndCottage(drone.turn()).move("r"+i);
|
||||
}
|
||||
// return drone to where it was at start of function
|
||||
return drone.move("cottage_road");
|
||||
}
|
||||
|
61
example_scripts/fort.js
Normal file
61
example_scripts/fort.js
Normal file
|
@ -0,0 +1,61 @@
|
|||
load($SCRIPT_DIR + "/drone.js");
|
||||
//
|
||||
// constructs a medieval fort
|
||||
//
|
||||
function fort(side, height, drone)
|
||||
{
|
||||
if (typeof drone == "undefined")
|
||||
drone = new Drone();
|
||||
if (typeof side == "undefined")
|
||||
side = 18;
|
||||
if (typeof height == "undefined")
|
||||
height = 6;
|
||||
if (height < 4 || side < 10)
|
||||
throw new java.lang.RuntimeException("Forts must be at least 9 wide X 4 tall");
|
||||
// make sure side is even
|
||||
if (side%2)
|
||||
side++;
|
||||
var brick = 98;
|
||||
//
|
||||
// build walls.
|
||||
//
|
||||
drone.chkpt('fort').box0(brick,side,height-1,side);
|
||||
//
|
||||
// build turrets
|
||||
//
|
||||
drone.up(height-1);
|
||||
for (i = 0;i <= 3;i++){
|
||||
var turret = [];
|
||||
drone.box(brick) // solid brick corners
|
||||
.up().box('50:5').down() // light a torch on each corner
|
||||
.fwd();
|
||||
turret.push('109:'+ Drone.PLAYER_STAIRS_FACING[drone.dir]);
|
||||
turret.push('109:'+ Drone.PLAYER_STAIRS_FACING[(drone.dir+2)%4]);
|
||||
drone.box(turret,1,1,side-2).fwd(side-2).turn();
|
||||
}
|
||||
//
|
||||
// build battlements
|
||||
//
|
||||
drone.move('fort');
|
||||
drone.up(height-2).fwd().right().box('44:5',side-2,1,side-2);
|
||||
var battlementWidth = 3;
|
||||
if (side <= 12)
|
||||
battlementWidth = 2;
|
||||
|
||||
drone.fwd(battlementWidth).right(battlementWidth)
|
||||
.box(0,side-((1+battlementWidth)*2),1,side-((1+battlementWidth)*2));
|
||||
//
|
||||
// add door
|
||||
//
|
||||
var torch = '50:' + Drone.PLAYER_TORCH_FACING[drone.dir];
|
||||
drone.move('fort').right((side/2)-1).door2() // double doors
|
||||
.back().left().up().box(torch) // left torch
|
||||
.right(3).box(torch); // right torch
|
||||
//
|
||||
// add ladder up to battlements
|
||||
//
|
||||
var ladder = '65:' + Drone.PLAYER_SIGN_FACING[(drone.dir+2)%4];
|
||||
drone.move('fort').right((side/2)-3).fwd(1) // move inside fort
|
||||
.box(ladder, 1,height-1,1);
|
||||
return drone.move('fort');
|
||||
};
|
BIN
screenshots/2012-12-27_13.25.06.png
Normal file
BIN
screenshots/2012-12-27_13.25.06.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 119 KiB |
BIN
screenshots/2012-12-28_13.38.07.png
Normal file
BIN
screenshots/2012-12-28_13.38.07.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 154 KiB |
BIN
screenshots/2012-12-28_23.04.33.png
Normal file
BIN
screenshots/2012-12-28_23.04.33.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 202 KiB |
BIN
screenshots/castles-interlocking.png
Normal file
BIN
screenshots/castles-interlocking.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 470 KiB |
BIN
screenshots/forts-castles.png
Normal file
BIN
screenshots/forts-castles.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 259 KiB |
Reference in a new issue