From ba405fcb47c19ac810a0e1e4d7b904278808d358 Mon Sep 17 00:00:00 2001 From: Namrata Diware Date: Wed, 12 Jun 2024 22:57:20 +0530 Subject: [PATCH 1/3] [New game]: CopyCat #4466 The game contains two cats and two homes separated by one division of water you have to make use of arrows such that they reach their homes and if you fall in water the game restrats from that level . Once you win the level you get entered into another level. --- Games/CopyCat/README.md | 32 + Games/CopyCat/index.html | 12 + Games/CopyCat/script.js | 2317 ++++++++++++++++++++++++++++++++++++++ Games/CopyCat/style.css | 24 + 4 files changed, 2385 insertions(+) create mode 100644 Games/CopyCat/README.md create mode 100644 Games/CopyCat/index.html create mode 100644 Games/CopyCat/script.js create mode 100644 Games/CopyCat/style.css diff --git a/Games/CopyCat/README.md b/Games/CopyCat/README.md new file mode 100644 index 0000000000..9bf23db0a0 --- /dev/null +++ b/Games/CopyCat/README.md @@ -0,0 +1,32 @@ +

CopyCat

+ +## **Description 📃* +

The game contains two cats and two homes separated by one division of water you have to make use of arrows such that they reach their homes and if you fall in water the game restrats from that level . Once you win the level you get entered into another level.

