randInt() in CodeCraft
We use random integers a lot in CodeCraft. The function we defined randInt(min, max)
is used to generate random integers.
Example 1: Make an array of random integers:
let nums = [];
for (let i = 0; i < 5; i++) {
nums.push(randInt(1,20));
}
console.log(nums);
Each time you run the above code, you should get a different set of numbers such as:
[11, 13, 8, 10, 10]
[16, 9, 16, 18, 8]
Example 2: build blocks at random locations with random material
Generating blocks at random locations would be easy with randInt()
. For example, if you use randInt(1, 20)
as the input value for the x
coordinate, the block will show up at random x
locations from 1 to 20.
To build blocks with random materials, let's use function block_m(x, y, z, m)
where m
is a number indicating the materials.
# random x, y, z, m
# 10 blocks with different materials at different locations
for (let i = 0; i < 10; i++) {
block_m(randInt(1, 20), randInt(1, 20), randInt(-20, -10), randInt(1, 88) );
}
Each time you run the above code you will get a set of 10 different blocks at different locations.
Example 3: Random columns
You can also generate columns of random materials with random heights. Let's use the function column_m()
:
for (let i = 0; i < 10; i++) {
column_m(i, -10, randInt(1, 20), randInt(1, 16));
}
Example 3 generated ten random colored columns with random heights.
Run all the programs a few times and see what you get! Can you explain why some of these columns below have different color segments?
Example 4: random way to go
In this example we will grow a random plant. A random integer is used to control which way it grows into. 0: left, 1: right, 2: up.
// random direction
let x = 0;
let y = 1;
for (let i = 0; i < 20; i++) {
block(x, y, -30, "box_brown");
let direction = randInt(0, 3);
if (direction == 0) {
x -= 1;
}
else if (direction == 1) {
x += 1;
}
else {
y += 1;
}
}
Run the code three times, each time using a different initial x value: -5, 0, 5
. We get 3 random "plants":