2022-04-19 23:11:41 +00:00
|
|
|
var world = Array.from(Array(24), () => new Array(24));
|
|
|
|
for (x = 0; x < 24; x++){
|
|
|
|
for (y = 0; y < 24; y++){
|
|
|
|
world[x][y] = {type: 0, structure: 0}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
2022-04-19 21:44:33 +00:00
|
|
|
window.onload = function () {
|
|
|
|
|
|
|
|
// GET THE IMAGE.
|
2022-04-19 22:20:17 +00:00
|
|
|
var rock = new Image();
|
|
|
|
rock.src = 'rock.png';
|
2022-04-19 21:44:33 +00:00
|
|
|
var background = new Image();
|
|
|
|
var grass = new Image();
|
|
|
|
grass.src = 'grass.png'
|
|
|
|
var sea = new Image();
|
|
|
|
sea.src = 'sea.png'
|
|
|
|
var hills = new Image();
|
|
|
|
hills.src = 'hills.png'
|
2022-04-19 22:20:17 +00:00
|
|
|
tiles = [grass,hills,sea,rock];
|
2022-04-19 21:44:33 +00:00
|
|
|
background.src = 'background.png';
|
|
|
|
// WAIT TILL IMAGE IS LOADED.
|
2022-04-19 22:20:17 +00:00
|
|
|
background.onload = function () {
|
|
|
|
fill_canvas(); // FILL THE CANVAS WITH THE IMAGE.
|
2022-04-19 21:44:33 +00:00
|
|
|
}
|
|
|
|
|
2022-04-19 22:20:17 +00:00
|
|
|
function fill_canvas() {
|
2022-04-19 21:44:33 +00:00
|
|
|
// CREATE CANVAS CONTEXT.
|
|
|
|
var canvas = document.getElementById('canvas');
|
2022-04-19 22:20:17 +00:00
|
|
|
canvas.width = 576;
|
|
|
|
canvas.height = 576;
|
2022-04-19 21:44:33 +00:00
|
|
|
var ctx = canvas.getContext('2d');
|
|
|
|
|
|
|
|
|
2022-04-19 23:11:41 +00:00
|
|
|
generateWorld()
|
2022-04-19 21:44:33 +00:00
|
|
|
|
|
|
|
ctx.drawImage(background, 0, 0); // DRAW THE IMAGE TO THE CANVAS.
|
|
|
|
let x, y = 0
|
|
|
|
for(x = 0; x < getBlockDimensions()[0]; x++){
|
|
|
|
for(y = 0; y < getBlockDimensions()[1]; y++){
|
|
|
|
|
2022-04-19 23:11:41 +00:00
|
|
|
if (world[x][y].type == 0) {
|
|
|
|
|
2022-04-19 22:20:17 +00:00
|
|
|
ctx.drawImage(tiles[0], x*24,y*24)
|
2022-04-19 23:11:41 +00:00
|
|
|
} else if (world[x][y].type == 1) {
|
2022-04-19 22:20:17 +00:00
|
|
|
ctx.drawImage(tiles[2], x*24,y*24)
|
|
|
|
}
|
2022-04-19 23:11:41 +00:00
|
|
|
if (world[x][y].type == 2) {
|
2022-04-19 22:20:17 +00:00
|
|
|
ctx.drawImage(tiles[1], x*24,y*24)
|
|
|
|
}
|
2022-04-19 23:11:41 +00:00
|
|
|
if (world[x][y].structure == 1) {
|
|
|
|
ctx.drawImage(tiles[3], x*24,y*24)
|
|
|
|
}
|
2022-04-19 22:20:17 +00:00
|
|
|
|
2022-04-19 21:44:33 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
function getBlockDimensions(){
|
|
|
|
|
|
|
|
return [canvas.width/24, canvas.height/24]
|
|
|
|
}
|
|
|
|
|
|
|
|
function randomNumber(min, max) {
|
|
|
|
return Math.floor(Math.random() * (max - min) + min);
|
|
|
|
}
|
2022-04-19 23:11:41 +00:00
|
|
|
|
|
|
|
function generateWorld(){
|
|
|
|
let x, y = 0
|
|
|
|
noise.seed(Math.random())
|
|
|
|
for(x = 0; x < getBlockDimensions()[0]; x++){
|
|
|
|
for(y = 0; y < getBlockDimensions()[1]; y++){
|
|
|
|
|
|
|
|
var value = (noise.perlin2(x/3.0, y/3.0))*10;
|
|
|
|
if (value >= -3) {
|
|
|
|
world[x][y].type = 0
|
|
|
|
} else if (value < -3) {
|
|
|
|
world[x][y].type = 1
|
|
|
|
}
|
|
|
|
if (value > 1.4) {
|
|
|
|
world[x][y].type = 2
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
for (i = 0; i < 20; i){
|
|
|
|
x = randomNumber(0,24);
|
|
|
|
y = randomNumber(0,24);
|
|
|
|
if (world[x][y].type == 0) {
|
|
|
|
i++;
|
|
|
|
world[x][y].structure = 1
|
|
|
|
}
|
|
|
|
}
|
|
|
|
console.log(world)
|
|
|
|
}
|