scene_main = ()=>{
const levels = [
[
"################################################################",
"#==============================================================#",
"#==============================================================#",
"#⟶⟶⟶⟶⌉=========================================================#",
"#====V=========================================================#",
"#==============================================================#",
"#==============================================================#",
"#==============================================================#",
"#==============================================================#",
"#==============================================================#",
"#==============================================================#",
"#==============================================================#",
"#==============================================================#",
"#==============================================================#",
"#==============================================================#",
"#==============================================================#",
"#==============================================================#",
"#==============================================================#",
"#==============================================================#",
"#==============================================================#",
"#==============================================================#",
"#==============================================================#",
"#==============================================================#",
"#==============================================================#",
"#==============================================================#",
"#==============================================================#",
"#==============================================================#",
"#==============================================================#",
"#==============================================================#",
"#==============================================================#",
"#==============================================================#",
"#==============================================================#",
"#==============================================================#",
"#==============================================================#",
"#==============================================================#",
"#==============================================================#",
"#==============================================================#",
"#==============================================================#",
"#==============================================================#",
"#==============================================================#",
"#==============================================================#",
"#==============================================================#",
"#==============================================================#",
"#==============================================================#",
"#==============================================================#",
"#==============================================================#",
"#==============================================================#",
"#==============================================================#",
"#==============================================================#",
"#==============================================================#",
"#==============================================================#",
"#==============================================================#",
"#==============================================================#",
"#==============================================================#",
"#==============================================================#",
"#==============================================================#",
"#==============================================================#",
"#==============================================================#",
"#==============================================================#",
"#==============================================================#",
"#==============================================================#",
"#==============================================================#",
"#==============================================================#",
"#==============================================================#",
"#==============================================================#",
"#==============================================================#",
"#==============================================================#",
"#==============================================================#",
"#==============================================================#",
"#==============================================================#",
"#==============================================================#",
"#==============================================================#",
"################################################################"
],
[
" ",
" b ",
" ",
" ",
" p ",
" ",
" ",
" b ",
" ",
" ",
]
];
k.addLevel(levels[0],{
width: 16,
height: 16,
pos: k.vec2(10, 10),
"=": [
k.sprite("grass")
],
"#":[
k.sprite("tree"),
k.solid()
],
"^":[
k.sprite("bigtree"),
k.solid()
],
"⌉":[
k.sprite("path_left_down"),
],
"⟶":[
k.sprite("path_left_right")
],
"V": [
k.sprite("path_up_down")
]
});
k.addLevel(levels[1],{
width: 16,
height: 16,
pos: k.vec2(10, 10),
"p":[
k.sprite("player"),
"player",
k.solid()
],
"b":[
k.sprite("boo"),
k.solid(),
"enemy"
]
});
const player = k.get("player")[0];
// camera position follow player
player.action(() => {
k.camPos(player.pos);
});
// add life meter
const scorebox = k.add([
k.rect(100,11),
k.pos(12,12),
k.layer("ui"),
k.color(0,0,0)
])
const score = k.add([
k.text("Life: ****"),
k.pos(13, 13),
k.layer("ui"),
k.color(1,1,1),
{
label: "Life:",
value: "****",
},
]);
const enemy = k.get("enemy")[0];
k.keyPress("left", () => {
player.moveLeft();
const targets = player.resolve()
if (targets.length
&& targets.find(t => t.obj.gridPos.x === player.gridPos.x && t.obj.gridPos.y === player.gridPos.y)
) {
player.moveRight()
}
});
k.keyPress("right", () => {
player.moveRight();
// handle tile collision
const targets = player.resolve()
if (targets.length
&& targets.find(t => t.obj.gridPos.x === player.gridPos.x && t.obj.gridPos.y === player.gridPos.y)
) {
player.moveLeft()
}
});
k.keyPress("up", () => {
player.moveUp();
// handle tile collision
const targets = player.resolve()
if (targets.length
&& targets.find(t => t.obj.gridPos.x === player.gridPos.x && t.obj.gridPos.y === player.gridPos.y)
) {
player.moveDown()
}
});
k.keyPress("down", () => {
player.moveDown();
const targets = player.resolve()
if (targets.length
&& targets.find(t => t.obj.gridPos.x === player.gridPos.x && t.obj.gridPos.y === player.gridPos.y)
) {
player.moveUp()
}
});
k.keyPress("space", () => {
if (music.paused()) {
music.play();
} else {
music.pause();
}
});
k.action("enemy", (e)=>{
//const chance = getRandomInt(0,100);
const chance = k.rand(0,100);
if(chance > 98){
const dir = Math.floor(k.rand(1,5));
console.log("dir", dir)
switch(dir){
case 1:
e.moveUp();
break;
case 2:
e.moveDown();
break;
case 3:
e.moveLeft();
break;
case 4:
e.moveRight()
break;
}
}
});
// play sound
const music = k.play("bgsound", {
loop: true
});
music.volume(0.3)
k.volume(0.3)
// layers stuff
k.layers([
"bg",
"obj",
"ui"
], "obj"); // obj is "default" layer
// don't move the UI in the view port
k.camIgnore([ "ui", ]);
}