+ +## **How to play? 🕹️** +
  • Once you enter to the starting page three options comes play , select and control choose one option using arrows and then press the key 'x' .
  • +
  • Press 'x' to select any option
  • +
  • to start the game choose arrows and press 'x' on the keyboard to play option , once the game has started make the use of arrows to move the cats to their respective home
  • +
  • The home of the cat represented by animated circle
  • +
  • Press 'e' to exit the game
  • +
  • Press 'r' to restart the game
  • + + +# Screenshots - +

    Beginning of the Game


    +
  • Select play option using arrows and Press 'x' from keyboard to start the game.
  • +Screenshot 2024-06-12 at 10 39 44 PM +
  • Level 1
  • +Screenshot 2024-06-12 at 10 40 10 PM +
  • Level 2
  • +Screenshot 2024-06-12 at 10 43 33 PM +
  • Level 3
  • +Screenshot 2024-06-12 at 10 43 56 PM +
  • Level 4
  • +Screenshot 2024-06-12 at 10 44 12 PM +
  • Level 5
  • +Screenshot 2024-06-12 at 10 45 17 PM +
  • Level 6
  • +Screenshot 2024-06-12 at 10 45 35 PM +

    +

    END


    \ No newline at end of file diff --git a/Games/CopyCat/index.html b/Games/CopyCat/index.html new file mode 100644 index 0000000000..81bc7d9968 --- /dev/null +++ b/Games/CopyCat/index.html @@ -0,0 +1,12 @@ + + + + + + CopyCat + + + + + + \ No newline at end of file diff --git a/Games/CopyCat/script.js b/Games/CopyCat/script.js new file mode 100644 index 0000000000..9f3d97131b --- /dev/null +++ b/Games/CopyCat/script.js @@ -0,0 +1,2317 @@ +// ---------- +// Utility +// ---------- +Util = {}; +Util.timeStamp = function() { + return window.performance.now(); +}; +Util.random = function(min, max) { + return min + Math.random() * (max - min); +}; +Util.array2D = function(tableau, largeur) { + var result = []; + for (var i = 0; i < tableau.length; i += largeur) + result.push(tableau.slice(i, i + largeur)); + return result; +}; +Util.toDio = function(array) { + let tab = array.map(x => { + if (x !== 0) { + return x - 1; + } else { + return x; + } + }); + let render = Util.array2D(tab, 16); + return JSON.stringify(render); +}; +Util.map = function(a, b, c, d, e) { + return (a - b) / (c - b) * (e - d) + d; +}; +Util.lerp = function(value1, value2, amount) { + return value1 + (value2 - value1) * amount; +}; +Util.linearTween = function(currentTime, start, degreeOfChange, duration) { + return degreeOfChange * currentTime / duration + start; +}; +Util.easeInOutQuad = function(t, b, c, d) { + t /= d / 2; + if (t < 1) return c / 2 * t * t + b; + t--; + return -c / 2 * (t * (t - 2) - 1) + b; +}; +Util.easeInOutExpo = function(t, b, c, d) { + t /= d / 2; + if (t < 1) return c / 2 * Math.pow(2, 10 * (t - 1)) + b; + t--; + return c / 2 * (-Math.pow(2, -10 * t) + 2) + b; +}; + +// ---------- +// Scene +// ---------- +class Scene { + constructor(name) { + this.name = name; + this.loop = true; + this.init_once = false; + } + giveWorld(world) { + this.world = world; + this.ctx = world.ctx; + } + keyEvents(event) {} + init() {} + render() {} + addEntity() {} +} +class Entity { + constructor(scene, x, y) { + this.scene = scene; + this.world = scene.world; + this.ctx = this.world.ctx; + this.body = new Body(this, x, y); + } + setSprite(sprite_data) { + this.sprite = new Sprite(this, sprite_data); + } + display() { + if (this.sprite === undefined) { + this.ctx.strokeStyle = "#000"; + this.ctx.strokeRect( + this.body.position.x, + this.body.position.y, + this.body.size.x, + this.body.size.y + ); + } else { + this.sprite.display(); + } + } + integration() { + this.body.integration(); + } +} + +// class for animated sprites ! +class Sprite { + constructor(entity, sprite_data) { + this.entity = entity; + this.world = this.entity.world; + this.tile_size = this.world.tile_size; + this.ctx = this.world.ctx; + // image data + this.image = this.world.assets.image[sprite_data.image].image; + // sprite + this.size = sprite_data.size; + this.current_frame = 0; + this.animations = {}; + this.current_animation = undefined; + this.width = this.image.width / this.size.x; + this.height = this.image.height / this.size.y; + // timer + this.tick = 0; + this.speed = 0.2; + // offset + this.offset = { + x: 0, + y: 0 + }; + } + addAnimation(name, frames) { + this.animations[name] = frames; + this.current_animation = name; + } + animate(animation_name) { + this.current_animation = animation_name; + if (this.tick < 1) { + this.tick += this.speed; + } else { + this.tick = 0; + if (this.current_frame < this.animations[animation_name].length - 1) { + this.current_frame += 1; + } else { + this.current_frame = 0; + } + } + } + display() { + this.ctx.drawImage( + this.image, + Math.floor( + this.animations[this.current_animation][this.current_frame] % this.width + ) * this.size.x, + Math.floor( + this.animations[this.current_animation][this.current_frame] / this.width + ) * this.size.y, + this.size.x, + this.size.y, + this.entity.body.position.x + + (this.tile_size / 2 - this.size.x / 2) + + this.offset.x, + this.entity.body.position.y + + (this.tile_size / 2 - this.size.x / 2) + + this.offset.y, + this.size.x, + this.size.y + ); + } +} + +class Body { + constructor(entity, x, y) { + this.world = entity.world; + this.step = this.world.FPS.step; + this.position = new Vector(x, y); + this.next_position = new Vector(x, y); + this.velocity = new Vector(0, 0); + this.stepped_velocity = new Vector(0, 0); + this.acceleration = new Vector(0, 0); + this.drag = 0.98; + this.size = { + x: 16, + y: 16 + }; + } + setSize(x, y) { + this.size.x = x; + this.size.y = y; + } + updateVelocity() { + this.velocity.add(this.acceleration); + this.velocity.mult(this.drag); + this.stepped_velocity = this.velocity.copy(); + this.stepped_velocity.mult(this.step); + this.next_position = this.position.copy(); + this.next_position.add(this.stepped_velocity); + // reset acceleration + this.acceleration.mult(0); + } + updatePosition() { + this.position.add(this.stepped_velocity); + } + integration() { + this.updateVelocity(); + this.updatePosition(); + } + applyForce(force_vector) { + this.acceleration.add(force_vector); + } +} + +class Vector { + constructor(x, y) { + this.x = x || 0; + this.y = y || 0; + } + set(x, y) { + this.x = x; + this.y = y; + } + add(vector) { + this.x += vector.x; + this.y += vector.y; + } + sub(vector) { + this.x -= vector.x; + this.y -= vector.y; + } + mult(scalar) { + this.x *= scalar; + this.y *= scalar; + } + div(scalar) { + this.x /= scalar; + this.y /= scalar; + } + limit(limit_value) { + if (this.mag() > limit_value) this.setMag(limit_value); + } + mag() { + return Math.hypot(this.x, this.y); + } + setMag(new_mag) { + if (this.mag() > 0) { + this.normalize(); + } else { + this.x = 1; + this.y = 0; + } + this.mult(new_mag); + } + dist(vector) { + return new Vector(this.x - vector.x, this.y - vector.y).mag(); + } + normalize() { + let mag = this.mag(); + if (mag > 0) { + this.x /= mag; + this.y /= mag; + } + } + heading() { + return Math.atan2(this.x, this.y); + } + setHeading(angle) { + let mag = this.mag(); + this.x = Math.cos(angle) * mag; + this.y = Math.sin(angle) * mag; + } + copy() { + return new Vector(this.x, this.y); + } +} + +class Box { + constructor(world, box_data) { + this.world = world; + this.ctx = world.ctx; + this.c_ctx = world.c_ctx; + this.box_data = box_data; + this.resolution = box_data.resolution; + this.image = world.assets.image[box_data.image].image; + } + display(x, y, width, height) { + // background + this.ctx.fillRect(x + 1, y + 1, width - 2, height - 2); + // corners + this.ctx.lineWidth = 2; + let coners = [0, 2, 6, 8]; + for (let i = 0; i < 4; i++) { + let pos_x = x + Math.floor(i % 2) * (width - this.resolution), + pos_y = y + Math.floor(i / 2) * (height - this.resolution); + let clip_x = Math.floor(i % 2) * (this.resolution * 2), + clip_y = Math.floor(i / 2) * (this.resolution * 2); + this.ctx.drawImage( + this.image, + clip_x, + clip_y, + this.resolution, + this.resolution, + pos_x, + pos_y, + this.resolution, + this.resolution + ); + } + let offset = this.resolution * 3; + // top + this.ctx.drawImage( + this.image, + 8, + 0, + this.resolution, + this.resolution, + x + 8, + y, + this.resolution + width - offset, + this.resolution + ); + // bottom + this.ctx.drawImage( + this.image, + 8, + 16, + this.resolution, + this.resolution, + x + 8, + y + height - this.resolution, + this.resolution + width - offset, + this.resolution + ); + // left + this.ctx.drawImage( + this.image, + 0, + 8, + this.resolution, + this.resolution, + x, + y + 8, + this.resolution, + this.resolution + height - offset + ); + // right + this.ctx.drawImage( + this.image, + 16, + 8, + this.resolution, + this.resolution, + x + width - this.resolution, + y + this.resolution, + this.resolution, + this.resolution + height - offset + ); + } +} +// ---------- +// 🕹️ Diorama.js +// ---------- +class Diorama { + constructor(parameters) { + this.parameters = parameters; + // Game and author's name + this.game_info = { + name: parameters.name || "Untitled", + author: parameters.author || "Anonymous" + }; + // canvas + this.background_color = parameters.background_color || "#000"; + this.initCanvas(parameters); + // Assets + this.counter = 0; + this.toLoad = parameters.assets.length; + this.assets = { + image: {}, + audio: {} + }; + this.audio_muted = false; + // keyboard event + this.keys = {}; + // Scenes + this.scenes = {}; + this.start_screen = parameters.start_screen || undefined; + this.current_scene = ""; + // Bitmap font Data + this.alphabet = + "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 ?!:',.()<>[]"; + this.fonts = {}; + // Maps + this.tile_size = parameters.tile_size || 16; + this.tiles_data = {}; + if (parameters.tiles !== undefined) { + parameters.tiles.map(tile => { + this.tiles_data[tile.id] = tile; + }); + } + this.mapsMax = parameters.maps.length; + this.maps = {}; + if (parameters.maps !== undefined) { + parameters.maps.map(map => { + this.maps[map.name] = map; + }); + } + // Box system + this.boxes = {}; + // By default the current font is the first font you create + this.currentFont = undefined; + // Game loop Data + this.FPS = { + now: 0, + delta: 0, + last: Util.timeStamp(), + step: 1 / (parameters.frame_rate || 60) + }; + this.requestChange = { + value: false, + action: "" + }; + this.main_loop = undefined; + } + // --- + // Setup & Loading + // --- + ready() { + this.loadAssets(this.parameters.assets); + } + initCanvas(parameters) { + this.canvas = document.createElement("canvas"); + this.ctx = this.canvas.getContext("2d"); + this.W = this.canvas.width = parameters.width || 256; + this.H = this.canvas.height = parameters.height || 256; + this.scale = parameters.scale || 1; + this.full = false; + this.ctx.imageSmoothingEnabled = false; + this.canvas.classList.add("crisp"); + document.body.appendChild(this.canvas); + // cache canvas + this.cache = document.createElement("canvas"); + this.c_ctx = this.cache.getContext("2d"); + } + loader() { + // increment loader + this.clear("#222"); + this.counter += 1; + let padding = 20; + let width = this.W - padding * 2, + x = padding, + y = this.H - padding * 2; + this.ctx.fillStyle = "#111"; + this.ctx.fillRect(x, y, width, 20); + this.ctx.fillStyle = "#333"; + this.ctx.fillRect(x, y, this.counter * width / this.toLoad, 20); + this.ctx.strokeStyle = "#000"; + this.ctx.lineWidth = 4; + this.ctx.strokeRect(x, y, width, 20); + if (this.counter === this.toLoad) { + this.launch(); + } + } + loadAssets(assets) { + if (assets === undefined) console.log("Nothing to load"); + assets.map(obj => this.checkAssets(obj)); + } + checkAssets(obj) { + let subject = obj; + switch (obj.type) { + case "img": + let img = new Image(); + img.onload = () => { + this.loader(); + }; + img.onerror = () => { + console.log("can't load Image: " + obj.name); + }; + img.src = obj.path; + subject.image = img; + this.assets.image[obj.name] = subject; + break; + case "audio": + let audio = new Audio(obj.path); + audio.addEventListener("canplaythrough", this.loader()); + audio.onerror = () => { + console.log("can't load audio: " + obj.name); + }; + subject.audio = audio; + this.assets.audio[obj.name] = subject; + break; + case undefined: + console.log(obj.name, " doesn't have any type"); + break; + default: + console.log(obj.name, " has a none known type"); + } + } + launch() { + this.eventSetup(); + this.initBoxes(this.parameters.boxes); + this.initFonts(this.parameters.fonts); + this.startScene(this.start_screen); + } + initBoxes(boxes_data) { + if (boxes_data === undefined) return false; + boxes_data.map(box => { + this.boxes[box.name] = new Box(this, box); + }); + } + drawBox(box_name, x, y, width, height) { + this.boxes[box_name].display(x, y, width, height); + } + // --- + // Font manager + // --- + setFont(font_name) { + this.currentFont = font_name; + } + initFonts(fonts_data) { + if (fonts_data === undefined && fonts_data.length > 0) return false; + fonts_data.map(font => { + if (this.assets.image[font.image] === undefined) { + console.log("can't load font, " + font.image + " doesn't exist"); + return false; + } + font.image = this.assets.image[font.image].image; + this.fonts[font.name] = font; + }); + // set current font to the first font ! + this.currentFont = Object.keys(this.fonts)[0]; + } + write(text, x, y, justify, colorID) { + if (this.currentFont === undefined) { + console.log("No bitmap_font"); + return false; + } + if (typeof justify === "string") { + switch (justify) { + case "center": + x -= text.length * this.fonts[this.currentFont].size.x / 2; + break; + case "right": + x -= text.length * this.fonts[this.currentFont].size.x; + break; + default: + } + this.writeLine(text, x, y, colorID || 0); + } else { + this.writeParagraph(text, x, y, justify, colorID || 0); + } + } + writeParagraph(text, x, y, justify, colorID) { + let y_offset = 0, + line_height = this.fonts[this.currentFont].size.y + 5, + size_x = this.fonts[this.currentFont].size.x, + words = text.split(" "), + line = ""; + for (let i = 0; i < words.length; i++) { + line += words[i] + " "; + let nextword_width = 0, + next_word = words[i + 1], + line_length = line.length * size_x; + next_word ? (nextword_width = next_word.length * size_x) : 0; + if (line_length + nextword_width > justify) { + this.writeLine(line, x, y + y_offset, 0, colorID); + y_offset += line_height; + line = ""; + } else { + this.writeLine(line, x, y + y_offset, 0, colorID); + } + } + } + writeLine(text, x, y, colorID) { + // write line + let size_x = this.fonts[this.currentFont].size.x, + size_y = this.fonts[this.currentFont].size.y, + font_img = this.fonts[this.currentFont].image; + for (let i = 0; i < text.length; i++) { + let index = this.alphabet.indexOf(text.charAt(i)), + clipX = size_x * index, + posX = x + i * size_x; + this.ctx.drawImage( + font_img, + clipX, + colorID * size_y, + size_x, + size_y, + posX, + y, + size_x, + size_y + ); + } + } + // ----------------- + // Events + // ----------------- + eventSetup() { + document.addEventListener("keydown", event => this.keyDown(event), false); + document.addEventListener("keyup", event => this.keyUp(event), false); + } + keyDown(event) { + event.preventDefault(); + this.keys[event.code] = true; + if (this.keys.KeyF) { + this.fullScreen(); + } + if (this.keys.KeyM) { + this.mute(); + } + this.current_scene.keyEvents(event); + } + keyUp(event) { + event.preventDefault(); + this.keys[event.code] = false; + } + // --- + // Scene Manager + // --- + startScene(scene_name) { + // check if the scene exist + if (this.scenes[scene_name] === undefined) + return scene_name + " - doesn't exist"; + // request the change of scene if this.main_loop is active + if (this.main_loop !== undefined) { + this.requestChange.value = true; + this.requestChange.action = scene_name; + return false; + } + this.requestChange.value = false; + this.requestChange.action = ""; + this.FPS.last = Util.timeStamp(); + this.current_scene = this.scenes[scene_name]; + this.initScene(); + // does this scenes needs a gameloop ? + if (this.current_scene.loop === true) { + this.gameLoop(); + } else { + this.mainRender(); + } + } + initScene() { + if (this.current_scene.init_once) return false; + this.current_scene.init(); + } + addScene(scene) { + // links this world to this scene + scene.giveWorld(this); + this.scenes[scene.name] = scene; + } + // --- + // Main Loop + // --- + mainRender() { + this.clear(); + this.current_scene.render(); + } + loopCheck() { + if (this.requestChange.value === false) { + this.main_loop = requestAnimationFrame(() => this.gameLoop()); + } else { + cancelAnimationFrame(this.main_loop); + this.main_loop = undefined; + this.startScene(this.requestChange.action); + } + } + gameLoop() { + this.FPS.now = Util.timeStamp(); + this.FPS.delta += Math.min(1, (this.FPS.now - this.FPS.last) / 1000); + while (this.FPS.delta > this.FPS.step) { + this.FPS.delta -= this.FPS.step; + this.mainRender(); + } + this.FPS.last = this.FPS.now; + this.loopCheck(); + } + // Basic functions + soundLevel(volume) { + for (let [k, v] of Object.entries(this.assets.audio)) { + v.audio.volume = volume; + } + } + mute() { + this.audio_muted = !this.audio_muted; + for (let [k, v] of Object.entries(this.assets.audio)) { + v.audio.muted = this.audio_muted; + } + } + clear(custom_color) { + this.ctx.fillStyle = custom_color || this.background_color; + this.ctx.fillRect(0, 0, this.W, this.H); + } + setScale() { + this.canvas.style.width = this.W * this.scale + "px"; + this.canvas.style.height = this.H * this.scale + "px"; + } + fullScreen() { + this.full = !this.full; + if (!this.full) { + this.setScale(); + } else { + this.canvas.style.width = "100%"; + this.canvas.style.height = "100%"; + } + } + // --- + // Tile map + // --- + getTile(layer_id, x, y) { + if (x < 0 || x > this.terrain.layers[layer_id].size.x - 1) return false; + if (y < 0 || y > this.terrain.layers[layer_id].size.y - 1) return false; + let tile = this.tiles_data[this.terrain.layers[layer_id].geometry[y][x]]; + if (tile === undefined) return false; + return tile; + } + findTile(layer_id, tile_id) { + let layer = this.terrain.layers[layer_id]; + let result = []; + for (let y = 0; y < layer.size.y; y++) { + for (let x = 0; x < layer.size.x; x++) { + let id = layer.geometry[y][x]; + if (id === tile_id) { + result.push({ x: x, y: y }); + } + } + } + return result; + } + initMap(map_name) { + this.terrain = JSON.parse(JSON.stringify(this.maps[map_name])); + // give size to layers + for (var i = 0; i < this.terrain.layers.length; i++) { + this.terrain.layers[i].size = { + x: this.terrain.layers[i].geometry[0].length, + y: this.terrain.layers[i].geometry.length + }; + } + this.terrain.tileset = this.assets.image[this.maps[map_name].tileset].image; + this.terrain.tileset_size = { + width: this.terrain.tileset.width / this.tile_size, + height: this.terrain.tileset.height / this.tile_size + 1 + }; + this.terrain.layers.forEach((layer, index) => { + this.marchingSquare(layer); + this.bitMasking(layer); + + // create a cache for reducing draw call in the gameLoop + this.terrainCache(layer); + // prepare animated tiles + layer.animated = []; + for (var id in this.tiles_data) { + if (this.tiles_data[id].animated === true) { + let tiles = this.findTile(index, parseInt(id)); + layer.animated.push({ + id: id, + spritesheet: this.assets.image[this.tiles_data[id].spritesheet] + .image, + positions: tiles, + current: 0, + steps: this.tiles_data[id].steps, + max_frame: + this.assets.image[this.tiles_data[id].spritesheet].image.width / + this.tile_size + }); + } + } + }); + this.clear("black"); + } + terrainCache(layer) { + layer.cache = {}; + let c = (layer.cache.c = document.createElement("canvas")); + let ctx = (layer.cache.ctx = layer.cache.c.getContext("2d")); + let W = (c.width = layer.size.x * this.tile_size), + H = (c.height = layer.size.y * this.tile_size); + // Draw on cache + this.ctx.clearRect(0, 0, W, H); + this.drawLayer(layer); + ctx.drawImage(this.canvas, 0, 0); + this.clear(); + } + marchingSquare(layer) { + layer.square = []; + for (let y = 0; y < layer.size.y; y++) { + for (let x = 0; x < layer.size.x; x++) { + let p1 = 0, + p2 = 0, + p3 = 0, + p4 = 0; + + if (y + 1 < layer.size.y && x + 1 < layer.size.x) { + p1 = layer.geometry[y][x]; + p2 = layer.geometry[y][x + 1]; + p3 = layer.geometry[y + 1][x + 1]; + p4 = layer.geometry[y + 1][x]; + } + let id = p1 * 8 + p2 * 4 + p3 * 2 + p4; + layer.square.push(id); + } + } + + layer.square = Util.array2D(layer.square, layer.size.x); + } + bitMasking(layer) { + layer.bitMask = []; + for (let y = 0; y < layer.size.y; y++) { + for (let x = 0; x < layer.size.x; x++) { + let id = layer.geometry[y][x]; + let neighbor = [0, 0, 0, 0]; + if (y - 1 > -1) { + if (id === layer.geometry[y - 1][x]) { + //top + neighbor[0] = 1; + } + } else { + neighbor[0] = 1; + } + if (x - 1 > -1) { + if (id === layer.geometry[y][x - 1]) { + // left + neighbor[1] = 1; + } + } else { + neighbor[1] = 1; + } + if (x + 1 < layer.size.x) { + if (id === layer.geometry[y][x + 1]) { + // right + neighbor[2] = 1; + } + } else { + neighbor[2] = 1; + } + + if (y + 1 < layer.size.y) { + if (id === layer.geometry[y + 1][x]) { + //down + neighbor[3] = 1; + } + } else { + neighbor[3] = 1; + } + id = + 1 * neighbor[0] + 2 * neighbor[1] + 4 * neighbor[2] + 8 * neighbor[3]; + layer.bitMask.push(id); + } + } + layer.bitMask = Util.array2D(layer.bitMask, layer.size.x); + } + renderMap() { + this.terrain.layers.forEach(layer => { + this.ctx.drawImage(layer.cache.c, 0, 0); + // draw animated layer + layer.animated.forEach(tile => { + if (tile.current < tile.max_frame - 1) { + tile.current += tile.steps; + } else { + tile.current = 0; + } + // render animated tiles + tile.positions.forEach(position => { + let x = position.x * this.tile_size, + y = position.y * this.tile_size; + this.ctx.drawImage( + tile.spritesheet, + Math.floor(tile.current) * this.tile_size, + 0, + this.tile_size, + this.tile_size, + x, + y, + this.tile_size, + this.tile_size + ); + }); + }); + }); + } + drawMap() { + this.terrain.layers.forEach(layer => { + this.drawLayer(layer); + }); + } + drawLayer(layer) { + for (let y = 0; y < layer.size.y; y++) { + for (let x = 0; x < layer.size.x; x++) { + // ID of the tile + let id = layer.geometry[y][x]; + // Don't draw invisible tiles + // Position of the tile :) + let positionX = x * this.tile_size + layer.offset.x, + positionY = y * this.tile_size + layer.offset.y; + let sourceX = + Math.floor(id % this.terrain.tileset_size.width) * this.tile_size, + sourceY = + Math.floor(id / this.terrain.tileset_size.width) * this.tile_size; + if (this.tiles_data[id] && this.tiles_data[id].look === "bitmask") { + sourceX = Math.floor(layer.bitMask[y][x]) * this.tile_size; + sourceY = this.tiles_data[id].line * this.tile_size; + } + + if (layer.look === "square") { + if (layer.square[y][x] === 0) continue; + positionX += this.tile_size / 2; + positionY += this.tile_size / 2; + sourceX = Math.floor(layer.square[y][x] % 16) * 16; + sourceY = 7 * this.tile_size; + } + + if (this.tiles_data[id] && this.tiles_data[id].animated === true) { + // hide animated sprites on the cache + continue; + } + + // render tile + + this.ctx.drawImage( + this.terrain.tileset, + sourceX, + sourceY, + this.tile_size, + this.tile_size, + positionX, + positionY, + this.tile_size, + this.tile_size + ); + } + } + } +} +let parameters = { + name: "Copycat", + start_screen: "menu", + background_color: "#223d8c", + width: 256, + height: 256, + tile_size: 16, + assets: [ + // Images + { + type: "img", + name: "coderscrux_font", + path: "https://image.ibb.co/fCOd7T/coderscrux_font.png" + }, + { + type: "img", + name: "controls", + path: "https://image.ibb.co/nApwu8/controls.png" + }, + { + type: "img", + name: "player_sprite", + path: "https://image.ibb.co/co3NZ8/player.png" + }, + { + type: "img", + name: "spawn_effect", + path: "https://image.ibb.co/njVQnT/spawn_effect.png" + }, + { + type: "img", + name: "water_splash", + path: "https://image.ibb.co/jm7hZ8/water_splash.png" + }, + { + type: "img", + name: "shadow", + path: "https://image.ibb.co/djchZ8/shadow.png" + }, + { + type: "img", + name: "main_title", + path: "https://image.ibb.co/mrBLMo/main_title.png" + }, + { + type: "img", + name: "origami_dark", + path: "https://image.ibb.co/gzk2Z8/origami_dark.png" + }, + { + type: "img", + name: "origami_light", + path: "https://image.ibb.co/jruknT/origami_light.png" + }, + { + type: "img", + name: "box_texture", + path: "https://image.ibb.co/kpO0Mo/box.png" + }, + { + type: "img", + name: "selection", + path: "https://image.ibb.co/fmJpE8/selection.png" + }, + { + type: "img", + name: "flat_frame", + path: "https://image.ibb.co/hqSugo/flat_frame.png" + }, + { + type: "img", + name: "pattern", + path: "https://image.ibb.co/cv02Z8/pattern.png" + }, + { + type: "img", + name: "cursor", + path: "https://image.ibb.co/bFiNZ8/cursor.png" + }, + { + type: "img", + name: "demo_tileset", + path: "https://image.ibb.co/b8rLMo/demo_tileset.png" + }, + { + type: "img", + name: "exit", + path: "https://image.ibb.co/esCS1o/exit.png" + }, + { + type: "img", + name: "water_sprite", + path: "https://image.ibb.co/cSFEgo/water_sprite.png" + }, + { + type: "img", + name: "dust_effect", + path: "https://image.ibb.co/mKy0Mo/dust.png" + }, + // Audio + { + type: "audio", + name: "jingle", + path: "http://www.noiseforfun.com/waves/musical-and-jingles/NFF-bravo.wav" + }, + { + type: "audio", + name: "mouvement", + path: + "http://www.noiseforfun.com/waves/interface-and-media/NFF-select-04.wav" + }, + { + type: "audio", + name: "selection", + path: + "http://www.noiseforfun.com/waves/interface-and-media/NFF-select.wav" + }, + { + type: "audio", + name: "apparition", + path: + "http://www.noiseforfun.com/waves/interface-and-media/NFF-bubble-input.wav" + }, + { + type: "audio", + name: "eboulement", + path: + "http://www.noiseforfun.com/waves/action-and-game/NFF-moving-block.wav" + }, + { + type: "audio", + name: "splash", + path: + "http://www.noiseforfun.com/waves/action-and-game/NFF-mud-splash.wav" + }, + { + type: "audio", + name: "bump", + path: "http://www.noiseforfun.com/waves/action-and-game/NFF-bump.wav" + } + + // Bitmap font + ], + fonts: [ + // basic font + { + name: "coderscrux", + image: "coderscrux_font", + size: { x: 6, y: 9 } + }, + { + name: "origami_dark", + image: "origami_dark", + size: { x: 8, y: 9 } + }, + { + name: "origami_light", + image: "origami_light", + size: { x: 8, y: 9 } + } + ], + // box system + boxes: [ + { + name: "box", + resolution: 8, + image: "box_texture" + }, + { + name: "selection", + resolution: 8, + image: "selection" + }, + { + name: "flat_frame", + resolution: 8, + image: "flat_frame" + } + ], + tiles: [ + { name: "empty", id: 0, collision: false, visibility: false }, + { name: "water", id: 1, collision: false, look: "square", line: 7 }, + { name: "shores", id: 2, collision: false, look: "bitmask", line: 6 }, + { name: "ground", id: 3, collision: false, look: "bitmask", line: 1 }, + { name: "wall", id: 4, collision: true, look: "bitmask", line: 2 }, + { name: "fence", id: 11, collision: true, look: "bitmask", line: 4 }, + { name: "bush", id: 5, collision: true }, + { name: "ice", id: 6, collision: false, look: "bitmask", line: 3 }, + { name: "spawn", id: 7, collision: false }, + { + name: "exit", + id: 8, + collision: false, + animated: true, + spritesheet: "exit", + steps: 0.4 + }, + { + name: "waves", + id: 16, + collision: false, + animated: true, + spritesheet: "water_sprite", + steps: 0.2 + }, + { name: "trap", id: 9, collision: false }, + { name: "hole", id: 10, collision: true }, + // arrows + { name: "arrowLeft", id: 12, collision: false }, + { name: "arrowUp", id: 13, collision: false }, + { name: "arrowRight", id: 14, collision: false }, + { name: "arrowDown", id: 15, collision: false } + ], + maps: [ + // map 1 + { + name: "map_1", + tileset: "demo_tileset", + // ground + layers: [ + // ground layer + { + name: "ground", + offset: { + x: 0, + y: 4 + }, + geometry: [ + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + [0, 0, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + [0, 0, 3, 3, 0, 0, 0, 3, 3, 3, 3, 3, 0, 0, 0, 0], + [0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0], + [0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0], + [0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0], + [0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0], + [0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3, 0, 0, 0], + [0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 0, 0, 0, 0], + [0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 0, 0, 0, 0], + [0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 0, 0, 0, 0], + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] + ] + }, + // ice / arrows / layer + { + name: "onGround", + offset: { + x: 0, + y: 0 + }, + geometry: [ + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 11, 0, 0, 0, 0], + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0], + [0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0], + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0], + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0], + [0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0], + [0, 0, 0, 0, 0, 0, 0, 5, 5, 0, 0, 0, 0, 0, 0, 0], + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] + ] + } + // wall layer + ] + }, + // map 2 + { + name: "map_2", + tileset: "demo_tileset", + // ground + layers: [ + // ground layer + { + name: "ground", + offset: { + x: 0, + y: 4 + }, + geometry: [ + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + [0, 0, 3, 3, 3, 3, 3, 0, 0, 3, 3, 3, 3, 3, 0, 0], + [0, 0, 3, 3, 3, 3, 3, 0, 0, 3, 3, 3, 3, 3, 0, 0], + [0, 0, 3, 3, 3, 3, 3, 0, 0, 3, 3, 3, 3, 3, 0, 0], + [0, 0, 3, 3, 3, 3, 3, 0, 0, 3, 3, 3, 3, 3, 0, 0], + [0, 0, 3, 3, 3, 3, 3, 0, 0, 3, 3, 3, 3, 3, 0, 0], + [0, 0, 3, 3, 3, 3, 3, 0, 0, 3, 3, 3, 3, 3, 0, 0], + [0, 0, 3, 3, 3, 3, 3, 0, 0, 3, 3, 3, 3, 3, 0, 0], + [0, 0, 3, 3, 3, 3, 3, 0, 0, 3, 3, 3, 3, 3, 0, 0], + [0, 0, 3, 3, 3, 3, 3, 0, 0, 3, 3, 3, 3, 3, 0, 0], + [0, 0, 3, 3, 3, 3, 3, 0, 0, 3, 3, 3, 3, 3, 0, 0], + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] + ] + }, + // ice / arrows / layer + { + name: "onGround", + offset: { + x: 0, + y: 0 + }, + geometry: [ + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + [0, 0, 11, 11, 11, 11, 11, 0, 0, 11, 11, 11, 11, 11, 0, 0], + [0, 0, 11, 0, 0, 0, 11, 0, 0, 11, 0, 0, 0, 11, 0, 0], + [0, 0, 11, 0, 8, 0, 11, 0, 0, 11, 0, 8, 0, 11, 0, 0], + [0, 0, 11, 0, 0, 0, 11, 0, 0, 11, 0, 0, 0, 11, 0, 0], + [0, 0, 11, 0, 0, 0, 11, 0, 0, 11, 0, 0, 0, 11, 0, 0], + [0, 0, 11, 4, 4, 0, 11, 0, 0, 11, 0, 0, 0, 11, 0, 0], + [0, 0, 11, 0, 0, 0, 11, 0, 0, 11, 0, 4, 4, 11, 0, 0], + [0, 0, 11, 0, 0, 0, 11, 0, 0, 11, 0, 0, 0, 11, 0, 0], + [0, 0, 11, 0, 7, 0, 11, 0, 0, 11, 0, 7, 0, 11, 0, 0], + [0, 0, 11, 11, 11, 11, 11, 0, 0, 11, 11, 11, 11, 11, 0, 0], + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] + ] + } + // wall layer + ] + }, + { + name: "map_3", + tileset: "demo_tileset", + // ground + layers: [ + // ground layer + { + name: "ground", + offset: { + x: 0, + y: 4 + }, + geometry: [ + [3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3], + [3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3], + [3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3], + [3, 3, 3, 3, 3, 3, 3, 0, 0, 3, 3, 3, 3, 3, 3, 3], + [3, 3, 3, 3, 3, 3, 3, 0, 0, 3, 3, 3, 3, 3, 3, 3], + [3, 3, 3, 3, 3, 3, 3, 0, 0, 3, 3, 3, 3, 3, 3, 3], + [3, 3, 3, 3, 3, 3, 3, 0, 0, 3, 3, 3, 3, 3, 3, 3], + [3, 3, 3, 3, 3, 3, 3, 0, 0, 3, 3, 3, 3, 3, 3, 3], + [3, 3, 3, 3, 3, 3, 3, 0, 0, 3, 3, 3, 3, 3, 3, 3], + [3, 3, 3, 3, 3, 3, 3, 0, 0, 3, 3, 3, 3, 3, 3, 3], + [3, 3, 3, 3, 3, 3, 3, 0, 0, 3, 3, 3, 3, 3, 3, 3], + [3, 3, 3, 3, 3, 3, 3, 0, 0, 3, 3, 3, 3, 3, 3, 3], + [3, 3, 3, 3, 3, 3, 3, 0, 0, 3, 3, 3, 3, 3, 3, 3], + [3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3], + [3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3], + [3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3] + ] + }, + // ice / arrows / layer + { + name: "onGround", + offset: { + x: 0, + y: 0 + }, + geometry: [ + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + [0, 0, 4, 4, 4, 4, 4, 0, 0, 4, 4, 4, 4, 4, 0, 0], + [0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0], + [0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0], + [0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 4, 0, 0], + [0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0], + [0, 0, 4, 8, 0, 0, 0, 0, 0, 0, 5, 0, 0, 4, 0, 0], + [0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0], + [0, 0, 4, 11, 11, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0], + [0, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 7, 0, 4, 0, 0], + [0, 0, 4, 4, 4, 4, 4, 0, 0, 4, 4, 4, 4, 4, 0, 0], + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] + ] + } + // wall layer + ] + }, + + { + name: "map_4", + tileset: "demo_tileset", + // ground + layers: [ + // ground layer + { + name: "ground", + offset: { + x: 0, + y: 4 + }, + geometry: [ + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + [0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 0, 0, 0, 0], + [0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0], + [0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0], + [0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0], + [0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0], + [0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0], + [0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0], + [0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0], + [0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0], + [0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0], + [0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0], + [0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0], + [0, 0, 0, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0], + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] + ] + }, + // ice / arrows / layer + { + name: "onGround", + offset: { + x: 0, + y: 0 + }, + geometry: [ + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 11, 11, 0, 0, 0], + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 11, 0, 0, 0], + [0, 0, 0, 0, 11, 11, 11, 0, 0, 0, 11, 0, 11, 0, 0, 0], + [0, 0, 0, 0, 11, 0, 11, 0, 0, 0, 11, 0, 11, 0, 0, 0], + [0, 0, 0, 0, 11, 0, 11, 0, 0, 0, 11, 9, 11, 0, 0, 0], + [0, 0, 0, 0, 11, 8, 11, 0, 0, 0, 11, 8, 11, 0, 0, 0], + [0, 0, 0, 0, 11, 0, 11, 0, 0, 0, 11, 7, 11, 0, 0, 0], + [0, 0, 0, 0, 11, 0, 11, 0, 0, 0, 11, 0, 11, 0, 0, 0], + [0, 0, 0, 0, 11, 0, 11, 5, 0, 0, 11, 11, 11, 0, 0, 0], + [0, 0, 0, 0, 11, 7, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0], + [0, 0, 0, 0, 11, 11, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0], + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] + ] + } // wall layer + ] + }, + { + name: "map_5", + tileset: "demo_tileset", + // ground + layers: [ + // ground layer + { + name: "ground", + offset: { + x: 0, + y: 4 + }, + geometry: [ + [3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3], + [3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3], + [3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3], + [3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3], + [3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3], + [3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3], + [3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3], + [3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3], + [3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3], + [3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3], + [3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3], + [3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3], + [3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3], + [3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3], + [3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3], + [3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3] + ] + }, + // ice / arrows / layer + { + name: "onGround", + offset: { + x: 0, + y: 0 + }, + geometry: [ + [4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4], + [4, 0, 5, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4], + [4, 0, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4], + [4, 4, 4, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 4, 4, 4], + [4, 4, 4, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 4, 4, 4], + [4, 4, 4, 6, 5, 6, 6, 6, 6, 6, 6, 6, 6, 4, 4, 4], + [4, 4, 4, 6, 6, 6, 6, 6, 6, 6, 6, 5, 6, 4, 4, 4], + [4, 4, 4, 6, 6, 6, 6, 6, 4, 6, 6, 6, 6, 8, 4, 4], + [4, 4, 4, 6, 6, 4, 6, 6, 4, 6, 4, 4, 6, 4, 4, 4], + [4, 4, 4, 4, 6, 6, 6, 6, 4, 6, 6, 6, 6, 4, 4, 4], + [4, 4, 4, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 4, 4, 4], + [4, 4, 4, 6, 6, 6, 5, 6, 6, 6, 6, 0, 0, 4, 4, 4], + [4, 4, 4, 6, 6, 6, 6, 6, 6, 6, 6, 0, 7, 4, 4, 4], + [4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 0, 4], + [4, 5, 0, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 0, 4], + [4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4] + ] + } // wall layer + ] + }, + + { + name: "map_6", + tileset: "demo_tileset", + // ground + layers: [ + // ground layer + { + name: "ground", + offset: { + x: 0, + y: 4 + }, + geometry: [ + [3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3], + [3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3], + [3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3], + [3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3], + [3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3], + [3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3], + [3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3], + [3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3], + [3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3], + [3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3], + [3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3], + [3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3], + [3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3], + [3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3], + [3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3], + [3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3] + ] + }, + // ice / arrows / layer + { + name: "onGround", + offset: { + x: 0, + y: 0 + }, + geometry: [ + [4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4], + [4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4], + [4, 4, 4, 6, 6, 14, 0, 6, 6, 6, 6, 15, 4, 4, 4, 4], + [4, 4, 4, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 4, 4, 4], + [4, 4, 4, 6, 6, 6, 8, 6, 6, 6, 4, 6, 6, 4, 4, 4], + [4, 4, 4, 0, 6, 6, 6, 6, 6, 6, 6, 6, 6, 4, 4, 4], + [4, 4, 4, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 4, 4, 4], + [4, 4, 4, 6, 6, 6, 6, 6, 6, 6, 6, 7, 6, 4, 4, 4], + [4, 4, 4, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 4, 4, 4], + [4, 4, 4, 6, 6, 14, 6, 6, 6, 6, 6, 6, 4, 4, 4, 4], + [4, 4, 4, 6, 6, 6, 6, 6, 6, 6, 0, 6, 4, 4, 4, 4], + [4, 4, 4, 6, 6, 0, 6, 6, 6, 6, 6, 6, 6, 4, 4, 4], + [4, 4, 4, 6, 6, 6, 6, 6, 6, 6, 6, 8, 13, 4, 4, 4], + [4, 4, 4, 6, 6, 6, 7, 6, 6, 6, 6, 6, 6, 4, 4, 4], + [4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4], + [4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4] + ] + } // wall layer + ] + } + ] +}; + +// Don't mind me +// just too lazy to modify the maps by hand +parameters.maps.forEach(map => { + new_layer = {}; + new_layer.name = "water"; + new_layer.look = "square"; + new_layer.offset = { x: 0, y: 8 }; + new_layer.geometry = Array(16) + .fill() + .map(() => Array(16).fill(0)); + map.layers.unshift(new_layer); + // + new_layer = {}; + new_layer.name = "splash"; + new_layer.offset = { x: 0, y: 8 }; + new_layer.geometry = Array(16) + .fill() + .map(() => Array(16).fill(0)); + map.layers.splice(2, 0, new_layer); + + let water = map.layers[0]; + let ground = map.layers[1]; + let splash = map.layers[2]; + + for (let y = 0; y < ground.geometry.length; y++) { + for (let x = 0; x < ground.geometry[0].length; x++) { + if ( + y - 1 > 0 && + ground.geometry[y][x] !== 3 && + ground.geometry[y - 1][x] == 3 + ) { + ground.geometry[y][x] = 2; + } + } + } + + for (let y = 0; y < ground.geometry.length; y++) { + for (let x = 0; x < ground.geometry[0].length; x++) { + if (ground.geometry[y][x] == 2) { + splash.geometry[y][x] = 16; + } + } + } + + for (let y = 0; y < water.geometry.length; y++) { + for (let x = 0; x < water.geometry[0].length; x++) { + if (ground.geometry[y][x] == 3) { + water.geometry[y][x] = 1; + } + + if (ground.geometry[y][x] !== 3 && ground.geometry[y][x + 1] == 3) { + water.geometry[y][x] = 1; + } + if (ground.geometry[y][x] !== 3 && ground.geometry[y][x - 1] == 3) { + water.geometry[y][x] = 1; + } + if ( + y + 1 < water.geometry.length && + ground.geometry[y][x] !== 3 && + ground.geometry[y + 1][x] == 3 + ) { + water.geometry[y][x] = 1; + } + if ( + y - 1 > 0 && + ground.geometry[y][x] !== 3 && + ground.geometry[y - 1][x] == 3 + ) { + water.geometry[y][x] = 1; + } + } + } + + for (let y = 0; y < water.geometry.length; y++) { + for (let x = 0; x < water.geometry[0].length; x++) { + if (water.geometry[y][x] == -1) { + water.geometry[y][x] = 1; + } + } + } +}); +// menu scene +let menu = new Scene("menu"); +menu.keyEvents = function(event) { + if (this.world.keys.ArrowDown && this.selection < this.button.length - 1) { + this.world.assets.audio.selection.audio.play(); + this.selection += 1; + } else if (this.world.keys.ArrowUp && this.selection > 0) { + this.world.assets.audio.selection.audio.play(); + this.selection -= 1; + } + if (this.world.keys.KeyX) { + this.world.assets.audio.selection.audio.play(); + this.world.startScene(this.button[this.selection].link); + } +}; +menu.init = function() { + this.init_once = true; + // custom data + this.button = [ + { + name: "PLAY", + link: "inGame" + }, + { + name: "SELECT", + link: "levels" + }, + { + name: "CONTROLS", + link: "controls" + } + ]; + this.texteMax = + Math.max(...this.button.map(button => button.name.length)) * 6; + this.selection = 0; + this.select_pos = { + x: this.world.W / 2, + y: 110 + }; + this.cursor_phase = 0; + this.cursor = this.world.assets.image.cursor.image; + // background + let background_image = this.world.assets.image.pattern.image; + this.pattern = this.world.ctx.createPattern(background_image, "repeat"); + this.offset = { + x: 0, + y: 0 + }; + // add cat on + this.cat = new Entity(this, -this.world.tile_size, -this.world.tile_size); + let sprite_data = { + image: "player_sprite", + size: { + x: 18, + y: 18 + } + }; + this.cat.setSprite(sprite_data); + this.cat.sprite.addAnimation("idle", [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]); + this.cat.sprite.speed = 0.2; + this.cat.sprite.offset.y = -3; +}; +menu.render = function() { + this.animatedBackground(); + this.ctx.drawImage(this.world.assets.image["main_title"].image, 0, 0); + this.displaySelection(); + // notice + this.world.ctx.fillStyle = "rgba(0,0,0,0.6)"; + this.world.ctx.fillRect(0, this.world.H - 50, this.world.W, 33); + this.world.setFont("origami_light"); + this.world.write( + "Arrow keys to select", + this.world.W / 2, + this.world.H - 46, + "center" + ); + this.world.write( + "[x] to Confirm", + this.world.W / 2, + this.world.H - 30, + "center" + ); +}; +menu.displaySelection = function() { + // display box + this.ctx.fillStyle = "#82769e"; + this.world.drawBox( + "box", + this.select_pos.x - (this.texteMax + 60) / 2, + this.select_pos.y - 16, + this.texteMax + 60, + this.button.length * 20 + 20 + ); + // display text and cursor + for (i in this.button) { + if (i == this.selection) { + this.world.setFont("origami_light"); + } else { + this.world.setFont("origami_dark"); + } + let title = this.button[i].name; + this.world.write( + title, + this.select_pos.x, + this.select_pos.y + i * 20, + "center" + ); + } + this.cursor_phase += 0.1; + if (this.cursor_phase > 1 / Math.sin(0.2)) { + this.cursor_phase = -1; + } + let x = this.select_pos.x + Math.sin(this.cursor_phase) * 2 - 20; + this.world.ctx.drawImage( + this.cursor, + x - this.button[this.selection].name.length * 10 / 2, + this.select_pos.y + 20 * this.selection - 2 + ); +}; +menu.animatedBackground = function() { + this.offset.x += 0.8; + this.offset.y += 0.6; + if (this.offset.x > 63) { + this.offset.x = 0; + } + if (this.offset.y > 63) { + this.offset.y = 0; + } + let ctx = this.world.ctx; + ctx.save(); + ctx.translate(this.offset.x, this.offset.y); + ctx.fillStyle = this.pattern; + ctx.fillRect(-this.offset.x, -this.offset.y, this.world.W, this.world.H); + ctx.restore(); +}; +let levels = new Scene("levels"); +levels.keyEvents = function(event) { + if (this.world.keys.KeyE) { + this.world.assets.audio.selection.audio.play(); + this.world.startScene("menu"); + } + if (this.world.keys.ArrowDown && this.selection + 5 < this.world.mapsMax) { + this.world.assets.audio.selection.audio.play(); + this.selection += 5; + } + if (this.world.keys.ArrowUp && this.selection - 5 >= 0) { + this.world.assets.audio.selection.audio.play(); + this.selection -= 5; + } + if (this.world.keys.ArrowRight && this.selection + 1 < this.world.mapsMax) { + this.world.assets.audio.selection.audio.play(); + this.selection += 1; + } + if (this.world.keys.ArrowLeft && this.selection - 1 >= 0) { + this.world.assets.audio.selection.audio.play(); + this.selection -= 1; + } + if (this.world.keys.KeyX) { + this.world.assets.audio.selection.audio.play(); + this.world.current_level = this.selection + 1; + this.world.startScene("inGame"); + } +}; +levels.init = function() { + this.init_once = true; + this.selection = 0; + this.scale = 0; +}; +levels.render = function() { + this.world.clear("black"); + // animate selection + this.scale += 0.1; + if (this.scale > 1 / Math.sin(0.2)) { + this.scale = -1; + } + let offset = Math.sin(this.scale) * 2; + // display box + this.ctx.fillStyle = "#82769e"; + this.world.drawBox("box", 16, 16, this.world.W - 32, this.world.H - 46 - 32); + this.world.setFont("origami_light"); + this.world.setFont("origami_dark"); + let show = Math.min(this.world.mapsMax, 20); + for (let i = 0; i < show; i++) { + let level_id = i + 20 * Math.floor(this.selection / 20); + let position_x = 32 + Math.floor(i % 5) * 40, + position_y = 32 + Math.floor(i / 5) * 40; + if (level_id == this.selection) { + this.world.setFont("origami_light"); + this.world.drawBox( + "selection", + position_x - offset / 2, + position_y - offset / 2, + 24 + offset, + 24 + offset + ); + } else { + this.world.setFont("origami_dark"); + this.world.drawBox("flat_frame", position_x, position_y, 24, 24); + } + this.world.write( + (level_id + 1).toString(), + position_x + 13, + position_y + 8, + "center" + ); + } + // notice + this.world.ctx.fillStyle = "rgba(0,0,0,0.6)"; + this.world.ctx.fillRect(0, this.world.H - 50, this.world.W, 33); + this.world.setFont("origami_light"); + this.world.write( + "Arrow keys to select", + this.world.W / 2, + this.world.H - 46, + "center" + ); + this.world.write( + "[x] to Confirm, [E] to exit", + this.world.W / 2, + this.world.H - 30, + "center" + ); +}; +let inGame = new Scene("inGame"); +inGame.keyEvents = function(event) { + if (this.world.keys.KeyE && this.userInput) { + this.transition.start( + 0, + Math.max(this.world.W / 2, this.world.H / 2), + () => { + this.world.startScene("menu"); + } + ); + } + if (this.world.keys.KeyR && this.userInput) { + this.transition.start( + 0, + Math.max(this.world.W / 2, this.world.H / 2), + () => { + this.world.startScene("inGame"); + } + ); + } +}; +inGame.init = function() { + this.won = false; + this.userInput = true; + this.world.initMap("map_" + this.world.current_level); + this.cats = []; + let spawn_cat = () => { + // add cats on spawn tile_size + let spawns = this.world.findTile(3, 7); + spawns.forEach(spawn => { + this.addCat(spawn.x, spawn.y); + }); + }; + // effects + this.effects = []; + // transition effects + this.transition = { + scene: this, + active: true, + // between 0 and 100 + state: 0, + value: 0, + duration: 500, + start: 0, + // between whatever and whatever + from: 0, + to: Math.max(this.world.W, this.world.H), + // + start: function(from, to, callback) { + this.scene.userInput = false; + this.active = true; + this.from = from; + this.start_time = new Date(); + this.to = to; + this.callback = callback; + }, + update: function() { + let time = new Date() - this.start_time; + if (time < this.duration) { + this.value = Util.easeInOutQuad( + time, + this.from, + this.to - this.from, + this.duration + ); + } else { + this.active = false; + this.scene.userInput = true; + if (this.callback !== undefined) { + this.callback(); + } + } + }, + render: function() { + this.scene.ctx.fillStyle = "black"; + this.scene.ctx.fillRect(0, 0, this.scene.world.W, this.value); + this.scene.ctx.fillRect( + 0, + this.scene.world.H, + this.scene.world.W, + -this.value + ); + this.scene.ctx.fillRect(0, 0, this.value, this.scene.world.H); + this.scene.ctx.fillRect( + this.scene.world.W, + 0, + -this.value, + this.scene.world.H + ); + } + }; + this.transition.start( + Math.max(this.world.W / 2, this.world.H / 2), + 0, + spawn_cat + ); +}; +inGame.addCat = function(x, y) { + let cat = new Cat(this, x, y); + let sprite_data = { + image: "player_sprite", + size: { + x: 18, + y: 18 + } + }; + cat.setSprite(sprite_data); + cat.sprite.addAnimation("idle", [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]); + cat.sprite.speed = 0.2; + cat.sprite.offset.y = -3; + let spawn_data = { + image: "spawn_effect", + frames: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12], + size: { + x: 20, + y: 40 + } + }; + let spawn_effect = new Effect(this, spawn_data, x, y - 1, () => { + this.cats.push(cat); + this.world.assets.audio.apparition.audio.play(); + }); + spawn_effect.trigger = 4; + this.effects.push(spawn_effect); +}; +inGame.render = function() { + this.control(); + this.world.renderMap(); + for (let i = this.cats.length; i--; ) { + this.cats[i].sprite.animate("idle"); + // draw shadow and cat + this.ctx.drawImage( + this.world.assets.image["shadow"].image, + this.cats[i].body.position.x, + this.cats[i].body.position.y + 2 + ); + this.cats[i].display(); + this.cats[i].translation(); + } + for (let i = this.effects.length; i--; ) { + this.effects[i].render(); + } + if (this.transition.active) { + this.transition.update(); + this.transition.render(); + } +}; +inGame.control = function() { + if (this.userInput == false) return false; + if (this.world.keys.ArrowUp) { + this.moveCats(0, -1); + } + if (this.world.keys.ArrowDown) { + this.moveCats(0, 1); + } + if (this.world.keys.ArrowLeft) { + this.moveCats(-1, 0); + } + if (this.world.keys.ArrowRight) { + this.moveCats(1, 0); + } +}; +inGame.moveCats = function(x, y) { + // see if every cat are ready to move + let canMove = this.cats.every(cat => { + return cat.inTranslation == false; + }); + if (!canMove) return false; + this.cats.forEach(cat => { + if (cat.canBeControlled === false) return false; + if (cat.isDead) return false; + cat.move(x, y); + }); + this.collisionCats(); + this.cats.forEach(cat => { + cat.applyMove(); + }); +}; +inGame.collisionCats = function() { + // check for other cats ! + let need_to_check = true; + while (need_to_check === true) { + need_to_check = false; + this.cats.forEach(cat => { + if (cat.checkOthers()) { + cat.target = cat.old_position.copy(); + need_to_check = true; + } + }); + } +}; +inGame.checkWin = function() { + if (this.cats.length === 0) { + // everyone is dead :/ + this.transition.start( + 0, + Math.max(this.world.W / 2, this.world.H / 2), + () => { + this.world.startScene("inGame"); + } + ); + return false; + } + let win = this.cats.every(cat => { + let tile = this.world.getTile(3, cat.target.x, cat.target.y); + return tile.name == "exit"; + }); + if ( + win === true && + this.cats.length >= this.world.findTile(3, 8).length && + !this.won + ) { + this.won = true; + + this.world.assets.audio.jingle.audio.play(); + + if ( + this.world.maps["map_" + (this.world.current_level + 1)] !== undefined + ) { + this.transition.start( + 0, + Math.max(this.world.W / 2, this.world.H / 2), + () => { + this.world.current_level += 1; + this.world.startScene("inGame"); + } + ); + } else { + this.transition.start( + 0, + Math.max(this.world.W / 2, this.world.H / 2), + () => { + this.world.startScene("menu"); + } + ); + } + } +}; +// destroy itself when animation is finish +class Effect extends Entity { + constructor(scene, sprite_data, x, y, callback) { + super(scene, x * scene.world.tile_size, y * scene.world.tile_size); + this.setSprite(sprite_data); + this.sprite.addAnimation("full", sprite_data.frames); + this.sprite.speed = 0.4; + this.sprite.offset.y = -3; + this.trigger = sprite_data.frames.length; + this.callback = callback || undefined; + } + render() { + if (this.sprite.current_frame + 1 === this.trigger) { + if (this.callback !== undefined) { + this.callback(); + this.callback = undefined; + } + } + if ( + this.sprite.current_frame + 1 === + this.sprite.animations[this.sprite.current_animation].length + ) { + this.scene.effects.splice(this.scene.effects.indexOf(this), 1); + } + this.sprite.animate("full"); + this.display(); + } +} +class Cat extends Entity { + constructor(scene, x, y) { + super(scene, x * scene.world.tile_size, y * scene.world.tile_size); + this.old_position = new Vector(x, y); + this.target = new Vector(x, y); + this.canBeControlled = true; + this.inTranslation = false; + this.lastDirection = new Vector(0, 0); + this.isDead = false; + // Trasnlation of the cat when they move + this.transition = { + start: new Date(), + duration: 300, + type: Util.easeInOutQuad, + start_pos: new Vector() + }; + } + // apply translation on cat when necessary + translation() { + if (this.inTranslation) { + // get current time ! + let time = new Date() - this.transition.start; + if (time < this.transition.duration) { + let x = this.transition.type( + time, + this.transition.start_pos.x, + this.transition.target.x - this.transition.start_pos.x, + this.transition.duration + ), + y = this.transition.type( + time, + this.transition.start_pos.y, + this.transition.target.y - this.transition.start_pos.y, + this.transition.duration + ); + this.body.position = new Vector(x, y); + } else { + // apply position when translation is finish :) ! + this.old_position = this.target.copy(); + let next_move = this.target.copy(); + next_move.mult(this.world.tile_size); + this.body.position = next_move; + this.inTranslation = false; + if (this.isDead) { + // delete cat + let spawn_data = { + image: "water_splash", + frames: [0, 1, 2, 3, 4, 5, 6, 7, 8], + size: { + x: 20, + y: 32 + } + }; + let spawn_effect = new Effect( + this.scene, + spawn_data, + this.target.x, + this.target.y - 1, + () => { + this.scene.cats.splice(this.scene.cats.indexOf(this), 1); + this.world.assets.audio.splash.audio.play(); + this.scene.checkWin(); + } + ); + spawn_effect.sprite.offset.y = 0; + spawn_effect.trigger = 2; + this.scene.effects.push(spawn_effect); + } + if (this.canBeControlled === false) { + this.move(this.lastDirection.x, this.lastDirection.y); + this.scene.collisionCats(); + this.applyMove(); + } else { + this.world.assets.audio.mouvement.audio.play(); + // check arrows + let current_tile = this.world.getTile( + 3, + this.target.x, + this.target.y + ); + switch (current_tile.name) { + case "arrowRight": + this.move(1, 0); + this.scene.collisionCats(); + this.applyMove(); + break; + case "arrowLeft": + this.move(-1, 0); + this.scene.collisionCats(); + this.applyMove(); + break; + case "arrowUp": + this.move(0, -1); + this.scene.collisionCats(); + this.applyMove(); + break; + case "arrowDown": + this.move(0, 1); + this.scene.collisionCats(); + this.applyMove(); + break; + default: + } + } + // check if we won when a cat finish a step + this.scene.checkWin(); + } + } + } + move(x, y) { + this.target = this.old_position.copy(); + let direction = new Vector(x, y); + // get future position + let future_position = this.target.copy(); + future_position.add(direction); + let layers = this.world.terrain.layers; + let future_tile = layers.map(layer => { + let index = layers.indexOf(layer); + return this.world.getTile(index, future_position.x, future_position.y); + }); + let collision = future_tile.every(tile => { + if (tile == false) { + return tile == false; + } else { + return tile.collision === false; + } + }); + if (collision == true) { + this.target.add(direction); + } + if (future_tile[3].name === "ice") { + this.canBeControlled = false; + this.transition.type = Util.linearTween; + this.transition.duration = 100; + return false; + } + if (future_tile[3].name === "trap") { + let dust_data = { + image: "dust_effect", + frames: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12], + size: { + x: 32, + y: 32 + } + }; + let dust_effect = new Effect( + this.scene, + dust_data, + this.target.x, + this.target.y + ); + this.scene.effects.push(dust_effect); + this.world.assets.audio.eboulement.audio.play(); + + this.world.terrain.layers[3].geometry[future_position.y][ + future_position.x + ] = 10; + // cache the map + this.world.terrainCache(this.world.terrain.layers[3]); + return false; + } + if (future_tile[1].name !== "ground") { + this.transition.type = Util.easeInOutQuad; + this.transition.duration = 200; + this.isDead = true; + return false; + } else { + this.canBeControlled = true; + this.transition.type = Util.easeInOutQuad; + this.transition.duration = 200; + return false; + } + } + applyMove() { + // prevent cat to move if his target equal his actual position :V + if ( + this.old_position.x === this.target.x && + this.old_position.y === this.target.y + ) { + this.canBeControlled = true; + this.world.assets.audio.bump.audio.play(); + return false; + } + this.lastDirection = new Vector( + this.target.x - this.old_position.x, + this.target.y - this.old_position.y + ); + this.shouldMove = false; + this.transition.start_pos = this.old_position.copy(); + this.transition.start_pos.mult(this.world.tile_size); + this.transition.target = this.target.copy(); + this.transition.target.mult(this.world.tile_size); + this.transition.start = new Date(); + this.inTranslation = true; + } + checkOthers() { + let others = this.scene.cats; + let result = false; + for (let i = 0; i < others.length; i++) { + if (this === others[i]) continue; + if ( + others[i].target.x === this.target.x && + others[i].target.y === this.target.y + ) { + result = true; + break; + } + } + return result; + } +} +let controls = new Scene("controls"); +controls.keyEvents = function(event) { + if (this.world.keys.KeyE) { + this.world.startScene("menu"); + } +}; +controls.init = function() { + this.loop = false; + this.controls = this.world.assets.image.controls.image; +}; +controls.render = function() { + this.world.clear("black"); + this.ctx.drawImage(this.controls, 0, 0); + // notice + this.world.setFont("origami_light"); + this.world.write( + "[E] to exit", + this.world.W / 2, + this.world.H - 46, + "center" + ); +}; + +let game = new Diorama(parameters); +// global variables +game.current_level = 1; +// Add the different scenes here +// the addScene function link the scene with the world (game) +game.addScene(menu); +game.addScene(levels); +game.addScene(controls); +game.addScene(inGame); +game.ready(); +// everything start being loaded now ! +// the ready function must be called last ! +// Making the game full screen and with a 10% audio volume by default +game.soundLevel(0.2); +game.fullScreen(); \ No newline at end of file diff --git a/Games/CopyCat/style.css b/Games/CopyCat/style.css new file mode 100644 index 0000000000..310533f426 --- /dev/null +++ b/Games/CopyCat/style.css @@ -0,0 +1,24 @@ +html, +body { + margin: 0; + padding: 0; + height: 100%; +} +body { + color:white; + background-color: #000; + display: flex; + align-items: center; + justify-content: center; + overflow: hidden; +} +canvas { + flex-shrink: 0; + background-color: #000; + object-fit: contain; +} +.crisp{ + image-rendering: -moz-crisp-edges; + image-rendering: -webkit-crisp-edges; + image-rendering: pixelated; +} \ No newline at end of file From 0945a57dced95ed2999874becf9d5b984190224a Mon Sep 17 00:00:00 2001 From: Namrata Diware Date: Wed, 12 Jun 2024 23:21:43 +0530 Subject: [PATCH 2/3] added images added images to assets --- assets/images/CopyCat.png | Bin 0 -> 137901 bytes assets/images/CopyCat1.png | Bin 0 -> 110059 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 assets/images/CopyCat.png create mode 100644 assets/images/CopyCat1.png diff --git a/assets/images/CopyCat.png b/assets/images/CopyCat.png new file mode 100644 index 0000000000000000000000000000000000000000..306bea8ceda5cb6384b567cebad976ff3a8a0499 GIT binary patch literal 137901 zcmeFa2RzmP`#1hR$B~u2BAbk?kgSZ1B!rZaRdy+RWgbdaArew%X^BwTBeRf^B$2JG z>^<-69DTmu@8|y;_wRoE|G&rozVC-V51sSDdA(n+Yd){%b-mw(>z+|3CuJr@5QJRg zliQVTNE=Ix zUJE*%RqFB|_5HQ+vu|hH?Wdw$%OjJ0$lExUyZl7wi8u@sMWaZTpGNDP&WiIv(2GGL zv&dH#$CNN8dU}d9@<%(4Gmc75_J*vFFYHY1_RHkl8#*e}C%OvdAzmknBz%`wfu+l zX=p@O)X9sl3mHkI5#-TE(^Bord#F!jC&v8Bp>LtqJ9H{!Msy<}xXBF@7os~_hjYpT1c}?G+ zy2bUm^Vae3pjyO|SS-vw^5B3%5hEK#biiww;r+c<_H6xIBswIIZmQp$yeU%s`(rTS zP-;F4QAt`rOa{Yc#johX;0HNHiqqts>Ebyz4kARog!Pw(Dvsm}S{p}{JvpDg^LVR} zY13JXF2I^k{PfpD8+We-usy%>bV4?p>(x^9(%oMVj+r`rb#85)Ggds8O4NEu(brP* zwTjU}Pg1#P)|v?vt3y5WYtN}7I?CJ}zWh!}I^mP|b&h?Z-sJ9UdlYXV-uk@$dDnPk znP{q_*?QEzY=I0W%M&MU6&{gP68p)TeDGk=@bYx^L@BNN->t0ZQ*Ej^7hl{Wc)@(5$xl<{~_A$ zy_z$VDUsLU#P~i@B}H!{1#V(xC(uCdQ7CS`~8)40%tQy>` z%)oW%lt4bJJK`KSQOwB^I#;%FRYz{hyXGU3^CWe;^ykPVm0z{#@e|l&T(W18rT(P! zG$Uk;%U$L|ltH?0o9rT;4|REzXS!$`YX8N?L<-vonTz{xhp1V8G?L}5|9P>_h{+(N z(^7j@!J@9@wZatlncBT;Vn2^oUd77Z6P1mk}fsI3!3C&%hrq@Y_H(-Cb=w z>9bwFYCX-6KxY+U%z;^pJ_|UF-!M1E!8CI$oqV0a%3#K zP3D=K%CESbyCV7txuxd{4OSwieaoqR0(|_+EzA9Vx|S5iJC+ER3YHAVyC(aks>rAI zXOL$xT@{zMYLilSxYM~SOaEJwtTkshOAdL<=$?TcNu z)s)>so3i@Vn=ZK|pK2RaFXq=j?jDgbOKy4mtF3AL)nb6YN(YsG__#p_MMtacSKB#T zvgYNaA5u>fC7L@vbtM)iu9zem-7ZM9(X(=Ch`svpb@LljyKdXHzQ*r|+ppxEFFzms zHbt_hq^+cWJ%zlpzRUK7cKjzvlMLaSV?Cakzis5cv~-GeJ;*VeHeD+SS|Dow4*N5-qez3lh zk#%1TZr9GVkn53gdnEWU_fC2g3A2QkR!yRz$g+rEg0@JZ>E)bZQ^wMFMFAdeUbLm1 zB}*kHMNdl%OZu(t#WD^w9r$&em~ETQO+MIkbiiDwkcJjo6pYkx_)gi8(ZijJ43Gx16|%_>!tWPnflOPE;AY4XdQ&g#A%5 z*~2AV>zA9y5{<>K<-Pg#F|X9BzizGJRaogkCtA^PCkFE_d=nrNSsJww{HwvFW^&YbL36G3b9skmhp%{ieLrLaGdYDu}OEb~azNFrLaB-Q*Q{sM$x50sP zt36tNyk53VLLJ5ncJdEDJuLU25a+vgrpa`nIP#}wD_KgRgMv-K@@7Ayv@pNftmmbn z>MXUBkw1lfHZ^BOCDmT24P_)pmNPh+2a8e*jT_0@j;}xIkGNjPc>3Y##?uu-!y=`# zlVcW5fvlz}6=hZ-JrUZ1;esK8PTBKjZ(p9veDiv7Zo=i|rfp7Y-qY(#95 zyY#+leD#PAO_0hiG^%vnN+3@eYLb$rsr#8sAYD(qHv0k-y~I<8-_Kh1Y>8{_Z)Cr_Od=If-VkI;T53OUb=*pPg{v zku3K;yKLHb@O5GO*L2TGg-8B}Hr@w(-2O#$maqGrDJlWW~Ojemm}b);)jbT>bL~ z;W(4&6t=+i3l8oM4N0#hezoj-B>$uSs)NEW|LJenTNmyy9$=ghEiub>@VcfrUphIX zF54?RAyRB{rD)2f__^EFU*UokhG)#ki+q-uH@??RQg_KY)%F*8NQ~Nc3HQB9>5(b4 z_#sfVur^)hd(*dWrE?}h{)nIMQs{5?jgsDyD8>EW-?sUe+kZ6lHi)K-$gh1a9}`%* z+$|Aj*D2p3-{5n@M^rI&wrnG0tnODuhN9$lw%_H2`B{sAz_%;WGcy5)0wh;`x({wi z$@Q0%U1JJk_MR14`SEL|j(t&aYW>6Nw`GC3j)K;XikOOffp53IFA7ifl)vwNe}Y=Q z`R*3!#nF_=ue`5JPDZBs zDGDugErbcN{D%=2HiT8ewut<9r}f6^=hTA=7c~dE-t-=wb<(Q%waGb?+N$(o0v({R zLuN(d7aQ;IEea(?gpHAgt+qCD7~T^j7!)%?2=7qvrGPs4kM}20{0IU5`)C9Sy^LV~ z{LUG8#r=taFWhH#UkPGwAw=+hH1Oq}hW_if_hHir{_)-veukXTSJBXbSA8p28yiPA zdnfn&XnrmD28r`2V>bk0IE4E`X`JPmh4sH(K4;`^q^%`u<#bKtlC_hijfnR(XWTl- zac^08d(FoE5{LJ-tB!86-tt`d-;jm(xNnPcao~T&-9etqNL!af#mUu%DcXwx5QBf~1FA*;Z5hqtWQ85`A8POx+qT=Gh@EgKz z*B#w2c?&zbaqlkj*E*^;ZdR_Bo!u`xIdb6Ey=3X+;V#d`g}cx{{_O74#{2R=ujJ_V z=U8w+QQS{N#YB#X{$p+U=yBY4Wpyum+gvqPy?hO12G>v!J0>oD9RGoT^P_)W@?Sn` z^sgU1cJyCA`Y%8Fe}445n~kfA(>1uLyTU&e_UFU@`oljTJT8hm`@hIySJ3$Hf}|Bl zkBk08YYLKR5fe8G?zx#@NzayKk7Q%%fN{EK)iF4klsZ#k| zk0#egUXCM*oHy=1lJHa_K61}A7?a3P^N|0NYSt#ED30W#N$xwKlvr-arC(9>BfC~*a`L)hHJeJM6iNd^QjTl-zq zLY%}X6f||Ht4z)od3Prw6_zZ1_fxnArUmJ+XUD6XN@=PVJ@4#a_=}WGPBrWhgQ@Y{iXUjnI2-JYfT$wYlkjQ5p6_aP&@}R<7?&V+(qeSI5htQ;J(~fGw+LQU}NFNMLP24da!u;3h_ms8J8hp;-X|WCM3uU_AwJX zB<}?W@!j`&dq1k|kV>T2Ba#8(mUg?}OrWV-3^TI3+i2cBB}FeKzutM@^%{$wF1iTzX%i?w~E+ElBzz+lPg9&k`mRhgiV990lu+Dh6#L#otus(M~Stn+eUecvrE(tW^ zx|moRi}YnY{$#`l)^R3^&CQSof1bvxR@ptUm%{WX!?u`S?ObDN71XK z4APV$$l5ptdO4PE%_#+IIPTM0xwdQP$DU7>Q)#uzZD()$;v zQA7m#ZdB3K#9%rsQsK{XkcU&h=nT?P+7iQd z9PA@S{hqN6A?P=l%U>EK$CA;^{1VnU&olm14psJK*Pi{JMDT36^WjxfVpsHW{fK;= zQbBVQ2xCTEN%l3^;J2F(Ld~rf*LMrmz+!K2o;ln?;s{K3j`fK~)d%dTpH%idOL{Tv5++T3j{$1 z4%WtolJNR~f6D__cE2Mu`GOZOix(0R+xMxe7VlrQYa_s&B#6_hF%sN8vPxpg1vWFR zTz``huFgb9`O{@!Um+~ms!|Y$m&P0$ScfZuo&mA+9jf!4#;giA%M%#w zlwx}QL(pxdN!7k4v{j4mC@AB4!ayF^=t#35y7}2GAY$d$K)5|OgTq-swK5#1v|Pv_ zD*r7&2IEiior^rF_B^=D`Cz{pWsrsGP_t|<_+*a6VQL!8ECdtHTe3}8Cb$InsT8h6zp3^DDh(-NTYnX zW@;HeJVj4w3rVZ&?@3Fu>W3je@;f=XS?C1Pp;Fs5Xj%Jr11B@aAi#32!iqIZkU77l?%TXblVC z7a4_{LQ1N5nTFHcxiozUJN~07p>G2hOBL=~AM%1Frg^n?%)rFVxIW6#ft?cC)Q^Fs zjZ>+8O@rXU&o6P32t8e)jC!WRP;e{thI;xPzgDo_=^+*lkyTxvN$LF^Dm;0UC z6U{3V^D}%Qwe`uL8-L3U@y+U-aR)1iP43xeJ428`*N6O^EAWbkt>6gE#$V5C<7IK) zj&4hs6FV;az9o%_22MhtQh$#T44EOw?%OcfMMKDK5>dGNZu|z-kTS-Zfs~AiQ`4h& z5oy$EL*9dM4leOGDg%N5e>P6vsN|pm zrFx%(6I*!dh{P!Z(CrP5d<+R*H9Q&;`-+oc1*uEx_$XLXd)K2EY^*p{jC&ExV=;{T zWgD2-(T7Z69*h>o`;G9T*TMe-=MCL0Vnk?k@Pw1ShW?>%n-rKB?d#Fe1f z5d_l*dAdw9Vx^a4)+7-JGre~6w3kH4$~#`bwXAHsh14LA9)3D48#hq?E|RG-d`Ch^ zD+8)^Rf>?ScH5x*@f2)Cg3$iuaT7Wz&@-Er>g8eK<5EXPM>}Dn@sU+iIBr5@1_wp+Q z(^lD4Aq6$WLSt~q#tQc1GHdMf0O{Ke;Ij-JRRvQ=AxPf2O{ujDTRLiI-d)woHBmKg zHNypCk(|YzXn-xES=nQ3a1eRZ@wa@C+3ZY>&&$JWih%qwK#s-Rf-hg}=I9Bx2sTDI z2!oQ{2X36t-#uaVSrZPc`C4Ku2n>wiM*TgA-zK~9dq6mp@bDu0=*viA0K@6396oCqOkF6Dj<({BpBLm*k`_f zSmFRLNL3sC{%927FBWQE-eMGF`x_ibLIAJ}?gDnayIqU9sWm8z(wdP~@tNg-jj-w2 z#?!-xNh1~qA>6ryi92KiVmNpAaq2Y4WSZL6|2+KoaO`3Sm?X$zB4vS7r19|`zk*Ol zMSq4^`7Ub!C-Hsu*+CubtKnIGmK=!9OZQ1@4#*(qu8kQ~a`&%fEOy0%BS_|FzkC3) zxN3r|$L(zLb>?MN)?<1@dZph8y-GxgYAw^;yI>2SkG&Df20G#F{(I9GXsb*vgeKI{ z11crG^cj%W>gmbZ{32x#$-L8cXyAg_CyTAkQN@7GrASHvq#UUo76loJO0N>2IU%Z% zy`M$UIv@f*j!lvvI0y|koeA9!60QhRro~i1eD)&<;r-VN7O$>#UIBaAXb92f&53i& zfMyDB$!4ZNN|6z}(tI6|vkjp~{c(`7>y?qjLI?~Qye-~OL5^qcuq+tt;9_?BlzZuv@n>z=OLEocYjSWBT(N!-SD;ounS|o(zQLfim=vtxcvG|M)oySz z7@sOVpw%k1oPAs!jMw#zcMnuzLoEJZQveoQ+t1}dIas%g(`WAkj8BmR6tIWe_i+0j zZr{W0d$@fMx9{QhJ>0&B+xKug_Wvzz*F|2m@UNRFBONBek4{kXKm|f{>$ZR>FiJw` z*4GVCPe+k4(VCw^oOXE^D5>a0cuQlT)}m5SVTT4D@LH_#Iav-fSKt-m3gY?A@g?)Qgj$FH>Y0kiFU6l$`u zS+VOltWTR^`>Y12sZgSraiBc~#lP(T0{q2ijxeDU&>g&c(KcoupznPrtVw9_CDo}| z+x@Omu!3XtVn2?(@CfIgEJ}rHOwsD(7!;!8)anN5P$Jk%OEj**eip1gkRAnAgWT?< zOe(%kkW~yde&32YBLDec8OK@rT_)WS$D~88@c~6#rU`6g0^Lk8?Lgs?mHijDW_J0t z8C%ksYryUI$R5{np`*+wO?jjd6zfS}STMyQVIcN`VCjC-ko?S(gC%<86`Gycp)UPfYc~?=Qp4kkpDJKC{#G^3K(y!n zA=>esQYT080t`w^6cuUs3P_L?k6B|s=v2j4*EQ9{euf7M7LP)w6i>Vi2xkS^bzg>3 zikXQ$aaW*O;r-XT6U__5@>5E2#F&}scp*E`jl2D%*?8Zg&kj1kNa4ERKJY59?=uC| z@Hms9!TDWot@9V1ya=>>g|RI$>NvWQ`$qla1fVN+`$+?WMEmXth(b4Tmv^Z$p&&cZ zVFvVx@vW2~N^X3SOrdF%wIL6t>K1KpTeBSE|g{Sk1Otyr?n+#8@;BBJQ$nmCEj9lOB_eOnoPKMAp* zuC{$P3{_-9XbfQ(m9M}XLa?laHnqqm9^pqLf4@R`AJAnU5J@z7AR zD8@IGpm!F|GpP%9N_USblK{9W6*}V^K%-=&H6LKztwSk{o0$Wu7jZl~t`6z3D-aJy{HlvEu(w?H1( zXo-3A<-w&lsKnlDgS#eUf-kc`6HSIoOUso2Sh{^DE|LP#Zn#UdJb$NNQSkqb`3rKC^@M2=BNa-BJlLZ;Y;r%;;H@AggcCkYuD z?C^)Oexo)xX$lDH#pNi9f}U`Qa{5OTn_57_k1}g|JwdTk4Aegh1cP+SMnwZwatlpc z*mr)gUzN!{6XzNwU-4NW&ba9jMqw^q?pNk?GCJmg^zaXeuBC*6kB;G@E4fNztRr|w zFXp~u5BS>mkb8tbAi5S)iLw|H%9^v zjAqFF4rI@iK7u&Wtk#-5j6|F)uWdYVo0^M%cllFw1c~2}V4c3vcUHo*C#y_l5lEJy zT5LcGj!T=Kv+?(Uy~y5Q{E`d=l3Yc0&V6W^HO2L<|5?jlVz4}32IO>IR2_)&)Ya2` zSLm>^Y8~Ffi77a4Hv&xZ$;G*RNw5XkO(6w{{uY_EUbNy8%OKM6h+nV=Ec0+x6kWE3ys= zGU=wRMA)PM{wT`dV9}nOcJJAND^kET*xd*Awdr-i7$vc4pEC6TL87(-=W;(0jm6q- zSC49~alzMYCky!^nQuE;z1WOyaaF__Kl_bg6(FJ_%sv>;hJpYo-_Io-0zPSX?&ofy zE@l<6jnjcs2Gtr?{8ARgq>!jq%x{`^RSF;;ce1-nj>s2a3won*Y<0uHYFiXAh>Wfb zo1EZDD$ahk|6mZ6Muh253fS%uTFV`Oj=BF^MHaXqy7Pm`Vrg|GdS{x_M`)zxy!+ur zzhI7ofqtX3jef(YsA@dIyyHoBe{3B@o733C@*V z1;B9m;016-ELvBr?M6u^a!(K$5+ph#rEhi`zl{Cmbun*xlveKU7>J|KkKv~E2`~;1 zq4DQZkn_C!jLn20p5NyyUpl0OdggT1;?-?56=9m8Otl-apE7=xvAFEPoIY^Z%x?3A(c<}phxASZ- zyp1FXKp#%_A-D`Hn?lxK4U2X-Rc1}YNFBJ0nDeckl&VJM)}6)5ZT8Cwfg5&}3ENro zHx#!^O47<^>w*ess6XyHcbaH@OeV4M73^+ytz2&9$nKc0aslHa3zz>oOD zlnaNmG-^eTj4-W+HgQ}L#Lh*FZ$5YUM$fd)GY;L`pEWhAIF+|Y<2nhskr z@4dtbwsf=4_Y7(bm+^znV0veSAgLC+8AkSd8HdPevsfi4$}#?N9))3`Ssj@V4;0>i0E!D3H$7~s<*5&${oEV6O~Kvig|JPBCDzF} z_KnJ%sU-`Xf>+iL^~KOShxtD)Mftv69zoeD5o-~jOCjg0xw;XCZhM!$7GPN_m{Dh06~%aR=w3h8dr7`qMi*(MG1*jLjHyFiT(u&G3$=4ebNs1_ z@K?#*zeWaw7`sR5RXV~Xt#6dlJzeo6u;)xxeZe#1|sZWH0KdHVztNtEZyC7Rxl_(SMTb|3h@z994gJl zp;GVEDn14JrKrF^+qfI}s=`W!4pnh7xDtk$a58&;@$GUzZ4gX35uxMlYFNLv^~M-zwNqDB;+yaOI2C=7+os>$hU)g) z^{7$EG|VL1>nEx>m+wyRyV3c5gPI6RK31G&yo_`_Dd@2IwG5T5gw`&|f$an6f*ZPT zh$&9(N~4M|ly7rVP-QzmnQ%6#YBd` z%{)8v1dRo^{+RsWEPk2Tk5h?yfQ;g$Vpuse6NNC1B&xq^=7ShKPoeBNH@n+Rm2rLG zzYk1vsB@GIxUDq0j9eq0I)&w`iqdOu4*%vLEkTMYp$TgVee_imW#3`%O45Dwh!)x3 zCatAomE7O|n)a}kPCAOIph_d2B@FFkukC}$6bAGtCS&2!ni84ZW8@9h_EmckPTWw@ z--N&s!%by2TkJb3J%0@2$)iMlvEiBhPt_^OhfIWMGu-CSOg=&0Ts~TS^D6U!EW*F- zoJ9k_aar+)TFht*Vz8>HrTp&)3tXE#$PyV-0xoTF5LD^WP4>J2P$t7nSBc zH%fbGdGypc6`IQX1Qy*!(3Tsp-Ktn|acOQ?aji9Qey;GT-zn7Cy;EX3|IVno0Zkh5 z>)7q@dEr|Zwr^9Q)FIlk={-f<#Wn;GGZ^LkcV^LzK-3qhe>yR0OjXt?b7MH1xgq^f z7SUlvc$o;(B9S$gf4f~28JZ3yRK59|D}1Za$o?jRapZvnfl5HP)$wE^?$DK1`L~1g z7f)chuxg2wW;}U23}knxuvK?3{D}O(S)?S<`UP5-FS9J{VJqdK*}}kO-<}p0|7!=C zd6#*E%$7pl_3h`#1-`={H+SMi9AxG}H&}y<3#qCX-%hu+Yjjte3X)`hVJmrgo5%l$ zwo*FGU`O-gR{jJhL65i{L`U4&(obZGRXEh(RZ8{kyoJ3(!v0HahQw*Pf{UvRXi9YH z1b+l2F1~E>pkI1~MxAM7_<2F&;*;ezGaH`qNk=s4E66&kcj1s%v+#%Pq0+rNm0CR# zvnU`_(GyaYv#xAXYE8UQq>T8Rr8g8(dBcU&_5AR0l8@Txm7Kf#*>^{}PNN0ihE5;m z*0AuR)wPE*mpcM>X)A%3ckeB%rPU4{Z|Gy4k8?jnFrJ-^-@hMHNo=4;k4=)wSAW^XQ4sJX> zBE#cv~^YzP$wyz>g)yH$Flq?L#=7ce9a3MW9c3j@r(7+f>Qm{U{C*1rtw(9in z^wP#tpSylw=q{uqi(y=_%Wf^y7_Q{yO#AjtG2|oXxW21jAsJp%o*$`xx`ZI>CCbrG za09~Ymr)t31GxO7!}a=t*Vx$OtCw=(F$PyCf1E!VTQSX>)&@5YsMEnNn{7#z7*X@Z zI`jnvrTQZwSI7ou<8YTh~$Er@CBqWAG53nIelzm5nOvIA&>I!jd4`E1DC zUh%v>>pPYs9=qrvg$gkM%gO*(u{>tTfc^GNbl;8E=tF7W7Tde>#^2Y9(kNNLrDQO? zuqK8gnqzh!D&&@J$AF)7W=%m0hVHwH#UqKZx1Yc|m{?Oz3`ho@Cf7rJX0wn**_kXS zUF5;gASb4eOSiaKoxl|p{-Le!5wbqPcIj(jEV6zY)Het@P6b68RpHTFIk-8Na4TyX+r9}yZ#?KTW z_n$_OIUMq@pH@;zPiNw535D1H#rvi<-!e`8Mj>Su_+G-qvMl(k8&`^K&Jjdl9r1bF%g8<_(i5t0^FG&O0&0&&1OrWLYCVMf9aI5ch<*XNi06{J&dFtPdwl+t~_So5^w*;)MGwR#SHhcYZbOlr2@_ zf}~z2A;w>gI&CWnS@+?cUw2wudO+=T98!QOZ;`#`UB*X7hrI<_uo9B|0A*b*>tpRC zF?1ydCC)=|?;OFDf1y^gkh#BV7?se}L&|#I2N+d#TfiXCbn%I8?JF(^Be;~IM9&x_ zb}aNUKl+U#t&&Bns`<{H3Ui5}J4C3(_$CbFHG%mIT1`UHIwt3=eRXTE_0KdL&1c`j zDtlRFk^WB4eef_XK^8qG*g&(>IOlrZBt7$VG|&YfwBSPYr}4SD{{g@VcI2?s3h}cc zw0Ql`7&rlKS#`vJ)M&^;#$3cn(EZ%F9wde&4b)hM@-DnEp#>yFfJswOmKA*y**f4E|BDAJ&o_vTrBSc?DXIGWPOb4)BM$GDC0W+HP z$DO3ZZ$c}sxCWa~fXrDmHw7D-Mz4iL9hQ#(gd_nMI>(PkNPZ3g=KPUoy}jIN5o8|@ zB&(dILw!$$tY*iRyK~Yamuas42Jjv>!IAIiuD6Fj2~HT=FRg!L$nTo~pRLe!0~Mw8 zQZap8!qYy}rpXF2w+as&^)4=hN1!}Whdgi13l}1Nf(Lm{+DdtOln7V|=9~+P$;$0i z1eel=1Zr_fYhAENB8=su*B8?C*4sPzglzq^#} zi#E3P7avJ{o&x}I6`IRs5ltwhmwmCw4>+|MaGG8^9;Yt6BH=%_j7oELi^d)n;jp?& zp`nMd59GyGq=c7kAM`J`tvyHyiccUB`F?gpjqg6Gd4$A(7J0>Lyg@{f(sqKhi+5D`c+5*)KWkop;PPD5nA8= z#3>Mg{B8wIByqPZFf+I7w)gM}P`vniHIs<4vD&lmHC^^Se15`3Vd@^O#QozhIn&yH zBtBR69ec^kH})h7WS&=B=~`ymXE65cb0$DA@i@3p2>1Zpcu>d-Xpsop_(>l9q6m9C zPljjD+4h`m&)N2z?LW?JV|rvxe?1FeFU##^xxFm62PyX;8K>n_Jo=gxuL&`4`$}P=xqU98OJpw z{hfYI{9vk`3>sHjnQGZO2`-MlHWZMKlJ;!x651Ede1Q6};XA`C(C_0G z#}T&pa>Qx9tfStGHse*vtKQzs5CI%&53PyZ+r^$N_UvNMNA}{yUhLe&UTj9y=U&albyU@@`Jp$Br||n0uRpyr!>elIVFDyRnLdu`rU+#WsTeq5<66P$ zKbrJv6YbyGX6Vc!@jF8_RKAe6pv*^a>{NQX@fW&ZDvbUD^EM2cDWk;vz;wHcC6&Kw zOQtamKB&7X4uJN!WxrWo+-aM}36nS=e>Veckz zc$XmyN20P)h?4rh7i%2xlUr|;Fj*s9f03R$AZ`0y&4R+$QQP+VQbyZdWtDF}@pMLLBn-^JOD`ULY%(-&-x|;v&54O7Zam{lv-tOHz+2VN>i}xO|PyZpM+2WHA3C2R#?{lXC8QxfDz5GrYHW?p09A?Gn|H(CfK1pTz z{Cvdv*-@{f0XDu*ZUKSJr2;+tTQ~w4(7xO?KPk@dFM5DNzL1D(YIsVQ@h=iK@W(Cu z9usW6I?6cq@>WIgaN=b~f0?Ob$)wTFNM&_W@=qCA((EN;ns-GDjOK;ZalP~S$d6Ok zLSU1J2^**zMAjdST8~PE_P!jUUwYCwW53zBjBog>-hye5{kTTJfOe|a_f<#bH|GnX z74YT=jxYc1?5#IO7Ny7gtEb&CrMpqI&5+!mutBUtWZm_fn}c}MOU95WXo;(7yC}G~ zCvaKV0z)5#1-@L6F|NCZ6gGLDG>SXQY*Di5W1}5KvEfI-3C;Na_SN{`@yyWB3EK~S z2qs)Zrz%;&@T%X=Ec^Cv?Shrb<(Zvfi@pkb*o9E_;A}=4Bg-U@-gWN?+mH%q%;$2Y zeS2E}y#$QA)hs@eFZw0k2oCUXHmO-e_ziALHvQ}^5Lppr^dHS=>Y+x}DM;2Ec=ya~ zE(Ed)7i4dxZbb&3|Js$!?S4FSVO!#SfM8h>p3rxN;%DQ+`m#2uQop5f-?MM4bjf|L zF&QMdsepU*jGJQbY6jKPMWs(BJ#;cORcbR-5b<*n#a+Ol4QG?nsyhAQ-d0C}RHQ=VI@wd-xGGz2$3$qlMLxg19D-3N2J!)8x2LN!hqt zUH#KuI%p)04p%d-(CAL-TM?Q;Ir*zE*+t&h5FZNM z>9$8RMAa&scOKZdO&cd{z)oD-M}LQ5EmN7T1k3KAb?I#SJ^v~6qbE>fLwzt|^~Ve% zv}bsa_uzw2q`v8F!#9cqsy{)<%msDAVy$Slt{g+R@x|x_-Vs)8O{t%kaKwve!AlI+|)0)JcA&$`(`lYelLS{30A<_n=Q-n>+^)p=^GRJQt z4ZjUvi5$C`-EBnuuWSQ`H9~m->Gd9jzi?P5;*L(<_>Y@*rH+D9EA}oCWZMUN25E4a zHdCvmP!J~pcE*aL1YFP-9K)f#mA>1P-KD#LBXbsVtH6B7Mwd{sTWd)#2qZpI#7P|& zl@FKWc`KJ^D&Kd(K=bv`mx8NYRxRm zo`el&Hf}=gmx`MD1icMw4*UJ|ZS`P~p6!V^RM?zaEkQGXKb8>vmmb#4Ukq zULVTOUOZvL<9c8$&LGwWw-n=d&TI#0dP;fI_OKIAtRyYgt>^}d8ziU5?)6ZueP z;Hy_vv-Dj4QYaRz*9%|H!$ft7>H4SKoz3C*0*L?Z={e3np#AOKkE8yjj`T!4P&Q$r zZn$Z$SLfXt9wYSc%saPuGf;rP>rT6dg~z#}6qe;>?Dzrqr-BEZ$XWsjj}fr(L*jYq@dfBmkZL*AMC$Maojf*JA{1fz+UM zW}NS>3fD4&$~%FtqLdsrT+AJt!U0!beFj6srmvrV!sFg?jpO!rw)k?6#wZuxU z>iuC!^bE%Y8%0Q!sFSuKe`FzVL=yOsS5`W3*o|)7VUH1|lG!?bpwD$++TBxurMzvewf-o$KOwePH#N+xLS<4cp~z%}3M zSRVFAZ%k=Rw~URXr025ab~+7PyyT8KSQ%I0D!4OsEwp?~LcBP4SGQw_|Ce`z=ycg|58aPo4J=z@Nj%y3pZq$Ap92{FhT0yX=B(Mr(9#@9@-lz&?V1V zS!uVn5x5lEuPFUG9^F=*w)LrU)5|8ap!k0JrpDX3&QIS;`RY(4{+*+Vz^Q~P0jc2u zYi>lOoV%WG6j^iN(c+V^gqpsbfp2)*VxX;CYdbU}H##b0S8`k*H^6EGEz4atrbHPm zjeg~E+w6fKoGX@%9y%XpW{l4wKF({MtvhQCGt_2ITR70zCD&a>M5^Sw@6_A5-^J?- zwojxvT)dw*kpZzn5d_S}1cZtedim$`%6SZ-VzT3!)ZnpZ@AEno(t(lV1x8M@&#SS? zxW)Z?7H&YYiQz9w#v=qATyR<=eNe1KWxDR(WJ*kbf5Bs9aX=Y0wz2753S#Ja_E_}A zF@^CAX38x5g*7?$F8qJAsEdAiJyq7ZM_;+Nl&T(W{!Sn93Af)y6Q;?ep4Wk>_F~E7 zprMP>(Cpa+NpKeyG(BXXc0;piL7%guA(p}vR_>n@xXdYhOM|VR`YQwNss*&`f8Ehs zTH*GY1=9@V=&yx&0m8I|u={0c-&gMo_9(P!j z&cWqCW?Ti`oa?t9dKNi+%COA%PlM=7kb+ zcJPUa3*>oe%wg%MXPLPry@rdA8_DV}u;39w*?%1&ylBcP;tRReFh)_#sGs9Il+sU! z{aFktvgOyPKHS1hEqwjN+c{xl)0z{IoGC;-!ZRVyaq7NzQDudYR*}JX-kksI(2;q83ZkhH&cf|Kl0nY; zIK)ixVmE%U{CC8UqF+*kY1bh?KUlcF27}j{s+#7y*ZedYx}0_EP~kP2WPG$7(-AqM-a z>AWb@&91wI$6!tWbqrQA72$i<-uw1+jIY>e2_FUEk}$OHBg)c+wmj$is%q0^ z#oN24b?3juv|_-t_>oQl-fpb5Ju-h{BDihH#tC^?CeO`2)UuQeSBnrBgK5M`R_WrXRkwOg*q*I7JVz z-!fgAUDmtnwivVv&#mWd2FYIFT#xuL(nJ4eJ7WeDfc(uxb1bAsq;QWDX<7s%&g8R? zfl9hviAxA~Z%WVL0E<|bJnr@x?>mL8z>1O8MVG9NrL2VvH8_we+5N14RA2x?*p4X2 zH0 z4X6@?zXm!Gc)1&HwTa6ta5K%YWS?hS0vAYi;%BDsPsRxLTmj@!(m}753wb)X*94bI z0RiX14Kl1{4)uvJcX!y|a9fG>6_vl5_5AOMGG}~c=`OgWhT_j<>=I>xnhqMVHtSGu z{8N{^4LIkh105;2duqz+dnlln6f&g#!_U2SQ+aL})Gy&S++r-a94;1!H!&dwK%6(c zJ{?$qCg78qM)qf!^clHfS`}t@8F!(t())%$$!-KC zJ4K(QRdWFgD!xK6FfGa;3>t%Lo@(aO_?}}){CWm*uPbtraW_o2iTguc15ctO#GE-A zLmau=U6oe9eYq8PSDX3pH6oxhmFF@Y6-w*^(pTpmpxcs)U4CWLZ`3AMTINE%%0LD+ z#rsm*+qe$zXRlGpFYTo5hN`^%IUmS&>-562@F1FbAD69aPAHY3V9kQ_!ap0TyvQT?}>bcU8p zsp+EF5eym~PxSa=SSr8<`>WqMU*n%g64;tYuQ)MXJil%%5KuOK4tWuc$oFX|;qjkU z?V2+@@#7JRv%(aM+1Gaul%7E7R_+{C}4;?$WLq&()nqdykx6--!DC+AwBg<0rdBX#!RmZlCWv@Oh&Ga~QC` zeZO>R%T=2{xZ4Yly9Z8U4g>D4{+9>hEKKT;s0JAL<;5aw#j)EJR&rDHBij{g4b9LG zZbx>16Jv(pzNn zVAXRTSI&H+@Fgs+{2%PScT`kcmoHjX6j;FF0Fo3`N)c2LP@*WIL;)3$43bR*38Dm% zT&S23!9YepF_1x`2nC1%1c4&wppr9^^PRg2zWa^a-J`qTdt>zNe*AI7I=J^*YsTN4 zYtC5?tA{h;mU}v&a4cXqX4^LvkE2JyLvLV7NWg>nuv3xNM7k| zkJVQ$A^PqoLWASSaz2|K9~+PK`7vUKVepDe^SE?sd}%917rcIt9L)@-q)NzQ9e{}e zgY&Q=iop0!Lwi8QHp#e2#!YG5RBFgc{CBX828O7`7e1?Lp((e00fZEHt(6uPc-@?K zId+k*`8jH_RpJoiJH2qW7S+KLi(H;XWY&2_;~kZdmv#+Wy=Ifhb*F{h2cO`VulX)v zf)^hjQucgayfF*lmoOyq@&Qd4%qCYZq*G4Cp0&xc_?5Rno40XSXAhxsv{I(c_? z43af-xc(*sWW6iiIi9Sn-M4t3yd*s&^qL(<#|sKh)A({Dt5|+nfeCmpdo6geJUUy3 z_eOQ<%+^>JZUA7?TM;u`C1D_;#WFC_N=VZ@lJ-SnaNwM<0-h zedA}rk+ft=^?x2~$@cbIhgTL1v6S4F^d8MCkf#*EQ;tV4@8F9vH@7%@S@g|9%O9na zL`H8ojUXo2gO)ZnF`mqfwZZ8Q9gAR{Lng6y(CZEfc{KKUHp}HVra5eQQuM#=Nt1p& z7rOUyw=u2P%AF3k$3z>*WItG8YsBVp7&bMk>oJsjX z%~KtK8I_QyYQIl-19_?s#FNPJP+l&9*Sx)gWuB0p_gPhNv7$xh;WSA&-7yY!V&W@B z1(x{TnhE39%I(MmN7sFt327sSky97uMvRIIH#{M&=D+C))5P{=gw`(GE$rD-OsfFQ z;_xje-NI<<=?-kcNCK4DS$Tg6#_9ss1!scgY@OssqD_aJa>dqjPAE#w=^7s<7;;WO zF0&w-Pf^!To&RXjwFRq>?zTQ=W zZwwie_-_d{%+%i$>P?~E6zWY&{eQ8gu2`$?T)DH@_+sut(e~Gx`*FUC#Cg zFSMJ*uRi{8$v5m@r$0#^h<3)a)IU~apwmcH`|IwVBUg)KkMDc+^>97KcMh~^W*m}1TJCU;@HuCD_1w!!hn%G@oLW9%V&mjrmzO1RaE5Z5YS04TFUcY z^zo|pqT}7dk9){dT+3Ed6JE<|`%10&R*hM+(e;V3UR_VGL(L**0o?|e3c`xxQ8J%@g$9Y+L_gTeGP6`M*Vt|< zcF}yt${Xj@Q>is8w_=i_#SO%NAtVzQvKvXn@D=7(H!m(sJc_V-MgM4VonmpL&n5fW zT-HzYxE2+m?9lxct4v$AowMjp6zpZMZ+w?|VQ$~pQ`RMf=T1tF0b^XtCNoia5v*$| zWK@LVg-Zq;+a^g~-x{m$S=Gz3sh_W(YpRLKUh&*!|1Mc3CVt77<`j)}tLt+*vV=R0 zsK6mXLRI=ae-G?s5B!DvlyhHxK)2p&jpj72S>O`(uQAxQk7H@yt(y+I&#){ zycV#SQQ{C9gT=An39-AcO^4Qgvo(?5eQ1blnN4R3=R1ehw?&b1QC!GBAQoeNDet+a z_~b7)qwWF9K97=GQsv{(&U)l2%4>+li5L|hYjc+uto@^akn|3}3n9{Js(y2!EJNlz zLQ$Qz5cvoDt~pZ$q3tV0&eVt~WG`y)PfjfL48G;=6rE2f5BEOIO&C~N?RGJR z(Kk=97W|R&jiYdSAg6NvC6_JA>r`1kbq@r6*lCuPOW1pnqV8%<={`d=Q*5SVG#`P8 z@-2t`A)?;fkuoG9P#$Pr>>J9Iw-@APEqM3rgwdp!^iLiTr+ zg?a*q{kIG{1=f$yk+WT4`XW;-GyOso4w|sJeaij54%}NUTHCn+CoL|Acw;*}F)an?>F41g#doTBF{G zzNg)a@PUbXf}c!E6Xk8#$J8UVN&ODyvi;k%X6hi7qby4BihixW7jC<}KUJG_c-q#X z$_;dc_8=#e$HaM8&1PPTad)dY>>Ev`WAhk~b1oejZ~d7<1~ev@VS4$~O5+1g_dN4o zj2y>4X-g8fve#@y#G#whS4+Wasbw(YYMU62i8`OvCDAQK`m@o0lBUjq>SGdj@+)tAvDn9?Tmm+p3 zUw@38&$Xf>9D!?$=%O!e3_|qQs1#jcCw}B4PpBvPU6#l_oK2{v5Odny+;7pCX1}hC z+FdF;jvOFQZJB$fGtqnue%_^pm(7A{hGpEc+2QcJKJ`bB9id@?YyabkwE`z0@zQIEn>#bu-dO(X%KN9MnCp^FolkNZZr$x~EC}#f-u+SZc=Lg%fSYAuCgZ za}D8kgV`e68&qpO1R0|i3<-U@orfE}PsRp6f%ma@@aT1`dG9dwN9;t6ocN4)QIuM* z^t>X*3iCx2&&biN`;H;Y8|@}_U|~khYNfhrS=x0)uiwP?;19zl4t*B^WA_wQ<(a3` z(d8H`Z_Xf@VAn_4ysXw1uj$CFN^{B_N1pMjG`#|;cXqB;BXx=H(^+6D3@Q#sO){1# z(n>WXU{cHp(duWsE-|y(U0d#$;&vs=Fi-hPi^Q zo;@|Mc5Yl7`QhW#WbRVMQC1S=VtPT(D&tMl$IH5+r^gcxQdpqlR(fuU)mLBH2DMYm z*+JJ=eBrvY@V`d-BI5tYr2oB2#AKcj#XmT}+RPrm%RO?x$kt|-AR(UpBCH!ft#M@` zbdM^qovcB^`~-kcr-h7)6J#iQ!X!`3}95{@fmB z%TN|9Ic(YZo3^L?rW0SP5Z<^k@aYNXys`Ufca0mceNstdlPV!~8U%O*)8M2;vw!Jt(G2;Q2CvB>Zieu@Dc$rfF^uCI zwFKemS8z_;z@#=NBbXm&zaXYVXBwWd0X?2_Hn8ca!w}QUpNVL)DpU6Rs+AzdKjjm>pPV93eE0f716XC z{nGV*MWr7taNuXH@#1lGo+HbTQ41hsORe!dJ-WpaQ_06qds+2+hVe8#{Fd@DvHu~R z=6CxThZ;pubM=&gT?hjL6LT%ugM_vx*{HkX%7TySlEjmUcHfN*hlhlL68`Sy`slo; z*%^%u#uP5hbZT`a9ISB`oL`u{$kzdLSg_BZZI>mm|0LTm?errq5Zi0xJxMtar{a zmIW^b1O$QV^u)*MJpxs_6cvzBNVGF7x~qRknUMPEx>WfhMHZ}AvJ3VC0`RIhd>6$V|7mJwSOWgaKkj^L zPGMwk*KdCP{nKZjx9mBFJpcC{Gp&<^RQ3Z|7G|75Fp-)R8$`4_plhc}+KV?9nRNRQ zL^Pp()RZ%jAd1-YGOMt%xN8Ys*j0l_;`Cye`3{ibcbt}6jR~n=QUhDQZVeKCKXgIr zI*4L>Ynb6d_;u1QOEv?_4!(9oTHYWK26h%Z+Fk()8ho7R^f^UH-SNxO=>j@W`@?*Q z_c=n&4uL6x7P>_{3%)7#9Q+pfNMWI_^KUET9CC%e)^MIGh(Jg05NQFJTo_?gBL|e& zW#CYG0B`Kr*pRr$SQfJSwlhoz7@M4=H^W8Y!phup>9Z^>?rdbHyw`*ovT=sBfSeK` zRgEIsjuxL@h5wNN;h~`KvXHL~mLKbY36xlZLIcjW^tbuK_~{%|6aI-*c!NjN=O(NX z=sf@LqrRcAhd1}qaI$Pc!qv{6%H07(JGVP5Umb<_f+387Yved^HL^o{a|p`V^&Ot#hr}9VjxX_>1Ewzh4)iFQVio? z`OVyB^m38^B+6#rIpE`2Fv@J@_E>q&iDUlun|68AE^pf9O}o5lmpAS5CSKme%bR%l zzYkvCnuDHhTAM2}b5=E)-R?WoRc7@=R!66p`M%`v)rL|C|F4T{)I%tUeC!99DI=}X z0LXR5=IYmeK)sZYfHr-`yH-8k`LC+Td;ek9P+0NZB1x1-_59|7ScLYTC{6;21=zlA zK@t%{|D1?O-;Fnx(lpugPd^Q)pD9>cO3F`lm>x%(v9bK-1i6LI9WHUH`|$?)$q_Qu z5YUL%2jnF}AeQaeCuc;+dBiE*nFtuRp*(!fni|o$mu?^DgoutYDO3Q-lF+N#oR$Wt z9eJK4^@3<}+CZD}qZT2j{r+%60z^iMjz&KM0HQ0Kq@CrbY(d+;|D!*vyNj(uZz-~a z!@{lx5DEn+IY3&er<_%IPM<4Cm>R|f346S0H!vln>UNLw3XvcvuMhFLxbRvcx zVk*L$L&4pUp}6U*Ci)1XI~@i#Ljq(dH23QK1=K)Nn-Jv*QKLKx5NBy4?@eXEk&vys2?dA zikg5J`xZq}W2KaS5hOzqnl#tP79_M_W1}<&v5bcaN%9>W-OwOu2m;&1NcT$+q&&?` z)o-8%wliHiokxyChJqm7^AyQYe18=_%?@FdUq>t>WV>knEz9dbzA0fG-k4J;Z160+ zpK`%P%~05Vju^`!lG|=v4=&D!H;kJyo3mMiB*C>J)(l<|x~p){gc=~>y2gDD>=@+>xT(e@_)v>gVsgov{|zboraegpV;43 zT=Dq99JH?&#D+1?@^NJx9+U_W5=~hSF&~6J5Xp>`j08wh346)O64?F(zt|@{$n>e* zYL_6>lyNd#O^isiqu0dhK=v(_nth`zkFitK`2Y#KR37&eOh|kmSFYazsg-HX>BkHp zb&A0$??Z`pgZzVXEg%WA494c7=)79UMrSZmlwsspLD}LRvnPtieHMr$Y$r38!vV$K zjp~tCarg%Uvg105)fB^O?}*=v^7ZR zN#X^OCy*@b845Fo_GS`DVhDs z17U$&VrPUFA@y={qGZQzyup~}OjR-_gWuL7B`FsuAw1+|2>WU*H!^Ub2vNOu z`lU2QcEO_1s#=ymgC+Lf{4BB$asWc%^ct`-CA|j5G0{Ze7`$KYi}bWMHA|H+YLg+1 ze%bW&`io*!AmW_%X9H|2P~ZMH8^!_nnJc**S?q*v`O{wd4r>N!hNi8nNct^xJ^ea<)Btge|Y#SqxIrv*v=sv8h!|i=pS0sp8$HWSl-?Xc8&TGAtX7- z-ZChk_D*LihqOp#y!?QtPED2l3vTOSm8GMv<+1DTg(1o zsw~XRrE_>5#82DN{BL0n5}HN%lE4Y1J%`*DC&;cD2&6%|R|9R7pWdcj-n7e`c6rk- zZ`$QeyS#~)H}Uc&Uf#sZn|OH>FK^~CHuD&pd5q0G24ORgv6)}q%r9@|mpAjvoB8F~ z&HVCz<-H$&l0XCsCI9R6$>X|6mGb5t;Q!n^z*7B%u2u4y;|SW7joMNJy-)-AiG6FU zF)g0{U4~MICVMBMiJ9qhr%dqa2dLEnxqkjhP#w@9Xjzzv+@u|xEBkGOQc8WCx89e7 z{lj35>P<-r4q&~;DMh_FQedn@8Tl|9e=5Z&R!dPD2?j=W5?w;+G*jG-g{hrM1pGtj z;CX%~tTYi*Rid8~TskuCf03j8sQg-uRZLg64hAa^w6o-6Y2HWKh;^6zb%Segfm%R#%LTQ{1AYg-+<5@) ztpw@4>o1D^0JNKAI=_$$JISZ^c_36jlNBx`sx+XNS_ln4uo0EyjE*Gq^ORSOC)R0q zUo;lYUZiaKAr(07Vr$iRi8e9D@5;Z{W3uZUG$5f5<|0jRlr}DBRx)a+WPl$l1s8qx z86Qq{%lQsjUEn5++tYLDv$MDh=~qTsAyw_$`?S8*qaJG0Pi;I~56>p**b40w?LKH% zkjL7@PGNRdU!ml%D_r#+!x!!)v%r>_LbirV5|R3NYBwMn^AZcKV!@v;KczpysH(47 zk*7|jy1j9QzX}v>JZb%AgtUdEnB*rpHK9HV4!BW!DuLW_z%iAt?HcEc;J7RLW68o4 z635T3YGk^<41N2Y(=ihY$n(Rcr-zN1VilISd|t_nr!BV!UiF^MFPhsD*<`wR{rD{L z2PV>1lGbYbN{ar}6@7GDxjxy}wcOfg6|**wN%@D}Z(tduOo6<&%|`i+IyrJtA1&OX4I031k#!%96k?#RH}94pmV|u! zLKR~)rUEoT*j$nEoF-_`EhX{Z1DJ;D66mM3J9c}Plf|8+L=sH`vQ!u~$qm<{TH|_l z{ez<7Kv8J5J<%NjN452iPUWLgw8~6_r2R7VV*zKA7Hrq$waJ(sH=!c<$DNJsR^VV& z9YHqrz1;^7Y8@8t)u(PZ_o}EUFAz!jG>?@FqIm8rsXx}#XyPS14ZO!xq!kuBx|VKN z4vYLl5PMjT)D2uoS*B25<^K)!&zTWutQWQ#5%xf*$b*Mh4&*ZEB8v3U#lvl3KU4sm zX+4s}2ol{e>}s*fO)!|2Ro$>c6D(v@1~cvpC@&|q)&VgFnjtORvM4TQz=*?BATxJ(jc}hq#3!ZcR6k{&CgBn=d8-w zpr9{k0*2$WZaL!-Mxi2F)X2ILImLYthRPX#Q{GH}J}4UbrF(H%O@jC>lIIDv{}Lah zPN3NjwLMlAa84nE>UI_CIl1%N9=Svk$@u||{?Cxwsmr~xSy9nUv5m#%3wgZuUeiOa zKI6<0F$)`~Cg2|vlDGjQ=(**88yNKgySd>}@LNR79nk9BU*oU9~)$rxfMFu!k znBI1AA*R^FRm!{9^)6W?7MU+?fvb+5JRz}2>(VlT` zW0xdejhnf+t^))?XlK^#%?kShj%zDdQ|(78Er&k7D6k75k|X&Y+8YpOX)`kiLBL%?mFOLaG@^rEgh)@Ix(t4SDO`XW_di|Fj&FVm<3I6@PuuAu9PC)0M;IuD@Mc{WuB8!@YNmo?RvSFF zta3T5%}N*L$W-+!EROWKaM82eJOFMHX`so%Qiz#--iz#=JrrX6birpFvjf0DQfLb~5~ zY>4!45b1A*JP(R@0x^-ooJUlOh>Z>1vfb)V>woq8JA{@8vi34xLGd4WZ9#Fxu;@`( z)aBMRH|7}_KlNMEBaYN3L)tO~3c#G?=$i0N6e8V0=C7-u2l8lkj`lhSi+2GB<<5-l zW-$OhP+Fv@#C$&+*AfMeY~N2={j;Eh!9w%KjEyLF#?J~H8^)SlL4lAqa$e)ixv}!Y zJBo@su6tCTk_KnQbDeZF7#3C4`*GVpyaQ#UJ}0Cw7Z=I9GB&>Qi9+CYm-v|e$JOa9 z%cW5VZ~LjZYM<#Aiiw-h2AizPY|d&;RRf#RznVg~vbd`TS6tqQ$nt~fx_gbN2s6xv zWZ=}mw?>p))x_k2UC4jYj5w1J~g;6u<4&oe+b|257V zG>HapsfO&iqj8h*b8?b_laTyA*l<-s@69tb`&D+P+}e;`T>{NOeAp6w@@`OrfTQ8P zo>b0F&Bbna2EEUWctu?JJX;4ht#un7NyXFm6XDYX>&c`ga z_swW=6|GdJ+5bJW5GbGT)}e%fV#Onj9)mxHFv8T$rM&pLs10>o369|-Cz1T;6YoVb z3|&w?{|~o%07#A6%R!D%-%hkyMnTSO12F? z$RCVFPha43WjUt>lJihcynj1Y5iCcJUb?}>;@)wZbSME4Nux&73h?G%djvKt*->D> zGk-Q76N5X#n8}J8VWXn5e_4fivE-x#Q6QG*={gly2;fi%tZKe64xy^#Dq*JlIdxU- ztHbX8TivPk%dlaY>>V0cP`%LCxuLj^0k!Ppa8mG<1jS9!+Lsw6N^up|tGgs_{|zvj z=9R&71Pby$Y(Ljy!xZ~XOg?X!%X^|)VX4__LxvnNYb$9h%=em>OV{fA|5m7*@^$c; zvW-kzT2_haC>Yy=#)tw;B~3${YY0^`8>_B)9YDX#)y-48@d^kMc}l^{nkjaWe`5#- zvDhBikXz$^*f$+cg+QiTR4ru4*{$9mMI;~V?@Mq81D$5}wJZ4?%>YvAw64z?pbv

    kTHdNd(Bb=83<|B}4 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 AS^xk5 literal 0 HcmV?d00001 From a346c586f22d4268552a009f5331451733ad50af Mon Sep 17 00:00:00 2001 From: Namrata Diware Date: Wed, 12 Jun 2024 23:32:02 +0530 Subject: [PATCH 3/3] Udated readme.md updated readme.md --- README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index d6f00b550c..14929ae6f7 100644 --- a/README.md +++ b/README.md @@ -199,7 +199,9 @@ This repository also provides one such platforms where contributers come over an | [Emoji_Intruder](https://github.com/kunjgit/GameZone/tree/main/Games/Emoji_Intruder) | [Guess The Weapon](https://github.com/kunjgit/GameZone/tree/main/Games/Guess_The_Weapon) | [Guess Who](https://github.com/kunjgit/GameZone/tree/main/Games/Guess_Who) | [Pop My Balloon](https://github.com/kunjgit/GameZone/tree/main/Games/Pop_My_Balloon) | [Tower Stack](https://github.com/kunjgit/GameZone/tree/main/Games/Tower_Stack) | | [Maze_Game](https://github.com/kunjgit/GameZone/tree/main/Games/Maze_Game) | [TriHand_Tactics](https://github.com/kunjgit/GameZone/tree/main/Games/TriHand_Tactics) | [Earth_Guardian](https://github.com/kunjgit/GameZone/tree/main/Games/Earth_Guardian) | [Ball_Shooting_Game](https://github.com/kunjgit/GameZone/tree/main/Games/Ball_Shooting_Game) | | [Ball_Shooting_Game](https://github.com/kunjgit/GameZone/tree/main/Games/Ball_Shooting_Game) | [CatchTheBall](https://github.com/kunjgit/GameZone/tree/main/Games/CatchTheBall) | -| [Ball_Shooting_Game](https://github.com/kunjgit/GameZone/tree/main/Games/Ball_Shooting_Game) | [DoraemonRun ](https://github.com/kunjgit/GameZone/tree/main/Games/DoraemonRun) | +| [Ball_Shooting_Game](https://github.com/kunjgit/GameZone/tree/main/Games/Ball_Shooting_Game) | +| [CopyCat](https://github.com/kunjgit/GameZone/tree/main/Games/CopyCat) | +[DoraemonRun ](https://github.com/kunjgit/GameZone/tree/main/Games/DoraemonRun) | | [Memory_Cards_Game](https://github.com/kunjgit/GameZone/tree/main/Games/Memory_Cards_Game) | | [Typing_Speed_Test2](https://github.com/kunjgit/GameZone/tree/main/Games/Typing_Speed_Test2) | | [Technical_Mind_Game](https://github.com/kunjgit/GameZone/tree/main/Games/Technical_Mind_Game) |