new section on skyscrapers
This commit is contained in:
parent
244e1af270
commit
0357b8fadc
3 changed files with 69 additions and 2 deletions
|
@ -759,14 +759,79 @@ utils.foreach() function...
|
||||||
);
|
);
|
||||||
|
|
||||||
#### Exercise
|
#### Exercise
|
||||||
Try changing the above function so that different sounds are played instead of a Cat's Meow.
|
Try changing the above function so that different sounds are played
|
||||||
You'll need to lookup the [CraftBukkit API's Sound class][soundapi] to see all of the possible sounds that can be played.
|
instead of a Cat's Meow. You'll need to lookup the [CraftBukkit API's
|
||||||
|
Sound class][soundapi] to see all of the possible sounds that can be
|
||||||
|
played.
|
||||||
|
|
||||||
Loops are a key part of programming in any language. Javascript
|
Loops are a key part of programming in any language. Javascript
|
||||||
provides `for` and `while` statements for looping and many javascript
|
provides `for` and `while` statements for looping and many javascript
|
||||||
libraries also provide their own custom looping functions. You should
|
libraries also provide their own custom looping functions. You should
|
||||||
use what you feel most comfortable with.
|
use what you feel most comfortable with.
|
||||||
|
|
||||||
|
#### Putting `for` loops to use - Building a Skyscraper
|
||||||
|
|
||||||
|
For loops can be used to build enormous structures. In this next
|
||||||
|
exercise I'm going to use a for loop to build a skyscraper. This
|
||||||
|
skyscraper will be made of Glass and Steel (just like most skyscrapers
|
||||||
|
in real-life). The first thing to do is see what a single floor of
|
||||||
|
the skyscraper will look like. Place a block (of any type) where you
|
||||||
|
want to eventually build the skyscraper, then while your cursor is
|
||||||
|
pointing at the block, type the following into the in-game prompt...
|
||||||
|
|
||||||
|
/js var drone = box(blocks.iron,20,1,20).up().box0(blocks.glass_pane,20,3,20).up(3)
|
||||||
|
|
||||||
|
... you should a large (20x20) iron floor with 3 block high glass all around.
|
||||||
|
|
||||||
|
![skyscraper-floor.png][img_ssf]
|
||||||
|
|
||||||
|
... A skyscraper with just a single floor isn't much of a skyscraper
|
||||||
|
so the next step is to repeat this over and over. This is where `for`
|
||||||
|
loops come in. Open your favorite text editor and create a new file in
|
||||||
|
your js-plugins/{your-name} directory called `myskyscraper.js`, then
|
||||||
|
type the following...
|
||||||
|
|
||||||
|
function skyscraper(floors)
|
||||||
|
{
|
||||||
|
floors = floors || 10; // default number of floors is 10
|
||||||
|
this.chkpt('skyscraper'); // saves the drone position so it can return there later
|
||||||
|
for (var i = 0; i < floors; i++)
|
||||||
|
{
|
||||||
|
this.box(blocks.iron,20,1,20).up().box0(blocks.glass_pane,20,3,20).up(3);
|
||||||
|
}
|
||||||
|
return this.move('skyscraper'); // return to where we started
|
||||||
|
};
|
||||||
|
|
||||||
|
load("../drone/drone.js");
|
||||||
|
Drone.extend('skyscraper',skyscraper);
|
||||||
|
|
||||||
|
... so this takes a little explaining. First I create a new function
|
||||||
|
called skyscraper that will take a single parameter `floors` so that
|
||||||
|
when you eventually call the `skyscraper()` function you can tell it
|
||||||
|
how many floors you want built. The first statement in the function
|
||||||
|
`floors = floors || 10;` just sets floors to 10 if no parameter is
|
||||||
|
supplied. The next statement `this.chkpt('myskyscraper')` just saves
|
||||||
|
the position of the Drone so it can eventually return to where it
|
||||||
|
started when finished building (I don't want the drone stranded atop
|
||||||
|
the skyscraper when it's finished). Then comes the `for` loop. I loop
|
||||||
|
from 0 to `floors` and each time through the loop I build a single
|
||||||
|
floor. When the loop is done I return the drone to where it started.
|
||||||
|
The last 2 lines load the drone module (it must be loaded before I can
|
||||||
|
add new features to it) and the last line extends the 'Drone' object
|
||||||
|
so that now it can build skyscrapers among other things. Once you've
|
||||||
|
typed in the above code and saved the file, type `reload` in your
|
||||||
|
in-game prompt, then type ...
|
||||||
|
|
||||||
|
/js skyscraper(2);
|
||||||
|
|
||||||
|
... A two-story skyscraper should appear. If you're feeling
|
||||||
|
adventurous, try a 10 story skyscraper! Or a 20 story skyscraper!
|
||||||
|
Minecraft has a height limit (256 blocks from bedrock) beyond which
|
||||||
|
you can't build. If you try to build higher than this then building
|
||||||
|
will stop at that height.
|
||||||
|
|
||||||
|
![skyscraper][img_ss]
|
||||||
|
|
||||||
TODO
|
TODO
|
||||||
### Making Decisions
|
### Making Decisions
|
||||||
TODO
|
TODO
|
||||||
|
@ -792,6 +857,8 @@ TODO
|
||||||
[img_2boxes]: img/ypgpm_2boxes.png
|
[img_2boxes]: img/ypgpm_2boxes.png
|
||||||
[img_cr]: img/ypgpm_mc_cr.png
|
[img_cr]: img/ypgpm_mc_cr.png
|
||||||
[img_greet]: img/ypgpm_greet.png
|
[img_greet]: img/ypgpm_greet.png
|
||||||
|
[img_ssf]: img/skyscraper_floor.png
|
||||||
|
[img_ss]: img/skyscraper.png
|
||||||
|
|
||||||
## Categories
|
## Categories
|
||||||
Minecraft, Programming, ScriptCraft
|
Minecraft, Programming, ScriptCraft
|
||||||
|
|
BIN
docs/img/skyscraper.png
Normal file
BIN
docs/img/skyscraper.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 65 KiB |
BIN
docs/img/skyscraper_floor.png
Normal file
BIN
docs/img/skyscraper_floor.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 80 KiB |
Reference in a new issue