diff --git a/game.js b/game.js index 4b69b436e027afca10f0c92661c3a98a04ef81bf..b8de109c5605bb4657fbb41e18b5e4b3907a5c49 100644 --- a/game.js +++ b/game.js @@ -444,39 +444,51 @@ var levelRef = { "y": 0, "w": 32, "h": 32, + "type": "blank" }, "tiles": [ { }, { "x": 32, + "type": "floor" }, { "x": 64, + "type": "wall" }, { "x": 96, + "type": "wall" + }, { "x": 128, + "type": "wall" }, { "x": 160, + "type": "wall" }, { "x": 192, + "type": "wall" }, { "x": 224, + "type": "wall" }, { "x": 256, + "type": "wall" }, { // player - "x": 32 + "x": 32, + "type": "floor" }, { // human - "x": 32 + "x": 32, + "type": "floor" } ] } @@ -590,6 +602,13 @@ player.step = () => { player.speed *= 0.009; + // check that the player won't go into a wall on the next step, and if so, stop. + for (let tile of gameRoom.level) { + if (player.x/64 > tile.x && player.x/64 < tile.x + tile.w && player.y/64 > tile.y && player.y/64 < tile.y + tile.h) { + player.speed = 0; + } + } + // keep the camera centered on the player c.setCamera(player.x - c.w/2, player.y - c.h/2); @@ -725,8 +744,56 @@ gameRoom.start = () =>{ for (let tile of gameRoom.level) { if (tile[0] === 9) { - player.x = tile[1]*64 - player.y = tile[2]*64 + player.x = (tile[1]*64)+32 + player.y = (tile[2]*64)+32 + } + if(tile[0]===10){ + let checkwall = (tx,ty) => { + for (let tile of gameRoom.level) { + if (levelRef.tiles[tile[0]].type == "wall" && tile[1] == tx && tile[2] == ty) { + return true; + } + } + return false; + } + + let pooman = new Entity("Human", (tile[1]*64),(tile[2]*64), images.mouse.cursor) + pooman.step = _=>{ + if (pooman.timer<=0){ + let director = Math.floor(Math.random()*4) + pooman.direction = director*90; + let tX = Math.floor(pooman.x / 64) + let tY = Math.floor(pooman.y / 64) + if (director === 0){ + if (!checkwall(tX,tY-1)){ + pooman.y -= 64; + } + } + if (director === 1){ + if (!checkwall(tX+1,tY)){ + pooman.x += 64; + } + } + if (director === 2){ + if (!checkwall(tX,tY+1)){ + pooman.y += 64; + } + } + if (director === 3){ + if (!checkwall(tX-1,tY)){ + pooman.x -= 64; + } + } + pooman.timer = 90; + } + pooman.timer--; + } + pooman.draw = _=>{ + c.drawImage(images.mouse.cursor, pooman.x, pooman.y, 64, 64, pooman.direction); + c.dT(`${pooman.timer} :: ${pooman.direction}`, pooman.x, pooman.y, 1, 1, "white", "middle", "middle"); + } + pooman.timer = 90; + gameRoom.spawn(pooman); } } } @@ -849,32 +916,21 @@ lvlS.drawGUI = () => { c.dT("Level Select", c.w/2, 44, 1,1,"gray","middle","middle"); for (let o in lvlS.o) { let n = parseInt(o)+1 - let slice = 15 - if (n >= 100){ - let slice = 13; - } else if (n >= 10) { - let slice = 14; - } - let txt = c.dT(`${n}.${lvlS.o[o].name.slice(0,slice)}`, 40, (70)+(o*20), 2,2,"#fff"); - if (lvlS.s == o) { - let a = images.ui.a; - let ap = (40)-a.width-4; - let ap2 = (40+txt.w)+a.width-4; - c.drawImg(a, ap, (70)+(o*20), a.width*2, a.height*2) - c.drawImg(a, ap2, (70)+(o*20), a.width*2, a.height*2, 180) + c.dT(`${n}`, (20)+(32*n), 70, 2, 2, "#fff", "middle", "middle") + if (o == lvlS.s) { + c.strokeRect((20-14)+(32*n), 70-16, 32, 32, "#fff") } } - c.drawLine(c.w/2, 60, c.w/2, c.h-20, "white") } lvlS.keyDown = (key) => { - if (key == "ArrowUp" || key == "KeyW") { + if (key == "ArrowUp"||key=="ArrowRight"||key == "KeyW"||key=="KeyD") { lvlS.s -= 1 if (lvlS.s < 0) { lvlS.s = lvlS.o.length-1 } } - if (key == "ArrowDown" || key == "KeyS") { + if (key == "ArrowDown" ||key=="ArrowLeft"||key == "KeyW"|| key == "KeyA") { lvlS.s += 1 if (lvlS.s > lvlS.o.length-1) { lvlS.s = 0 diff --git a/human.aseprite b/human.aseprite new file mode 100644 index 0000000000000000000000000000000000000000..977d23f02f8006c4001bae5c8558a35737815ac1 Binary files /dev/null and b/human.aseprite differ diff --git a/human.png b/human.png new file mode 100644 index 0000000000000000000000000000000000000000..6dc00291784b44a78d4b1c0bd5217f9b5e3124c0 Binary files /dev/null and b/human.png differ diff --git a/test.html b/test.html deleted file mode 100644 index 062cd989c7513e02cc1cef238472cc8bc30b1758..0000000000000000000000000000000000000000 --- a/test.html +++ /dev/null @@ -1,24 +0,0 @@ -<!DOCTYPE html> -<html lang="en"> -<head> - <meta charset="UTF-8"> - <meta http-equiv="X-UA-Compatible" content="IE=edge"> - <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <title>Document</title> -</head> -<body> - <li>Lorem ipsum, dolor sit amet consectetur adipisicing elit. Sed accusamus id architecto fugiat enim eveniet dolor labore odio quas. Exercitationem ea mollitia quisquam laudantium! Cumque sunt dignissimos dolorem sed suscipit.</li> - <li>Dolorem, vitae. Tempora earum iure autem error quia eum, eligendi neque quidem ea quasi tenetur nobis. Exercitationem, architecto impedit? Architecto ex adipisci ducimus odit esse quia perferendis at voluptas minima?</li> - <li>Fugiat nulla id accusamus iusto dolorem labore facilis est quibusdam, accusantium, tempora cumque culpa minus? Cumque fugiat veritatis, officiis eaque fuga nostrum aliquam? Architecto explicabo cumque fugiat. Laborum, omnis asperiores!</li> - <li>Ducimus praesentium consequuntur cum suscipit velit quam aut corrupti debitis in necessitatibus quasi possimus quisquam nihil tenetur veritatis amet molestias dolor quia ratione sit eveniet, quaerat at. Quam, eos libero.</li> - <li>Natus, dolore. Mollitia doloribus in molestias iusto est temporibus non quas vero, debitis eveniet eaque nam voluptates sed ducimus aut facere obcaecati dolorem beatae repudiandae eum, sapiente tempora perferendis cum!</li> - <li>Itaque, quo nam architecto placeat reiciendis expedita quibusdam eos tempora accusantium aliquid commodi accusamus repellat? Tempore blanditiis eos, magnam sequi, perspiciatis impedit eveniet placeat alias velit praesentium voluptates. Totam, minus.</li> - <li>Iusto recusandae sint accusantium voluptatibus quo illum molestias, amet, at voluptates ducimus tempora tempore error nemo impedit quos architecto esse fugiat eaque molestiae unde dolorem laudantium. Aspernatur suscipit sint adipisci?</li> - <li>Vel optio quod quas. Perferendis, dolorum. Minima nihil ipsa eligendi temporibus! Sit praesentium maxime expedita, dolorem libero consequatur error quae quisquam iste vel possimus temporibus culpa repellendus molestiae eum aliquam?</li> - <li>Repellat distinctio, necessitatibus minima ipsa debitis unde quidem nobis consequatur aliquam deleniti perferendis ullam nostrum maiores ea voluptate obcaecati optio aliquid vero nihil. Nesciunt culpa molestias quisquam cum? Blanditiis, amet.</li> - <li>Harum velit accusantium aspernatur perspiciatis labore blanditiis facere fugiat non repudiandae, animi nostrum quidem necessitatibus officia perferendis fugit? Vitae fugit enim facilis animi quasi in magnam atque sed esse sit.</li> - <li>Molestiae atque, vitae earum similique voluptas dolorem ea pariatur veniam cupiditate eius debitis, qui dolores cum quis est. At aperiam quisquam sed atque rem animi et tempora excepturi quos minima.</li> - <li>Sunt quos tempore fugit ab modi, eligendi amet cumque ipsum excepturi aperiam consectetur autem accusantium? Quas qui exercitationem iusto harum voluptatum odit illo quidem deleniti. Voluptatem eaque fuga cumque laboriosam?</li> - <li>Quos officia inventore rerum assumenda! Aliquam quasi, libero molestiae dignissimos delectus quos ipsa minima mollitia qui dolorum quibusdam maiores accusamus? Voluptates autem, placeat eaque laudantium tempora quisquam minima at explicabo.</li> -</body> -</html> \ No newline at end of file