User prompt
polisin hızını düşür
User prompt
npc lerin hızını düşür
User prompt
oyunun giriş ekranı olmasın
User prompt
oyunun giriş ekranı mavi olsun
User prompt
oyunun giriş ekranı olsun
Code edit (1 edits merged)
Please save this source code
User prompt
GTA 7: Micro City Mayhem
Initial prompt
GTA 7
/**** * Plugins ****/ var tween = LK.import("@upit/tween.v1"); /**** * Classes ****/ // Car (can be player or NPC) var Car = Container.expand(function () { var self = Container.call(this); self.asset = self.attachAsset('car', { anchorX: 0.5, anchorY: 0.5 }); self.speed = 18; self.dir = 0; // 0: right, 1: down, 2: left, 3: up self.hasDriver = false; self.isPolice = false; self.update = function () { if (self.hasDriver) { // Player driving: follow target var dx = player.targetX - self.x; var dy = player.targetY - self.y; var dist = Math.sqrt(dx * dx + dy * dy); if (dist > self.speed) { self.x += self.speed * dx / dist; self.y += self.speed * dy / dist; } } else { // NPC car: simple movement if (self.dir === 0) self.x += self.speed; if (self.dir === 1) self.y += self.speed; if (self.dir === 2) self.x -= self.speed; if (self.dir === 3) self.y -= self.speed; } }; return self; }); // CityTile: A single tile in the city grid var CityTile = Container.expand(function () { var self = Container.call(this); self.type = 'road'; // default self.setType = function (type) { self.type = type; if (self.asset) { self.removeChild(self.asset); } self.asset = self.attachAsset(type, { anchorX: 0.5, anchorY: 0.5 }); }; return self; }); // Mission marker var Mission = Container.expand(function () { var self = Container.call(this); self.asset = self.attachAsset('mission', { anchorX: 0.5, anchorY: 0.5 }); self.active = true; return self; }); // NPC (pedestrian) var NPC = Container.expand(function () { var self = Container.call(this); self.asset = self.attachAsset('npc', { anchorX: 0.5, anchorY: 0.5 }); self.speed = 6 + Math.floor(Math.random() * 4); self.dir = Math.floor(Math.random() * 4); self.update = function () { // Simple random walk if (self.dir === 0) self.x += self.speed; if (self.dir === 1) self.y += self.speed; if (self.dir === 2) self.x -= self.speed; if (self.dir === 3) self.y -= self.speed; // Change direction randomly if (Math.random() < 0.01) { self.dir = Math.floor(Math.random() * 4); } }; return self; }); // Pickup (collectible) var Pickup = Container.expand(function () { var self = Container.call(this); self.asset = self.attachAsset('pickup', { anchorX: 0.5, anchorY: 0.5 }); self.active = true; return self; }); // Player character var Player = Container.expand(function () { var self = Container.call(this); self.asset = self.attachAsset('player', { anchorX: 0.5, anchorY: 0.5 }); self.speed = 12; self.isInCar = false; self.car = null; self.targetX = self.x; self.targetY = self.y; self.update = function () { // Move towards targetX, targetY var dx = self.targetX - self.x; var dy = self.targetY - self.y; var dist = Math.sqrt(dx * dx + dy * dy); if (dist > self.speed) { self.x += self.speed * dx / dist; self.y += self.speed * dy / dist; } else { self.x = self.targetX; self.y = self.targetY; } }; self.enterCar = function (car) { self.isInCar = true; self.car = car; self.visible = false; car.hasDriver = true; }; self.exitCar = function () { if (self.car) { self.x = self.car.x; self.y = self.car.y + 90; self.isInCar = false; self.visible = true; self.car.hasDriver = false; self.car = null; } }; return self; }); // Police car var PoliceCar = Container.expand(function () { var self = Container.call(this); self.asset = self.attachAsset('police', { anchorX: 0.5, anchorY: 0.5 }); self.speed = 20; self.dir = 0; self.hasDriver = true; self.isPolice = true; self.update = function () { // Chase player var target = player.isInCar ? player.car : player; var dx = target.x - self.x; var dy = target.y - self.y; var dist = Math.sqrt(dx * dx + dy * dy); if (dist > 0) { self.x += self.speed * dx / dist; self.y += self.speed * dy / dist; } }; return self; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x222831 }); /**** * Game Code ****/ // City blocks (buildings, roads, grass, etc.) // --- City Map Setup --- var cityCols = 7; var cityRows = 9; var tileSize = 256; var cityTiles = []; var cityOffsetX = (2048 - cityCols * tileSize) / 2; var cityOffsetY = (2732 - cityRows * tileSize) / 2; // Generate city grid for (var row = 0; row < cityRows; row++) { for (var col = 0; col < cityCols; col++) { var tile = new CityTile(); var x = cityOffsetX + col * tileSize + tileSize / 2; var y = cityOffsetY + row * tileSize + tileSize / 2; tile.x = x; tile.y = y; // Edges are buildings, center is road, some grass if (row === 0 || row === cityRows - 1 || col === 0 || col === cityCols - 1) { tile.setType('building'); } else if ((row + col) % 4 === 0) { tile.setType('grass'); } else { tile.setType('road'); } game.addChild(tile); cityTiles.push(tile); } } // --- Player Setup --- var player = new Player(); player.x = cityOffsetX + tileSize * 3.5; player.y = cityOffsetY + tileSize * 7.5; player.targetX = player.x; player.targetY = player.y; game.addChild(player); // --- Cars Setup --- var cars = []; for (var i = 0; i < 3; i++) { var car = new Car(); car.x = cityOffsetX + tileSize * (1.5 + i * 2); car.y = cityOffsetY + tileSize * 2.5; car.dir = 0; cars.push(car); game.addChild(car); } // --- Police Setup --- var policeCars = []; var policeSpawned = false; // --- NPCs Setup --- var npcs = []; for (var i = 0; i < 5; i++) { var npc = new NPC(); npc.x = cityOffsetX + tileSize * (1 + Math.random() * 5); npc.y = cityOffsetY + tileSize * (1 + Math.random() * 7); npcs.push(npc); game.addChild(npc); } // --- Missions & Pickups --- var missions = []; var pickups = []; function spawnMission() { var m = new Mission(); // Place at random road tile var validTiles = cityTiles.filter(function (t) { return t.type === 'road'; }); var tile = validTiles[Math.floor(Math.random() * validTiles.length)]; m.x = tile.x; m.y = tile.y; missions.push(m); game.addChild(m); } function spawnPickup() { var p = new Pickup(); var validTiles = cityTiles.filter(function (t) { return t.type === 'road'; }); var tile = validTiles[Math.floor(Math.random() * validTiles.length)]; p.x = tile.x + (Math.random() - 0.5) * 80; p.y = tile.y + (Math.random() - 0.5) * 80; pickups.push(p); game.addChild(p); } spawnMission(); spawnPickup(); // --- Score & Wanted Level --- var score = 0; var wanted = 0; // 0: none, 1: police chase var scoreTxt = new Text2('0', { size: 120, fill: "#fff" }); scoreTxt.anchor.set(0.5, 0); LK.gui.top.addChild(scoreTxt); var wantedTxt = new Text2('', { size: 80, fill: 0xFF5252 }); wantedTxt.anchor.set(0.5, 0); LK.gui.top.addChild(wantedTxt); wantedTxt.y = 120; // --- Drag/Touch Controls --- var dragNode = null; function handleMove(x, y, obj) { // Clamp to city area var tx = Math.max(cityOffsetX + tileSize / 2, Math.min(x, cityOffsetX + cityCols * tileSize - tileSize / 2)); var ty = Math.max(cityOffsetY + tileSize / 2, Math.min(y, cityOffsetY + cityRows * tileSize - tileSize / 2)); if (player.isInCar && player.car) { player.targetX = tx; player.targetY = ty; } else { player.targetX = tx; player.targetY = ty; } } game.move = handleMove; game.down = function (x, y, obj) { dragNode = player; handleMove(x, y, obj); }; game.up = function (x, y, obj) { dragNode = null; }; // --- Game Update Loop --- game.update = function () { // Player update player.update(); // Car update for (var i = cars.length - 1; i >= 0; i--) { var car = cars[i]; car.update(); // Loop cars around city if (car.x < cityOffsetX) car.x = cityOffsetX + cityCols * tileSize - tileSize / 2; if (car.x > cityOffsetX + cityCols * tileSize) car.x = cityOffsetX + tileSize / 2; if (car.y < cityOffsetY) car.y = cityOffsetY + cityRows * tileSize - tileSize / 2; if (car.y > cityOffsetY + cityRows * tileSize) car.y = cityOffsetY + tileSize / 2; // Player enter car if (!player.isInCar && !car.hasDriver && player.intersects(car) && Math.abs(player.x - car.x) < 80 && Math.abs(player.y - car.y) < 80) { player.enterCar(car); } } // Police spawn logic if (wanted > 0 && !policeSpawned) { var police = new PoliceCar(); police.x = cityOffsetX + tileSize * 3.5; police.y = cityOffsetY + tileSize * 0.5; policeCars.push(police); game.addChild(police); policeSpawned = true; LK.getSound('police').play(); } // Police update for (var i = policeCars.length - 1; i >= 0; i--) { var p = policeCars[i]; p.update(); // If police catch player var target = player.isInCar ? player.car : player; if (p.intersects(target) && Math.abs(p.x - target.x) < 70 && Math.abs(p.y - target.y) < 70) { LK.effects.flashScreen(0xff0000, 1000); LK.showGameOver(); return; } } // NPC update for (var i = npcs.length - 1; i >= 0; i--) { var npc = npcs[i]; npc.update(); // Loop NPCs if (npc.x < cityOffsetX) npc.x = cityOffsetX + cityCols * tileSize - tileSize / 2; if (npc.x > cityOffsetX + cityCols * tileSize) npc.x = cityOffsetX + tileSize / 2; if (npc.y < cityOffsetY) npc.y = cityOffsetY + cityRows * tileSize - tileSize / 2; if (npc.y > cityOffsetY + cityRows * tileSize) npc.y = cityOffsetY + tileSize / 2; // If player hits NPC (on foot or in car) var hit = false; if (!player.isInCar && player.intersects(npc) && Math.abs(player.x - npc.x) < 60 && Math.abs(player.y - npc.y) < 60) hit = true; if (player.isInCar && player.car && player.car.intersects(npc) && Math.abs(player.car.x - npc.x) < 70 && Math.abs(player.car.y - npc.y) < 70) hit = true; if (hit) { wanted = 1; wantedTxt.setText('WANTED!'); LK.effects.flashObject(npc, 0xff0000, 500); // Remove NPC npc.destroy(); npcs.splice(i, 1); } } // Missions for (var i = missions.length - 1; i >= 0; i--) { var m = missions[i]; var px = player.isInCar && player.car ? player.car.x : player.x; var py = player.isInCar && player.car ? player.car.y : player.y; if (m.active && Math.abs(m.x - px) < 70 && Math.abs(m.y - py) < 70) { m.active = false; LK.getSound('mission').play(); score += 10; scoreTxt.setText(score); m.destroy(); missions.splice(i, 1); spawnMission(); // Escalate wanted level sometimes if (Math.random() < 0.3) { wanted = 1; wantedTxt.setText('WANTED!'); } // Win condition if (score >= 100) { LK.showYouWin(); return; } } } // Pickups for (var i = pickups.length - 1; i >= 0; i--) { var p = pickups[i]; var px = player.isInCar && player.car ? player.car.x : player.x; var py = player.isInCar && player.car ? player.car.y : player.y; if (p.active && Math.abs(p.x - px) < 60 && Math.abs(p.y - py) < 60) { p.active = false; LK.getSound('pickup').play(); score += 3; scoreTxt.setText(score); p.destroy(); pickups.splice(i, 1); spawnPickup(); } } // Player exit car if tap again on self if (player.isInCar && player.car && Math.abs(player.car.x - player.targetX) < 60 && Math.abs(player.car.y - player.targetY) < 60) { player.exitCar(); } // Lower wanted level over time if (wanted > 0 && LK.ticks % 300 === 0) { wanted = 0; wantedTxt.setText(''); // Remove police for (var i = policeCars.length - 1; i >= 0; i--) { policeCars[i].destroy(); policeCars.splice(i, 1); } policeSpawned = false; } };
===================================================================
--- original.js
+++ change.js
@@ -1,6 +1,416 @@
-/****
+/****
+* Plugins
+****/
+var tween = LK.import("@upit/tween.v1");
+
+/****
+* Classes
+****/
+// Car (can be player or NPC)
+var Car = Container.expand(function () {
+ var self = Container.call(this);
+ self.asset = self.attachAsset('car', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ self.speed = 18;
+ self.dir = 0; // 0: right, 1: down, 2: left, 3: up
+ self.hasDriver = false;
+ self.isPolice = false;
+ self.update = function () {
+ if (self.hasDriver) {
+ // Player driving: follow target
+ var dx = player.targetX - self.x;
+ var dy = player.targetY - self.y;
+ var dist = Math.sqrt(dx * dx + dy * dy);
+ if (dist > self.speed) {
+ self.x += self.speed * dx / dist;
+ self.y += self.speed * dy / dist;
+ }
+ } else {
+ // NPC car: simple movement
+ if (self.dir === 0) self.x += self.speed;
+ if (self.dir === 1) self.y += self.speed;
+ if (self.dir === 2) self.x -= self.speed;
+ if (self.dir === 3) self.y -= self.speed;
+ }
+ };
+ return self;
+});
+// CityTile: A single tile in the city grid
+var CityTile = Container.expand(function () {
+ var self = Container.call(this);
+ self.type = 'road'; // default
+ self.setType = function (type) {
+ self.type = type;
+ if (self.asset) {
+ self.removeChild(self.asset);
+ }
+ self.asset = self.attachAsset(type, {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ };
+ return self;
+});
+// Mission marker
+var Mission = Container.expand(function () {
+ var self = Container.call(this);
+ self.asset = self.attachAsset('mission', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ self.active = true;
+ return self;
+});
+// NPC (pedestrian)
+var NPC = Container.expand(function () {
+ var self = Container.call(this);
+ self.asset = self.attachAsset('npc', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ self.speed = 6 + Math.floor(Math.random() * 4);
+ self.dir = Math.floor(Math.random() * 4);
+ self.update = function () {
+ // Simple random walk
+ if (self.dir === 0) self.x += self.speed;
+ if (self.dir === 1) self.y += self.speed;
+ if (self.dir === 2) self.x -= self.speed;
+ if (self.dir === 3) self.y -= self.speed;
+ // Change direction randomly
+ if (Math.random() < 0.01) {
+ self.dir = Math.floor(Math.random() * 4);
+ }
+ };
+ return self;
+});
+// Pickup (collectible)
+var Pickup = Container.expand(function () {
+ var self = Container.call(this);
+ self.asset = self.attachAsset('pickup', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ self.active = true;
+ return self;
+});
+// Player character
+var Player = Container.expand(function () {
+ var self = Container.call(this);
+ self.asset = self.attachAsset('player', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ self.speed = 12;
+ self.isInCar = false;
+ self.car = null;
+ self.targetX = self.x;
+ self.targetY = self.y;
+ self.update = function () {
+ // Move towards targetX, targetY
+ var dx = self.targetX - self.x;
+ var dy = self.targetY - self.y;
+ var dist = Math.sqrt(dx * dx + dy * dy);
+ if (dist > self.speed) {
+ self.x += self.speed * dx / dist;
+ self.y += self.speed * dy / dist;
+ } else {
+ self.x = self.targetX;
+ self.y = self.targetY;
+ }
+ };
+ self.enterCar = function (car) {
+ self.isInCar = true;
+ self.car = car;
+ self.visible = false;
+ car.hasDriver = true;
+ };
+ self.exitCar = function () {
+ if (self.car) {
+ self.x = self.car.x;
+ self.y = self.car.y + 90;
+ self.isInCar = false;
+ self.visible = true;
+ self.car.hasDriver = false;
+ self.car = null;
+ }
+ };
+ return self;
+});
+// Police car
+var PoliceCar = Container.expand(function () {
+ var self = Container.call(this);
+ self.asset = self.attachAsset('police', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ self.speed = 20;
+ self.dir = 0;
+ self.hasDriver = true;
+ self.isPolice = true;
+ self.update = function () {
+ // Chase player
+ var target = player.isInCar ? player.car : player;
+ var dx = target.x - self.x;
+ var dy = target.y - self.y;
+ var dist = Math.sqrt(dx * dx + dy * dy);
+ if (dist > 0) {
+ self.x += self.speed * dx / dist;
+ self.y += self.speed * dy / dist;
+ }
+ };
+ return self;
+});
+
+/****
* Initialize Game
-****/
+****/
var game = new LK.Game({
- backgroundColor: 0x000000
-});
\ No newline at end of file
+ backgroundColor: 0x222831
+});
+
+/****
+* Game Code
+****/
+// City blocks (buildings, roads, grass, etc.)
+// --- City Map Setup ---
+var cityCols = 7;
+var cityRows = 9;
+var tileSize = 256;
+var cityTiles = [];
+var cityOffsetX = (2048 - cityCols * tileSize) / 2;
+var cityOffsetY = (2732 - cityRows * tileSize) / 2;
+// Generate city grid
+for (var row = 0; row < cityRows; row++) {
+ for (var col = 0; col < cityCols; col++) {
+ var tile = new CityTile();
+ var x = cityOffsetX + col * tileSize + tileSize / 2;
+ var y = cityOffsetY + row * tileSize + tileSize / 2;
+ tile.x = x;
+ tile.y = y;
+ // Edges are buildings, center is road, some grass
+ if (row === 0 || row === cityRows - 1 || col === 0 || col === cityCols - 1) {
+ tile.setType('building');
+ } else if ((row + col) % 4 === 0) {
+ tile.setType('grass');
+ } else {
+ tile.setType('road');
+ }
+ game.addChild(tile);
+ cityTiles.push(tile);
+ }
+}
+// --- Player Setup ---
+var player = new Player();
+player.x = cityOffsetX + tileSize * 3.5;
+player.y = cityOffsetY + tileSize * 7.5;
+player.targetX = player.x;
+player.targetY = player.y;
+game.addChild(player);
+// --- Cars Setup ---
+var cars = [];
+for (var i = 0; i < 3; i++) {
+ var car = new Car();
+ car.x = cityOffsetX + tileSize * (1.5 + i * 2);
+ car.y = cityOffsetY + tileSize * 2.5;
+ car.dir = 0;
+ cars.push(car);
+ game.addChild(car);
+}
+// --- Police Setup ---
+var policeCars = [];
+var policeSpawned = false;
+// --- NPCs Setup ---
+var npcs = [];
+for (var i = 0; i < 5; i++) {
+ var npc = new NPC();
+ npc.x = cityOffsetX + tileSize * (1 + Math.random() * 5);
+ npc.y = cityOffsetY + tileSize * (1 + Math.random() * 7);
+ npcs.push(npc);
+ game.addChild(npc);
+}
+// --- Missions & Pickups ---
+var missions = [];
+var pickups = [];
+function spawnMission() {
+ var m = new Mission();
+ // Place at random road tile
+ var validTiles = cityTiles.filter(function (t) {
+ return t.type === 'road';
+ });
+ var tile = validTiles[Math.floor(Math.random() * validTiles.length)];
+ m.x = tile.x;
+ m.y = tile.y;
+ missions.push(m);
+ game.addChild(m);
+}
+function spawnPickup() {
+ var p = new Pickup();
+ var validTiles = cityTiles.filter(function (t) {
+ return t.type === 'road';
+ });
+ var tile = validTiles[Math.floor(Math.random() * validTiles.length)];
+ p.x = tile.x + (Math.random() - 0.5) * 80;
+ p.y = tile.y + (Math.random() - 0.5) * 80;
+ pickups.push(p);
+ game.addChild(p);
+}
+spawnMission();
+spawnPickup();
+// --- Score & Wanted Level ---
+var score = 0;
+var wanted = 0; // 0: none, 1: police chase
+var scoreTxt = new Text2('0', {
+ size: 120,
+ fill: "#fff"
+});
+scoreTxt.anchor.set(0.5, 0);
+LK.gui.top.addChild(scoreTxt);
+var wantedTxt = new Text2('', {
+ size: 80,
+ fill: 0xFF5252
+});
+wantedTxt.anchor.set(0.5, 0);
+LK.gui.top.addChild(wantedTxt);
+wantedTxt.y = 120;
+// --- Drag/Touch Controls ---
+var dragNode = null;
+function handleMove(x, y, obj) {
+ // Clamp to city area
+ var tx = Math.max(cityOffsetX + tileSize / 2, Math.min(x, cityOffsetX + cityCols * tileSize - tileSize / 2));
+ var ty = Math.max(cityOffsetY + tileSize / 2, Math.min(y, cityOffsetY + cityRows * tileSize - tileSize / 2));
+ if (player.isInCar && player.car) {
+ player.targetX = tx;
+ player.targetY = ty;
+ } else {
+ player.targetX = tx;
+ player.targetY = ty;
+ }
+}
+game.move = handleMove;
+game.down = function (x, y, obj) {
+ dragNode = player;
+ handleMove(x, y, obj);
+};
+game.up = function (x, y, obj) {
+ dragNode = null;
+};
+// --- Game Update Loop ---
+game.update = function () {
+ // Player update
+ player.update();
+ // Car update
+ for (var i = cars.length - 1; i >= 0; i--) {
+ var car = cars[i];
+ car.update();
+ // Loop cars around city
+ if (car.x < cityOffsetX) car.x = cityOffsetX + cityCols * tileSize - tileSize / 2;
+ if (car.x > cityOffsetX + cityCols * tileSize) car.x = cityOffsetX + tileSize / 2;
+ if (car.y < cityOffsetY) car.y = cityOffsetY + cityRows * tileSize - tileSize / 2;
+ if (car.y > cityOffsetY + cityRows * tileSize) car.y = cityOffsetY + tileSize / 2;
+ // Player enter car
+ if (!player.isInCar && !car.hasDriver && player.intersects(car) && Math.abs(player.x - car.x) < 80 && Math.abs(player.y - car.y) < 80) {
+ player.enterCar(car);
+ }
+ }
+ // Police spawn logic
+ if (wanted > 0 && !policeSpawned) {
+ var police = new PoliceCar();
+ police.x = cityOffsetX + tileSize * 3.5;
+ police.y = cityOffsetY + tileSize * 0.5;
+ policeCars.push(police);
+ game.addChild(police);
+ policeSpawned = true;
+ LK.getSound('police').play();
+ }
+ // Police update
+ for (var i = policeCars.length - 1; i >= 0; i--) {
+ var p = policeCars[i];
+ p.update();
+ // If police catch player
+ var target = player.isInCar ? player.car : player;
+ if (p.intersects(target) && Math.abs(p.x - target.x) < 70 && Math.abs(p.y - target.y) < 70) {
+ LK.effects.flashScreen(0xff0000, 1000);
+ LK.showGameOver();
+ return;
+ }
+ }
+ // NPC update
+ for (var i = npcs.length - 1; i >= 0; i--) {
+ var npc = npcs[i];
+ npc.update();
+ // Loop NPCs
+ if (npc.x < cityOffsetX) npc.x = cityOffsetX + cityCols * tileSize - tileSize / 2;
+ if (npc.x > cityOffsetX + cityCols * tileSize) npc.x = cityOffsetX + tileSize / 2;
+ if (npc.y < cityOffsetY) npc.y = cityOffsetY + cityRows * tileSize - tileSize / 2;
+ if (npc.y > cityOffsetY + cityRows * tileSize) npc.y = cityOffsetY + tileSize / 2;
+ // If player hits NPC (on foot or in car)
+ var hit = false;
+ if (!player.isInCar && player.intersects(npc) && Math.abs(player.x - npc.x) < 60 && Math.abs(player.y - npc.y) < 60) hit = true;
+ if (player.isInCar && player.car && player.car.intersects(npc) && Math.abs(player.car.x - npc.x) < 70 && Math.abs(player.car.y - npc.y) < 70) hit = true;
+ if (hit) {
+ wanted = 1;
+ wantedTxt.setText('WANTED!');
+ LK.effects.flashObject(npc, 0xff0000, 500);
+ // Remove NPC
+ npc.destroy();
+ npcs.splice(i, 1);
+ }
+ }
+ // Missions
+ for (var i = missions.length - 1; i >= 0; i--) {
+ var m = missions[i];
+ var px = player.isInCar && player.car ? player.car.x : player.x;
+ var py = player.isInCar && player.car ? player.car.y : player.y;
+ if (m.active && Math.abs(m.x - px) < 70 && Math.abs(m.y - py) < 70) {
+ m.active = false;
+ LK.getSound('mission').play();
+ score += 10;
+ scoreTxt.setText(score);
+ m.destroy();
+ missions.splice(i, 1);
+ spawnMission();
+ // Escalate wanted level sometimes
+ if (Math.random() < 0.3) {
+ wanted = 1;
+ wantedTxt.setText('WANTED!');
+ }
+ // Win condition
+ if (score >= 100) {
+ LK.showYouWin();
+ return;
+ }
+ }
+ }
+ // Pickups
+ for (var i = pickups.length - 1; i >= 0; i--) {
+ var p = pickups[i];
+ var px = player.isInCar && player.car ? player.car.x : player.x;
+ var py = player.isInCar && player.car ? player.car.y : player.y;
+ if (p.active && Math.abs(p.x - px) < 60 && Math.abs(p.y - py) < 60) {
+ p.active = false;
+ LK.getSound('pickup').play();
+ score += 3;
+ scoreTxt.setText(score);
+ p.destroy();
+ pickups.splice(i, 1);
+ spawnPickup();
+ }
+ }
+ // Player exit car if tap again on self
+ if (player.isInCar && player.car && Math.abs(player.car.x - player.targetX) < 60 && Math.abs(player.car.y - player.targetY) < 60) {
+ player.exitCar();
+ }
+ // Lower wanted level over time
+ if (wanted > 0 && LK.ticks % 300 === 0) {
+ wanted = 0;
+ wantedTxt.setText('');
+ // Remove police
+ for (var i = policeCars.length - 1; i >= 0; i--) {
+ policeCars[i].destroy();
+ policeCars.splice(i, 1);
+ }
+ policeSpawned = false;
+ }
+};
\ No newline at end of file
Police. In-Game asset. 2d. High contrast. No shadows
Npc. In-Game asset. 2d. High contrast. No shadows
coin. In-Game asset. 2d. High contrast. No shadows
car . No background. Transparent background. Blank background. No shadows. 2d. In-Game asset. flat
home. In-Game asset. 2d. High contrast. No shadows
gras. In-Game asset. 2d. High contrast. No shadows
silah. In-Game asset. 2d. High contrast. No shadows
mermi. In-Game asset. 2d. High contrast. No shadows
gold. In-Game asset. 2d. High contrast. No shadows