/**** * Classes ****/ // Define the Hitman class var Hitman = Container.expand(function () { var self = Container.call(this); var hitmanGraphics = self.createAsset('hitman', 'Hitman character', 0.5, 0.5); self.target = null; self.speed = 3; self.moveLeft = function () { self.x -= self.speed; }; self.moveRight = function () { self.x += self.speed; }; self.targetX = self.x; self.targetY = self.y; self.setTargetPosition = function (x) { self.targetX = x; }; self.updatePosition = function () { if (self.x < self.targetX) { self.moveRight(); } else if (self.x > self.targetX) { self.moveLeft(); } }; }); // Define the Millionaire enemy class var MillionaireEnemy = Container.expand(function () { var self = Container.call(this); var enemyGraphics = self.createAsset('millionaire', 'Millionaire enemy', 0.5, 0.5); self.speed = 2; self.patrol = function () { self.x += self.speed; if (self.x > 2048 - self.width / 2 || self.x < self.width / 2) { self.speed *= -1; } }; }); // Define the Homeless enemy class var HomelessEnemy = Container.expand(function () { var self = Container.call(this); var enemyGraphics = self.createAsset('homeless', 'Homeless enemy', 0.5, 0.5); self.speed = 1; self.patrol = function () { self.x += self.speed; if (self.x > 2048 - self.width / 2 || self.x < self.width / 2) { self.speed *= -1; } }; }); // Define the RedSweater enemy class var RedSweaterEnemy = Container.expand(function () { var self = Container.call(this); var enemyGraphics = self.createAsset('redsweater', 'Person in red sweater enemy', 0.5, 0.5); self.speed = 2.5; self.patrol = function () { self.x += self.speed; if (self.x > 2048 - self.width / 2 || self.x < self.width / 2) { self.speed *= -1; } }; }); // Define the PinkLady enemy class var PinkLadyEnemy = Container.expand(function () { var self = Container.call(this); var enemyGraphics = self.createAsset('pinklady', 'Woman in pink enemy', 0.5, 0.5); self.speed = 1.5; self.patrol = function () { self.x += self.speed; if (self.x > 2048 - self.width / 2 || self.x < self.width / 2) { self.speed *= -1; } }; }); // Define the Elegant enemy class var ElegantEnemy = Container.expand(function () { var self = Container.call(this); var enemyGraphics = self.createAsset('elegant', 'Elegant in suit enemy', 0.5, 0.5); self.speed = 3; self.patrol = function () { self.x += self.speed; if (self.x > 2048 - self.width / 2 || self.x < self.width / 2) { self.speed *= -1; } }; }); // Define the PizzaGuy enemy class var PizzaGuyEnemy = Container.expand(function () { var self = Container.call(this); var enemyGraphics = self.createAsset('pizzaguy', 'Pizza guy enemy', 0.5, 0.5); self.speed = 2.2; self.patrol = function () { self.x += self.speed; if (self.x > 2048 - self.width / 2 || self.x < self.width / 2) { self.speed *= -1; } }; }); // Define the Bullet class for Hitman var Bullet = Container.expand(function () { var self = Container.call(this); var bulletGraphics = self.createAsset('bullet', 'Bullet fired by Hitman', 0.5, 0.5); self.speed = 10; self.move = function () { self.y -= self.speed; }; }); // Define the Phone class var Phone = Container.expand(function () { var self = Container.call(this); var phoneGraphics = self.createAsset('phone', 'Phone to receive messages', 0.5, 1); self.messages = []; self.messagesVisible = false; self.addMessage = function (message, photoAssetId) { self.messages.push({ message: message, photo: photoAssetId }); // Update the phone display with the new message and photo var messageText = new Text2(message, { size: 30, fill: '#ffffff' }); var photoSprite = self.createAsset(photoAssetId, 'Target photo', 0.5, 0.5); // Position the message and photo on the phone display // This is a simplified example, in a real scenario we would need to handle layout and scrolling messageText.y = self.height - self.messages.length * 100; photoSprite.y = messageText.y + messageText.height + 10; photoSprite.width = self.width * 0.8; // Set the photo width to 80% of the phone width photoSprite.height = photoSprite.width; // Keep the aspect ratio of the photo photoSprite.x = self.width / 2; // Center the photo on the phone self.addChild(messageText); self.addChild(photoSprite); }; self.toggleMessages = function () { self.messagesVisible = !self.messagesVisible; // Toggle the visibility of message elements and randomly display an enemy photo var enemyTypes = ['millionaire', 'homeless', 'redsweater', 'pinklady', 'elegant', 'pizzaguy']; var randomEnemyType = enemyTypes[Math.floor(Math.random() * enemyTypes.length)]; for (var i = 0; i < self.children.length; i++) { self.children[i].visible = self.messagesVisible; } if (self.messagesVisible && self.messages.length > 0) { var lastMessage = self.messages[self.messages.length - 1]; lastMessage.photo = randomEnemyType; // Update the photo display with the new random enemy photo var photoSprite = self.getChildByName('Target photo'); if (photoSprite) { photoSprite.texture = LK.getAsset(randomEnemyType, 'Target photo', 0.5, 0.5).texture; } } }; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x000000 // Init game with black background }); /**** * Game Code ****/ // Add background graphic var backgroundGraphic = game.createAsset('background', 'Game background', 0, 0); backgroundGraphic.width = 2048; backgroundGraphic.height = 2732; game.addChild(backgroundGraphic); // Initialize important asset arrays var enemies = []; var bullets = []; var hitman; // Initialize the Hitman character function initHitman() { hitman = game.addChild(new Hitman()); hitman.x = 2048 / 2; hitman.y = 2732 - 100; } // Initialize enemies function initEnemies() { var enemyClasses = [MillionaireEnemy, HomelessEnemy, RedSweaterEnemy, PinkLadyEnemy, ElegantEnemy, PizzaGuyEnemy]; for (var i = 0; i < enemyClasses.length; i++) { var EnemyClass = enemyClasses[i]; var enemy = new EnemyClass(); enemy.x = 100 + i * 300; // Adjust spacing to fit all enemy types enemy.y = 100; enemies.push(enemy); game.addChild(enemy); } } // Check for bullet-enemy collisions function checkCollisions() { for (var b = bullets.length - 1; b >= 0; b--) { for (var e = enemies.length - 1; e >= 0; e--) { if (bullets[b].intersects(enemies[e])) { if (hitman.target !== enemies[e]) { LK.showGameOver(); } else { enemies[e].destroy(); enemies.splice(e, 1); } bullets[b].destroy(); bullets.splice(b, 1); break; } } } } // Handle touch events for movement and shooting function handleTouch(obj) { var touchPos = obj.event.getLocalPosition(game); hitman.setTargetPosition(touchPos.x); // Check if the phone was touched and toggle messages if (phone.intersects({ x: touchPos.x, y: touchPos.y, width: 1, height: 1 })) { phone.toggleMessages(); if (phone.messagesVisible && phone.messages.length > 0) { var lastMessage = phone.messages[phone.messages.length - 1]; hitman.target = enemies.find(function (enemy) { return enemy.createAsset === lastMessage.photo; }); } // Show the phone full-screen with messages if (phone.messagesVisible) { phone.scale.set(game.width / phone.width, game.height / phone.height); phone.x = game.width / 2; phone.y = game.height / 2; phone.pivot.set(0.5, 0.5); } else { // Reset the phone to its original size and position phone.scale.set(1, 1); phone.x = 2048 - phone.width / 2; phone.y = 2732 - phone.height / 2; phone.pivot.set(0.5, 1); } return; } // Shoot a bullet var bullet = new Bullet(); bullet.x = hitman.x; bullet.y = hitman.y; bullets.push(bullet); game.addChild(bullet); } // Game tick update LK.on('tick', function () { // Move hitman towards target position hitman.updatePosition(); // Move enemies for (var i = 0; i < enemies.length; i++) { enemies[i].patrol(); } // Move bullets for (var j = bullets.length - 1; j >= 0; j--) { bullets[j].move(); // Remove bullets that are off-screen if (bullets[j].y < -50) { bullets[j].destroy(); bullets.splice(j, 1); } } // Check for collisions checkCollisions(); }); // Initialize game elements initHitman(); initEnemies(); // Initialize the Phone object var phone = game.addChild(new Phone()); phone.x = 2048 - phone.width / 2; phone.y = 2732 / 2; // Send a photo of the target to the hitman after 1 millisecond LK.setTimeout(function () { var enemyTypes = ['millionaire', 'homeless', 'redsweater', 'pinklady', 'elegant', 'pizzaguy']; var randomEnemyType = enemyTypes[Math.floor(Math.random() * enemyTypes.length)]; phone.addMessage('Target acquired.', randomEnemyType); }, 1); // Add touch event listener to the game for movement and shooting game.on('down', handleTouch);
/****
* Classes
****/
// Define the Hitman class
var Hitman = Container.expand(function () {
var self = Container.call(this);
var hitmanGraphics = self.createAsset('hitman', 'Hitman character', 0.5, 0.5);
self.target = null;
self.speed = 3;
self.moveLeft = function () {
self.x -= self.speed;
};
self.moveRight = function () {
self.x += self.speed;
};
self.targetX = self.x;
self.targetY = self.y;
self.setTargetPosition = function (x) {
self.targetX = x;
};
self.updatePosition = function () {
if (self.x < self.targetX) {
self.moveRight();
} else if (self.x > self.targetX) {
self.moveLeft();
}
};
});
// Define the Millionaire enemy class
var MillionaireEnemy = Container.expand(function () {
var self = Container.call(this);
var enemyGraphics = self.createAsset('millionaire', 'Millionaire enemy', 0.5, 0.5);
self.speed = 2;
self.patrol = function () {
self.x += self.speed;
if (self.x > 2048 - self.width / 2 || self.x < self.width / 2) {
self.speed *= -1;
}
};
});
// Define the Homeless enemy class
var HomelessEnemy = Container.expand(function () {
var self = Container.call(this);
var enemyGraphics = self.createAsset('homeless', 'Homeless enemy', 0.5, 0.5);
self.speed = 1;
self.patrol = function () {
self.x += self.speed;
if (self.x > 2048 - self.width / 2 || self.x < self.width / 2) {
self.speed *= -1;
}
};
});
// Define the RedSweater enemy class
var RedSweaterEnemy = Container.expand(function () {
var self = Container.call(this);
var enemyGraphics = self.createAsset('redsweater', 'Person in red sweater enemy', 0.5, 0.5);
self.speed = 2.5;
self.patrol = function () {
self.x += self.speed;
if (self.x > 2048 - self.width / 2 || self.x < self.width / 2) {
self.speed *= -1;
}
};
});
// Define the PinkLady enemy class
var PinkLadyEnemy = Container.expand(function () {
var self = Container.call(this);
var enemyGraphics = self.createAsset('pinklady', 'Woman in pink enemy', 0.5, 0.5);
self.speed = 1.5;
self.patrol = function () {
self.x += self.speed;
if (self.x > 2048 - self.width / 2 || self.x < self.width / 2) {
self.speed *= -1;
}
};
});
// Define the Elegant enemy class
var ElegantEnemy = Container.expand(function () {
var self = Container.call(this);
var enemyGraphics = self.createAsset('elegant', 'Elegant in suit enemy', 0.5, 0.5);
self.speed = 3;
self.patrol = function () {
self.x += self.speed;
if (self.x > 2048 - self.width / 2 || self.x < self.width / 2) {
self.speed *= -1;
}
};
});
// Define the PizzaGuy enemy class
var PizzaGuyEnemy = Container.expand(function () {
var self = Container.call(this);
var enemyGraphics = self.createAsset('pizzaguy', 'Pizza guy enemy', 0.5, 0.5);
self.speed = 2.2;
self.patrol = function () {
self.x += self.speed;
if (self.x > 2048 - self.width / 2 || self.x < self.width / 2) {
self.speed *= -1;
}
};
});
// Define the Bullet class for Hitman
var Bullet = Container.expand(function () {
var self = Container.call(this);
var bulletGraphics = self.createAsset('bullet', 'Bullet fired by Hitman', 0.5, 0.5);
self.speed = 10;
self.move = function () {
self.y -= self.speed;
};
});
// Define the Phone class
var Phone = Container.expand(function () {
var self = Container.call(this);
var phoneGraphics = self.createAsset('phone', 'Phone to receive messages', 0.5, 1);
self.messages = [];
self.messagesVisible = false;
self.addMessage = function (message, photoAssetId) {
self.messages.push({
message: message,
photo: photoAssetId
});
// Update the phone display with the new message and photo
var messageText = new Text2(message, {
size: 30,
fill: '#ffffff'
});
var photoSprite = self.createAsset(photoAssetId, 'Target photo', 0.5, 0.5);
// Position the message and photo on the phone display
// This is a simplified example, in a real scenario we would need to handle layout and scrolling
messageText.y = self.height - self.messages.length * 100;
photoSprite.y = messageText.y + messageText.height + 10;
photoSprite.width = self.width * 0.8; // Set the photo width to 80% of the phone width
photoSprite.height = photoSprite.width; // Keep the aspect ratio of the photo
photoSprite.x = self.width / 2; // Center the photo on the phone
self.addChild(messageText);
self.addChild(photoSprite);
};
self.toggleMessages = function () {
self.messagesVisible = !self.messagesVisible;
// Toggle the visibility of message elements and randomly display an enemy photo
var enemyTypes = ['millionaire', 'homeless', 'redsweater', 'pinklady', 'elegant', 'pizzaguy'];
var randomEnemyType = enemyTypes[Math.floor(Math.random() * enemyTypes.length)];
for (var i = 0; i < self.children.length; i++) {
self.children[i].visible = self.messagesVisible;
}
if (self.messagesVisible && self.messages.length > 0) {
var lastMessage = self.messages[self.messages.length - 1];
lastMessage.photo = randomEnemyType;
// Update the photo display with the new random enemy photo
var photoSprite = self.getChildByName('Target photo');
if (photoSprite) {
photoSprite.texture = LK.getAsset(randomEnemyType, 'Target photo', 0.5, 0.5).texture;
}
}
};
});
/****
* Initialize Game
****/
var game = new LK.Game({
backgroundColor: 0x000000 // Init game with black background
});
/****
* Game Code
****/
// Add background graphic
var backgroundGraphic = game.createAsset('background', 'Game background', 0, 0);
backgroundGraphic.width = 2048;
backgroundGraphic.height = 2732;
game.addChild(backgroundGraphic);
// Initialize important asset arrays
var enemies = [];
var bullets = [];
var hitman;
// Initialize the Hitman character
function initHitman() {
hitman = game.addChild(new Hitman());
hitman.x = 2048 / 2;
hitman.y = 2732 - 100;
}
// Initialize enemies
function initEnemies() {
var enemyClasses = [MillionaireEnemy, HomelessEnemy, RedSweaterEnemy, PinkLadyEnemy, ElegantEnemy, PizzaGuyEnemy];
for (var i = 0; i < enemyClasses.length; i++) {
var EnemyClass = enemyClasses[i];
var enemy = new EnemyClass();
enemy.x = 100 + i * 300; // Adjust spacing to fit all enemy types
enemy.y = 100;
enemies.push(enemy);
game.addChild(enemy);
}
}
// Check for bullet-enemy collisions
function checkCollisions() {
for (var b = bullets.length - 1; b >= 0; b--) {
for (var e = enemies.length - 1; e >= 0; e--) {
if (bullets[b].intersects(enemies[e])) {
if (hitman.target !== enemies[e]) {
LK.showGameOver();
} else {
enemies[e].destroy();
enemies.splice(e, 1);
}
bullets[b].destroy();
bullets.splice(b, 1);
break;
}
}
}
}
// Handle touch events for movement and shooting
function handleTouch(obj) {
var touchPos = obj.event.getLocalPosition(game);
hitman.setTargetPosition(touchPos.x);
// Check if the phone was touched and toggle messages
if (phone.intersects({
x: touchPos.x,
y: touchPos.y,
width: 1,
height: 1
})) {
phone.toggleMessages();
if (phone.messagesVisible && phone.messages.length > 0) {
var lastMessage = phone.messages[phone.messages.length - 1];
hitman.target = enemies.find(function (enemy) {
return enemy.createAsset === lastMessage.photo;
});
}
// Show the phone full-screen with messages
if (phone.messagesVisible) {
phone.scale.set(game.width / phone.width, game.height / phone.height);
phone.x = game.width / 2;
phone.y = game.height / 2;
phone.pivot.set(0.5, 0.5);
} else {
// Reset the phone to its original size and position
phone.scale.set(1, 1);
phone.x = 2048 - phone.width / 2;
phone.y = 2732 - phone.height / 2;
phone.pivot.set(0.5, 1);
}
return;
}
// Shoot a bullet
var bullet = new Bullet();
bullet.x = hitman.x;
bullet.y = hitman.y;
bullets.push(bullet);
game.addChild(bullet);
}
// Game tick update
LK.on('tick', function () {
// Move hitman towards target position
hitman.updatePosition();
// Move enemies
for (var i = 0; i < enemies.length; i++) {
enemies[i].patrol();
}
// Move bullets
for (var j = bullets.length - 1; j >= 0; j--) {
bullets[j].move();
// Remove bullets that are off-screen
if (bullets[j].y < -50) {
bullets[j].destroy();
bullets.splice(j, 1);
}
}
// Check for collisions
checkCollisions();
});
// Initialize game elements
initHitman();
initEnemies();
// Initialize the Phone object
var phone = game.addChild(new Phone());
phone.x = 2048 - phone.width / 2;
phone.y = 2732 / 2;
// Send a photo of the target to the hitman after 1 millisecond
LK.setTimeout(function () {
var enemyTypes = ['millionaire', 'homeless', 'redsweater', 'pinklady', 'elegant', 'pizzaguy'];
var randomEnemyType = enemyTypes[Math.floor(Math.random() * enemyTypes.length)];
phone.addMessage('Target acquired.', randomEnemyType);
}, 1);
// Add touch event listener to the game for movement and shooting
game.on('down', handleTouch);
Ниндзя с винтовкой лежит. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
Телефон с приложениями. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
Патрон винтовки. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
Богатый человек идёт. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
Бомж идёт. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
Дорога и кусты. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.