User prompt
scoreboard koy düşman öldürdükçe artsın karakter ölünce sıfırlansın ve
User prompt
durduk yere ölüyorum fixle
User prompt
ana karakter patlamalardan ve üstünde doğan düşmanlardan etilenmesin ve her düşman patlamasın arada random olarak çıksın
User prompt
git gide düşmanları hızlandır ve toplu düşman yerlerinde bir düşman öldüğü zaman patlayıp etrafındakileri de patlatsın ana karakterimizi de tek vuruşta ölecek şekilde ayarlama biraz daha kaçabilecek canımız olsun ↪💡 Consider importing and using the following plugins: @upit/tween.v1
User prompt
ateş hızıyla düşmanlar doğru orantılı olacak
User prompt
hala ateş edildikçe canları azamıyor düşmanların
User prompt
oyun çöktü bu kadar fazla düşman yapma
User prompt
düşmanların hızını ilk başlangıçta düşür sonradan da her ölen bir düşman sonunda yeni +1 düşman spawn olup karakteri kovalamaya başlasın. Bu durum ilerledikçe mermilerin atış hızı yavaş yavaş hızlanacak ↪💡 Consider importing and using the following plugins: @upit/tween.v1
User prompt
düşmanların canı %100 ile başlayacak her mermi isabet ettiğinde %25 azlacak
User prompt
mermi isabet ettikçe canı azalsın isityorum isabet ediyor canları gitmiyor
User prompt
mermi isabet edince düşmanın canı azalmıyor
User prompt
ateş edildikçe ateş edilen düşmanın canı azamaya başlaşın ilk mermi dokunmasından sonra ↪💡 Consider importing and using the following plugins: @upit/tween.v1
User prompt
düşmanlar farklı yerlerden gelecek ve ana karakter en yakına ateş edecek merminin gittiğini de efekt olarak görmek istiyorum ↪💡 Consider importing and using the following plugins: @upit/tween.v1
User prompt
yakın uzak farket etmez silahla ateş edecek ana karakter ↪💡 Consider importing and using the following plugins: @upit/tween.v1
User prompt
düşmanlara ateş edecek ana karakter ↪💡 Consider importing and using the following plugins: @upit/tween.v1
User prompt
düşmanlar üstümüze gelmeye devam edecek sadece otomatik düşmanlara ateş edecek ve ateş efekti çıkacak onlar da bize ateş etsin ↪💡 Consider importing and using the following plugins: @upit/tween.v1
User prompt
bir de otomatik ateş etsin her kaçtığımızda ve düşmanlar da aynı yerden gelmek yerine random hareket etsin ↪💡 Consider importing and using the following plugins: @upit/tween.v1
User prompt
tamam mouse la hareket ettirmek yerine bastığımız yere gitsin ↪💡 Consider importing and using the following plugins: @upit/tween.v1
Code edit (1 edits merged)
Please save this source code
User prompt
Arena Clash PvP
Initial prompt
Basit bir 2D web tabanlı arena PvP oyunu yap. Oyuncular yukarı, aşağı, sola, sağa hareket edebilsin. Her oyuncunun canı olsun. Saldırı yapabilsinler. Biri ölünce birkaç saniye sonra yeniden doğsun. Oyun HTML5 ve JavaScript ile tarayıcıda çalışsın.
/**** * Plugins ****/ var tween = LK.import("@upit/tween.v1"); /**** * Classes ****/ var Enemy = Container.expand(function () { var self = Container.call(this); var enemyGraphics = self.attachAsset('enemy', { anchorX: 0.5, anchorY: 0.5 }); var healthBarBg = self.attachAsset('healthBarBg', { anchorX: 0.5, anchorY: 0.5, x: 0, y: -60 }); var healthBar = self.attachAsset('healthBar', { anchorX: 0.5, anchorY: 0.5, x: 0, y: -60 }); self.maxHealth = 100; self.health = 100; self.speed = 6; self.attackRange = 100; self.attackDamage = 20; self.attackCooldown = 0; self.isRespawning = false; self.respawnTimer = 0; self.aiTimer = 0; self.targetX = 0; self.targetY = 0; self.takeDamage = function (damage) { if (self.isRespawning) return; self.health -= damage; if (self.health < 0) self.health = 0; self.updateHealthBar(); // Flash red when taking damage tween(enemyGraphics, { tint: 0xFF0000 }, { duration: 200, onFinish: function onFinish() { tween(enemyGraphics, { tint: 0xFFFFFF }, { duration: 200 }); } }); if (self.health <= 0) { self.die(); } LK.getSound('hit').play(); }; self.updateHealthBar = function () { var healthPercent = self.health / self.maxHealth; healthBar.scaleX = healthPercent; if (healthPercent > 0.6) { healthBar.tint = 0x00FF00; } else if (healthPercent > 0.3) { healthBar.tint = 0xFFFF00; } else { healthBar.tint = 0xFF0000; } }; self.die = function () { self.isRespawning = true; self.respawnTimer = 180; // 3 seconds at 60fps enemyGraphics.alpha = 0.3; healthBar.visible = false; healthBarBg.visible = false; }; self.respawn = function () { self.health = self.maxHealth; self.isRespawning = false; self.respawnTimer = 0; enemyGraphics.alpha = 1; healthBar.visible = true; healthBarBg.visible = true; self.updateHealthBar(); // Respawn at random position self.x = 300 + Math.random() * 1400; self.y = 400 + Math.random() * 1800; LK.getSound('respawn').play(); }; self.attack = function () { if (self.attackCooldown > 0 || self.isRespawning) return; self.attackCooldown = 90; // 1.5 second cooldown // Create attack effect var attackEffect = LK.getAsset('attackEffect', { anchorX: 0.5, anchorY: 0.5 }); attackEffect.x = self.x; attackEffect.y = self.y; attackEffect.alpha = 0.7; attackEffect.tint = 0xFF4444; game.addChild(attackEffect); // Scale and fade out attack effect tween(attackEffect, { scaleX: 1.5, scaleY: 1.5, alpha: 0 }, { duration: 300, onFinish: function onFinish() { attackEffect.destroy(); } }); // Check for hits on player if (!player.isRespawning) { var distance = Math.sqrt(Math.pow(player.x - self.x, 2) + Math.pow(player.y - self.y, 2)); if (distance <= self.attackRange) { player.takeDamage(self.attackDamage); } } LK.getSound('attack').play(); }; self.update = function () { if (self.attackCooldown > 0) { self.attackCooldown--; } if (self.isRespawning) { self.respawnTimer--; if (self.respawnTimer <= 0) { self.respawn(); } return; } // Simple AI - move towards player and attack when close self.aiTimer++; if (self.aiTimer >= 30) { // Update AI every 0.5 seconds self.aiTimer = 0; if (!player.isRespawning) { var dx = player.x - self.x; var dy = player.y - self.y; var distance = Math.sqrt(dx * dx + dy * dy); if (distance > self.attackRange) { // Move towards player self.targetX = self.x + dx / distance * self.speed * 5; self.targetY = self.y + dy / distance * self.speed * 5; } else { // Attack if close enough self.attack(); } } } // Move towards target if (self.targetX !== self.x) { var moveX = self.targetX - self.x; if (Math.abs(moveX) > self.speed) { self.x += moveX > 0 ? self.speed : -self.speed; } else { self.x = self.targetX; } } if (self.targetY !== self.y) { var moveY = self.targetY - self.y; if (Math.abs(moveY) > self.speed) { self.y += moveY > 0 ? self.speed : -self.speed; } else { self.y = self.targetY; } } // Keep enemy in bounds if (self.x < 150) self.x = 150; if (self.x > 1898) self.x = 1898; if (self.y < 150) self.y = 150; if (self.y > 2582) self.y = 2582; }; return self; }); var Player = Container.expand(function () { var self = Container.call(this); var playerGraphics = self.attachAsset('player', { anchorX: 0.5, anchorY: 0.5 }); var healthBarBg = self.attachAsset('healthBarBg', { anchorX: 0.5, anchorY: 0.5, x: 0, y: -60 }); var healthBar = self.attachAsset('healthBar', { anchorX: 0.5, anchorY: 0.5, x: 0, y: -60 }); self.maxHealth = 100; self.health = 100; self.speed = 8; self.attackRange = 100; self.attackDamage = 25; self.attackCooldown = 0; self.isRespawning = false; self.respawnTimer = 0; self.takeDamage = function (damage) { if (self.isRespawning) return; self.health -= damage; if (self.health < 0) self.health = 0; self.updateHealthBar(); // Flash red when taking damage tween(playerGraphics, { tint: 0xFF0000 }, { duration: 200, onFinish: function onFinish() { tween(playerGraphics, { tint: 0xFFFFFF }, { duration: 200 }); } }); if (self.health <= 0) { self.die(); } LK.getSound('hit').play(); }; self.updateHealthBar = function () { var healthPercent = self.health / self.maxHealth; healthBar.scaleX = healthPercent; if (healthPercent > 0.6) { healthBar.tint = 0x00FF00; } else if (healthPercent > 0.3) { healthBar.tint = 0xFFFF00; } else { healthBar.tint = 0xFF0000; } }; self.die = function () { self.isRespawning = true; self.respawnTimer = 180; // 3 seconds at 60fps playerGraphics.alpha = 0.3; healthBar.visible = false; healthBarBg.visible = false; }; self.respawn = function () { self.health = self.maxHealth; self.isRespawning = false; self.respawnTimer = 0; playerGraphics.alpha = 1; healthBar.visible = true; healthBarBg.visible = true; self.updateHealthBar(); // Respawn at random position self.x = 300 + Math.random() * 1400; self.y = 400 + Math.random() * 1800; LK.getSound('respawn').play(); }; self.attack = function () { if (self.attackCooldown > 0 || self.isRespawning) return; self.attackCooldown = 60; // 1 second cooldown // Create attack effect var attackEffect = LK.getAsset('attackEffect', { anchorX: 0.5, anchorY: 0.5 }); attackEffect.x = self.x; attackEffect.y = self.y; attackEffect.alpha = 0.7; game.addChild(attackEffect); // Scale and fade out attack effect tween(attackEffect, { scaleX: 1.5, scaleY: 1.5, alpha: 0 }, { duration: 300, onFinish: function onFinish() { attackEffect.destroy(); } }); // Check for hits on enemies for (var i = 0; i < enemies.length; i++) { var enemy = enemies[i]; if (!enemy.isRespawning) { var distance = Math.sqrt(Math.pow(enemy.x - self.x, 2) + Math.pow(enemy.y - self.y, 2)); if (distance <= self.attackRange) { enemy.takeDamage(self.attackDamage); } } } LK.getSound('attack').play(); }; self.update = function () { if (self.attackCooldown > 0) { self.attackCooldown--; } if (self.isRespawning) { self.respawnTimer--; if (self.respawnTimer <= 0) { self.respawn(); } } }; return self; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x2C3E50 }); /**** * Game Code ****/ // Create arena background var arena = game.addChild(LK.getAsset('arena', { anchorX: 0.5, anchorY: 0.5 })); arena.x = 2048 / 2; arena.y = 2732 / 2; // Game variables var player; var enemies = []; var moveUp = false; var moveDown = false; var moveLeft = false; var moveRight = false; // Create player player = game.addChild(new Player()); player.x = 500; player.y = 1000; // Create enemies for (var i = 0; i < 3; i++) { var enemy = game.addChild(new Enemy()); enemy.x = 800 + i * 300; enemy.y = 800 + i * 200; enemy.targetX = enemy.x; enemy.targetY = enemy.y; enemies.push(enemy); } // UI Elements var instructionText = new Text2('Move: Drag player around\nAttack: Tap anywhere', { size: 40, fill: 0xFFFFFF }); instructionText.anchor.set(0.5, 0); LK.gui.top.addChild(instructionText); instructionText.y = 100; var dragNode = null; var lastTouchTime = 0; // Touch controls game.down = function (x, y, obj) { var currentTime = Date.now(); // Check if touching player for dragging var playerDistance = Math.sqrt(Math.pow(x - player.x, 2) + Math.pow(y - player.y, 2)); if (playerDistance < 60) { dragNode = player; } else { // If not dragging and it's been less than 300ms since last touch, it's an attack if (currentTime - lastTouchTime < 300) { player.attack(); } } lastTouchTime = currentTime; }; game.move = function (x, y, obj) { if (dragNode && !dragNode.isRespawning) { dragNode.x = x; dragNode.y = y; // Keep player in bounds if (dragNode.x < 150) dragNode.x = 150; if (dragNode.x > 1898) dragNode.x = 1898; if (dragNode.y < 150) dragNode.y = 150; if (dragNode.y > 2582) dragNode.y = 2582; } }; game.up = function (x, y, obj) { if (dragNode) { dragNode = null; } else { // Single tap attack player.attack(); } }; // Main game loop game.update = function () { // Update all game objects player.update(); for (var i = 0; i < enemies.length; i++) { enemies[i].update(); } };
===================================================================
--- original.js
+++ change.js
@@ -1,6 +1,397 @@
-/****
+/****
+* Plugins
+****/
+var tween = LK.import("@upit/tween.v1");
+
+/****
+* Classes
+****/
+var Enemy = Container.expand(function () {
+ var self = Container.call(this);
+ var enemyGraphics = self.attachAsset('enemy', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ var healthBarBg = self.attachAsset('healthBarBg', {
+ anchorX: 0.5,
+ anchorY: 0.5,
+ x: 0,
+ y: -60
+ });
+ var healthBar = self.attachAsset('healthBar', {
+ anchorX: 0.5,
+ anchorY: 0.5,
+ x: 0,
+ y: -60
+ });
+ self.maxHealth = 100;
+ self.health = 100;
+ self.speed = 6;
+ self.attackRange = 100;
+ self.attackDamage = 20;
+ self.attackCooldown = 0;
+ self.isRespawning = false;
+ self.respawnTimer = 0;
+ self.aiTimer = 0;
+ self.targetX = 0;
+ self.targetY = 0;
+ self.takeDamage = function (damage) {
+ if (self.isRespawning) return;
+ self.health -= damage;
+ if (self.health < 0) self.health = 0;
+ self.updateHealthBar();
+ // Flash red when taking damage
+ tween(enemyGraphics, {
+ tint: 0xFF0000
+ }, {
+ duration: 200,
+ onFinish: function onFinish() {
+ tween(enemyGraphics, {
+ tint: 0xFFFFFF
+ }, {
+ duration: 200
+ });
+ }
+ });
+ if (self.health <= 0) {
+ self.die();
+ }
+ LK.getSound('hit').play();
+ };
+ self.updateHealthBar = function () {
+ var healthPercent = self.health / self.maxHealth;
+ healthBar.scaleX = healthPercent;
+ if (healthPercent > 0.6) {
+ healthBar.tint = 0x00FF00;
+ } else if (healthPercent > 0.3) {
+ healthBar.tint = 0xFFFF00;
+ } else {
+ healthBar.tint = 0xFF0000;
+ }
+ };
+ self.die = function () {
+ self.isRespawning = true;
+ self.respawnTimer = 180; // 3 seconds at 60fps
+ enemyGraphics.alpha = 0.3;
+ healthBar.visible = false;
+ healthBarBg.visible = false;
+ };
+ self.respawn = function () {
+ self.health = self.maxHealth;
+ self.isRespawning = false;
+ self.respawnTimer = 0;
+ enemyGraphics.alpha = 1;
+ healthBar.visible = true;
+ healthBarBg.visible = true;
+ self.updateHealthBar();
+ // Respawn at random position
+ self.x = 300 + Math.random() * 1400;
+ self.y = 400 + Math.random() * 1800;
+ LK.getSound('respawn').play();
+ };
+ self.attack = function () {
+ if (self.attackCooldown > 0 || self.isRespawning) return;
+ self.attackCooldown = 90; // 1.5 second cooldown
+ // Create attack effect
+ var attackEffect = LK.getAsset('attackEffect', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ attackEffect.x = self.x;
+ attackEffect.y = self.y;
+ attackEffect.alpha = 0.7;
+ attackEffect.tint = 0xFF4444;
+ game.addChild(attackEffect);
+ // Scale and fade out attack effect
+ tween(attackEffect, {
+ scaleX: 1.5,
+ scaleY: 1.5,
+ alpha: 0
+ }, {
+ duration: 300,
+ onFinish: function onFinish() {
+ attackEffect.destroy();
+ }
+ });
+ // Check for hits on player
+ if (!player.isRespawning) {
+ var distance = Math.sqrt(Math.pow(player.x - self.x, 2) + Math.pow(player.y - self.y, 2));
+ if (distance <= self.attackRange) {
+ player.takeDamage(self.attackDamage);
+ }
+ }
+ LK.getSound('attack').play();
+ };
+ self.update = function () {
+ if (self.attackCooldown > 0) {
+ self.attackCooldown--;
+ }
+ if (self.isRespawning) {
+ self.respawnTimer--;
+ if (self.respawnTimer <= 0) {
+ self.respawn();
+ }
+ return;
+ }
+ // Simple AI - move towards player and attack when close
+ self.aiTimer++;
+ if (self.aiTimer >= 30) {
+ // Update AI every 0.5 seconds
+ self.aiTimer = 0;
+ if (!player.isRespawning) {
+ var dx = player.x - self.x;
+ var dy = player.y - self.y;
+ var distance = Math.sqrt(dx * dx + dy * dy);
+ if (distance > self.attackRange) {
+ // Move towards player
+ self.targetX = self.x + dx / distance * self.speed * 5;
+ self.targetY = self.y + dy / distance * self.speed * 5;
+ } else {
+ // Attack if close enough
+ self.attack();
+ }
+ }
+ }
+ // Move towards target
+ if (self.targetX !== self.x) {
+ var moveX = self.targetX - self.x;
+ if (Math.abs(moveX) > self.speed) {
+ self.x += moveX > 0 ? self.speed : -self.speed;
+ } else {
+ self.x = self.targetX;
+ }
+ }
+ if (self.targetY !== self.y) {
+ var moveY = self.targetY - self.y;
+ if (Math.abs(moveY) > self.speed) {
+ self.y += moveY > 0 ? self.speed : -self.speed;
+ } else {
+ self.y = self.targetY;
+ }
+ }
+ // Keep enemy in bounds
+ if (self.x < 150) self.x = 150;
+ if (self.x > 1898) self.x = 1898;
+ if (self.y < 150) self.y = 150;
+ if (self.y > 2582) self.y = 2582;
+ };
+ return self;
+});
+var Player = Container.expand(function () {
+ var self = Container.call(this);
+ var playerGraphics = self.attachAsset('player', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ var healthBarBg = self.attachAsset('healthBarBg', {
+ anchorX: 0.5,
+ anchorY: 0.5,
+ x: 0,
+ y: -60
+ });
+ var healthBar = self.attachAsset('healthBar', {
+ anchorX: 0.5,
+ anchorY: 0.5,
+ x: 0,
+ y: -60
+ });
+ self.maxHealth = 100;
+ self.health = 100;
+ self.speed = 8;
+ self.attackRange = 100;
+ self.attackDamage = 25;
+ self.attackCooldown = 0;
+ self.isRespawning = false;
+ self.respawnTimer = 0;
+ self.takeDamage = function (damage) {
+ if (self.isRespawning) return;
+ self.health -= damage;
+ if (self.health < 0) self.health = 0;
+ self.updateHealthBar();
+ // Flash red when taking damage
+ tween(playerGraphics, {
+ tint: 0xFF0000
+ }, {
+ duration: 200,
+ onFinish: function onFinish() {
+ tween(playerGraphics, {
+ tint: 0xFFFFFF
+ }, {
+ duration: 200
+ });
+ }
+ });
+ if (self.health <= 0) {
+ self.die();
+ }
+ LK.getSound('hit').play();
+ };
+ self.updateHealthBar = function () {
+ var healthPercent = self.health / self.maxHealth;
+ healthBar.scaleX = healthPercent;
+ if (healthPercent > 0.6) {
+ healthBar.tint = 0x00FF00;
+ } else if (healthPercent > 0.3) {
+ healthBar.tint = 0xFFFF00;
+ } else {
+ healthBar.tint = 0xFF0000;
+ }
+ };
+ self.die = function () {
+ self.isRespawning = true;
+ self.respawnTimer = 180; // 3 seconds at 60fps
+ playerGraphics.alpha = 0.3;
+ healthBar.visible = false;
+ healthBarBg.visible = false;
+ };
+ self.respawn = function () {
+ self.health = self.maxHealth;
+ self.isRespawning = false;
+ self.respawnTimer = 0;
+ playerGraphics.alpha = 1;
+ healthBar.visible = true;
+ healthBarBg.visible = true;
+ self.updateHealthBar();
+ // Respawn at random position
+ self.x = 300 + Math.random() * 1400;
+ self.y = 400 + Math.random() * 1800;
+ LK.getSound('respawn').play();
+ };
+ self.attack = function () {
+ if (self.attackCooldown > 0 || self.isRespawning) return;
+ self.attackCooldown = 60; // 1 second cooldown
+ // Create attack effect
+ var attackEffect = LK.getAsset('attackEffect', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ attackEffect.x = self.x;
+ attackEffect.y = self.y;
+ attackEffect.alpha = 0.7;
+ game.addChild(attackEffect);
+ // Scale and fade out attack effect
+ tween(attackEffect, {
+ scaleX: 1.5,
+ scaleY: 1.5,
+ alpha: 0
+ }, {
+ duration: 300,
+ onFinish: function onFinish() {
+ attackEffect.destroy();
+ }
+ });
+ // Check for hits on enemies
+ for (var i = 0; i < enemies.length; i++) {
+ var enemy = enemies[i];
+ if (!enemy.isRespawning) {
+ var distance = Math.sqrt(Math.pow(enemy.x - self.x, 2) + Math.pow(enemy.y - self.y, 2));
+ if (distance <= self.attackRange) {
+ enemy.takeDamage(self.attackDamage);
+ }
+ }
+ }
+ LK.getSound('attack').play();
+ };
+ self.update = function () {
+ if (self.attackCooldown > 0) {
+ self.attackCooldown--;
+ }
+ if (self.isRespawning) {
+ self.respawnTimer--;
+ if (self.respawnTimer <= 0) {
+ self.respawn();
+ }
+ }
+ };
+ return self;
+});
+
+/****
* Initialize Game
-****/
+****/
var game = new LK.Game({
- backgroundColor: 0x000000
-});
\ No newline at end of file
+ backgroundColor: 0x2C3E50
+});
+
+/****
+* Game Code
+****/
+// Create arena background
+var arena = game.addChild(LK.getAsset('arena', {
+ anchorX: 0.5,
+ anchorY: 0.5
+}));
+arena.x = 2048 / 2;
+arena.y = 2732 / 2;
+// Game variables
+var player;
+var enemies = [];
+var moveUp = false;
+var moveDown = false;
+var moveLeft = false;
+var moveRight = false;
+// Create player
+player = game.addChild(new Player());
+player.x = 500;
+player.y = 1000;
+// Create enemies
+for (var i = 0; i < 3; i++) {
+ var enemy = game.addChild(new Enemy());
+ enemy.x = 800 + i * 300;
+ enemy.y = 800 + i * 200;
+ enemy.targetX = enemy.x;
+ enemy.targetY = enemy.y;
+ enemies.push(enemy);
+}
+// UI Elements
+var instructionText = new Text2('Move: Drag player around\nAttack: Tap anywhere', {
+ size: 40,
+ fill: 0xFFFFFF
+});
+instructionText.anchor.set(0.5, 0);
+LK.gui.top.addChild(instructionText);
+instructionText.y = 100;
+var dragNode = null;
+var lastTouchTime = 0;
+// Touch controls
+game.down = function (x, y, obj) {
+ var currentTime = Date.now();
+ // Check if touching player for dragging
+ var playerDistance = Math.sqrt(Math.pow(x - player.x, 2) + Math.pow(y - player.y, 2));
+ if (playerDistance < 60) {
+ dragNode = player;
+ } else {
+ // If not dragging and it's been less than 300ms since last touch, it's an attack
+ if (currentTime - lastTouchTime < 300) {
+ player.attack();
+ }
+ }
+ lastTouchTime = currentTime;
+};
+game.move = function (x, y, obj) {
+ if (dragNode && !dragNode.isRespawning) {
+ dragNode.x = x;
+ dragNode.y = y;
+ // Keep player in bounds
+ if (dragNode.x < 150) dragNode.x = 150;
+ if (dragNode.x > 1898) dragNode.x = 1898;
+ if (dragNode.y < 150) dragNode.y = 150;
+ if (dragNode.y > 2582) dragNode.y = 2582;
+ }
+};
+game.up = function (x, y, obj) {
+ if (dragNode) {
+ dragNode = null;
+ } else {
+ // Single tap attack
+ player.attack();
+ }
+};
+// Main game loop
+game.update = function () {
+ // Update all game objects
+ player.update();
+ for (var i = 0; i < enemies.length; i++) {
+ enemies[i].update();
+ }
+};
\ No newline at end of file
bullet. No background. Transparent background. Blank background. No shadows. 2d. In-Game asset. flat
Face. No background. Transparent background. Blank background. No shadows. 2d. In-Game asset. flat
face. No background. Transparent background. Blank background. No shadows. 2d. In-Game asset. flat
green hearth. No background. Transparent background. Blank background. No shadows. 2d. In-Game asset. flat
Grey gound . No background. Transparent background. Blank background. No shadows. 2d. In-Game asset. flat