User prompt
Arka plan siyah olsun
User prompt
Spidermam karakteri haraket ettirmek için parmağınızı herhangi bir yere dokununca karakter dokundumyz yere gitsin
Code edit (1 edits merged)
Please save this source code
User prompt
Spider-Man Web Swinging Combat
Initial prompt
Spiderman game karakter yukarı ağını atsın ve ona tutunarak ileri doğru atılsın ve etrafta düşmanlar lsun silahları olsun bize ateş etsin silahlı askerlerin canı 100 olcak bizin spiderman karakterin canı 200 olcak spiderman ağ atmak için ekranın sağ orta turunda spider yazsın ona basınca spiderman elinde ağ fırlatsın ve karşısındaki düşmana 50 asar ver
/**** * 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 }); self.health = 100; self.maxHealth = 100; self.shootCooldown = 0; self.shootDelay = 90; // 1.5 seconds at 60fps self.update = function () { // Look towards Spider-Man var dx = spiderMan.x - self.x; var dy = spiderMan.y - self.y; var angle = Math.atan2(dy, dx); enemyGraphics.rotation = angle; // Shooting behavior self.shootCooldown--; if (self.shootCooldown <= 0) { self.shoot(); self.shootCooldown = self.shootDelay + Math.random() * 60; // Add randomness } }; self.shoot = function () { var bullet = new EnemyBullet(); bullet.x = self.x; bullet.y = self.y; var dx = spiderMan.x - self.x; var dy = spiderMan.y - self.y; var distance = Math.sqrt(dx * dx + dy * dy); bullet.velocityX = dx / distance * 6; bullet.velocityY = dy / distance * 6; enemyBullets.push(bullet); game.addChild(bullet); }; self.takeDamage = function (damage) { self.health -= damage; LK.effects.flashObject(self, 0xffffff, 200); LK.getSound('enemyHit').play(); if (self.health <= 0) { self.destroy(); return true; // Enemy died } return false; }; return self; }); var EnemyBullet = Container.expand(function () { var self = Container.call(this); var bulletGraphics = self.attachAsset('enemyBullet', { anchorX: 0.5, anchorY: 0.5 }); self.damage = 25; self.velocityX = 0; self.velocityY = 0; self.update = function () { self.x += self.velocityX; self.y += self.velocityY; // Check bounds if (self.x < -50 || self.x > 2098 || self.y < -50 || self.y > 2782) { self.destroy(); } }; return self; }); var SpiderMan = Container.expand(function () { var self = Container.call(this); var spiderGraphics = self.attachAsset('spiderMan', { anchorX: 0.5, anchorY: 0.5 }); self.health = 200; self.maxHealth = 200; self.speed = 8; self.isSwinging = false; self.swingAnchor = null; self.swingRadius = 0; self.swingAngle = 0; self.velocityX = 0; self.velocityY = 0; self.webLine = null; self.update = function () { if (self.isSwinging && self.swingAnchor) { // Web swinging physics var dx = self.x - self.swingAnchor.x; var dy = self.y - self.swingAnchor.y; var distance = Math.sqrt(dx * dx + dy * dy); if (distance > self.swingRadius) { // Constrain to swing radius var angle = Math.atan2(dy, dx); self.x = self.swingAnchor.x + Math.cos(angle) * self.swingRadius; self.y = self.swingAnchor.y + Math.sin(angle) * self.swingRadius; // Apply swing momentum self.velocityX += Math.cos(angle + Math.PI / 2) * 0.3; self.velocityY += 2; // Gravity } // Update web line position if (self.webLine) { self.webLine.x = (self.x + self.swingAnchor.x) / 2; self.webLine.y = (self.y + self.swingAnchor.y) / 2; var lineAngle = Math.atan2(self.swingAnchor.y - self.y, self.swingAnchor.x - self.x); self.webLine.rotation = lineAngle + Math.PI / 2; self.webLine.height = Math.sqrt(dx * dx + dy * dy); } } else { // Free fall physics self.velocityY += 0.5; // Gravity self.x += self.velocityX; self.y += self.velocityY; // Air resistance self.velocityX *= 0.98; self.velocityY *= 0.99; } // Keep Spider-Man on screen if (self.x < 40) { self.x = 40; self.velocityX = 0; } if (self.x > 2008) { self.x = 2008; self.velocityX = 0; } if (self.y > 2600) { self.y = 2600; self.velocityY = 0; } if (self.y < 40) { self.y = 40; self.velocityY = 0; } }; self.takeDamage = function (damage) { self.health -= damage; LK.effects.flashObject(self, 0xff0000, 300); LK.getSound('playerHit').play(); if (self.health <= 0) { LK.showGameOver(); } }; self.startSwinging = function (attachPoint) { self.isSwinging = true; self.swingAnchor = attachPoint; var dx = self.x - attachPoint.x; var dy = self.y - attachPoint.y; self.swingRadius = Math.sqrt(dx * dx + dy * dy); // Create web line self.webLine = game.addChild(LK.getAsset('webLine', { anchorX: 0.5, anchorY: 0 })); }; self.stopSwinging = function () { self.isSwinging = false; self.swingAnchor = null; if (self.webLine) { self.webLine.destroy(); self.webLine = null; } }; return self; }); var WebProjectile = Container.expand(function () { var self = Container.call(this); var webGraphics = self.attachAsset('webProjectile', { anchorX: 0.5, anchorY: 0.5 }); self.speed = 12; self.damage = 50; self.velocityX = 0; self.velocityY = 0; self.update = function () { self.x += self.velocityX; self.y += self.velocityY; // Check bounds if (self.x < -50 || self.x > 2098 || self.y < -50 || self.y > 2782) { self.destroy(); } }; return self; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x87CEEB }); /**** * Game Code ****/ // Game variables var spiderMan; var enemies = []; var webProjectiles = []; var enemyBullets = []; var attachPoints = []; var spiderButton; var healthBar; var waveNumber = 1; var enemiesDefeated = 0; var spawnTimer = 0; // Create Spider-Man spiderMan = game.addChild(new SpiderMan()); spiderMan.x = 1024; spiderMan.y = 1800; // Create attachment points for web swinging for (var i = 0; i < 8; i++) { var attachPoint = game.addChild(LK.getAsset('attachPoint', { anchorX: 0.5, anchorY: 0.5 })); attachPoint.x = 200 + i * 250; attachPoint.y = 200 + Math.random() * 300; attachPoints.push(attachPoint); } // Create Spider button spiderButton = LK.gui.right.addChild(new Text2('SPIDER', { size: 60, fill: 0xFF0000 })); spiderButton.anchor.set(0.5, 0.5); spiderButton.x = -150; // Create health display healthBar = LK.gui.topLeft.addChild(new Text2('Health: 200', { size: 50, fill: 0xFFFFFF })); healthBar.x = 150; healthBar.y = 50; // Spawn initial enemies function spawnEnemies(count) { for (var i = 0; i < count; i++) { var enemy = new Enemy(); enemy.x = Math.random() * 1800 + 100; enemy.y = Math.random() * 400 + 300; enemies.push(enemy); game.addChild(enemy); } } spawnEnemies(3); // Touch handlers spiderButton.down = function (x, y, obj) { // Shoot web projectile var webShot = new WebProjectile(); webShot.x = spiderMan.x; webShot.y = spiderMan.y; // Find nearest enemy var nearestEnemy = null; var nearestDistance = Infinity; for (var i = 0; i < enemies.length; i++) { var enemy = enemies[i]; var dx = enemy.x - spiderMan.x; var dy = enemy.y - spiderMan.y; var distance = Math.sqrt(dx * dx + dy * dy); if (distance < nearestDistance) { nearestDistance = distance; nearestEnemy = enemy; } } if (nearestEnemy) { var dx = nearestEnemy.x - spiderMan.x; var dy = nearestEnemy.y - spiderMan.y; var distance = Math.sqrt(dx * dx + dy * dy); webShot.velocityX = dx / distance * webShot.speed; webShot.velocityY = dy / distance * webShot.speed; } else { webShot.velocityY = -webShot.speed; } webProjectiles.push(webShot); game.addChild(webShot); LK.getSound('webShoot').play(); }; game.down = function (x, y, obj) { // Check if tapping on an attachment point to start swinging for (var i = 0; i < attachPoints.length; i++) { var point = attachPoints[i]; var dx = x - point.x; var dy = y - point.y; var distance = Math.sqrt(dx * dx + dy * dy); if (distance < 100) { spiderMan.startSwinging(point); break; } } }; game.up = function (x, y, obj) { // Stop swinging on release spiderMan.stopSwinging(); }; // Main game loop game.update = function () { // Update health display healthBar.setText('Health: ' + spiderMan.health); // Handle web projectile collisions for (var i = webProjectiles.length - 1; i >= 0; i--) { var web = webProjectiles[i]; var webHit = false; for (var j = enemies.length - 1; j >= 0; j--) { var enemy = enemies[j]; if (web.intersects(enemy)) { if (enemy.takeDamage(web.damage)) { // Enemy died enemies.splice(j, 1); enemiesDefeated++; LK.setScore(LK.getScore() + 100); } web.destroy(); webProjectiles.splice(i, 1); webHit = true; break; } } } // Handle enemy bullet collisions for (var i = enemyBullets.length - 1; i >= 0; i--) { var bullet = enemyBullets[i]; if (bullet.intersects(spiderMan)) { spiderMan.takeDamage(bullet.damage); bullet.destroy(); enemyBullets.splice(i, 1); } } // Remove destroyed objects from arrays webProjectiles = webProjectiles.filter(function (web) { return web.parent !== null; }); enemyBullets = enemyBullets.filter(function (bullet) { return bullet.parent !== null; }); // Spawn new wave when all enemies defeated if (enemies.length === 0) { spawnTimer++; if (spawnTimer > 180) { // 3 seconds waveNumber++; spawnEnemies(Math.min(2 + waveNumber, 6)); spawnTimer = 0; } } // Win condition if (enemiesDefeated >= 20) { LK.showYouWin(); } };
===================================================================
--- original.js
+++ change.js
@@ -1,6 +1,355 @@
-/****
+/****
+* 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
+ });
+ self.health = 100;
+ self.maxHealth = 100;
+ self.shootCooldown = 0;
+ self.shootDelay = 90; // 1.5 seconds at 60fps
+ self.update = function () {
+ // Look towards Spider-Man
+ var dx = spiderMan.x - self.x;
+ var dy = spiderMan.y - self.y;
+ var angle = Math.atan2(dy, dx);
+ enemyGraphics.rotation = angle;
+ // Shooting behavior
+ self.shootCooldown--;
+ if (self.shootCooldown <= 0) {
+ self.shoot();
+ self.shootCooldown = self.shootDelay + Math.random() * 60; // Add randomness
+ }
+ };
+ self.shoot = function () {
+ var bullet = new EnemyBullet();
+ bullet.x = self.x;
+ bullet.y = self.y;
+ var dx = spiderMan.x - self.x;
+ var dy = spiderMan.y - self.y;
+ var distance = Math.sqrt(dx * dx + dy * dy);
+ bullet.velocityX = dx / distance * 6;
+ bullet.velocityY = dy / distance * 6;
+ enemyBullets.push(bullet);
+ game.addChild(bullet);
+ };
+ self.takeDamage = function (damage) {
+ self.health -= damage;
+ LK.effects.flashObject(self, 0xffffff, 200);
+ LK.getSound('enemyHit').play();
+ if (self.health <= 0) {
+ self.destroy();
+ return true; // Enemy died
+ }
+ return false;
+ };
+ return self;
+});
+var EnemyBullet = Container.expand(function () {
+ var self = Container.call(this);
+ var bulletGraphics = self.attachAsset('enemyBullet', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ self.damage = 25;
+ self.velocityX = 0;
+ self.velocityY = 0;
+ self.update = function () {
+ self.x += self.velocityX;
+ self.y += self.velocityY;
+ // Check bounds
+ if (self.x < -50 || self.x > 2098 || self.y < -50 || self.y > 2782) {
+ self.destroy();
+ }
+ };
+ return self;
+});
+var SpiderMan = Container.expand(function () {
+ var self = Container.call(this);
+ var spiderGraphics = self.attachAsset('spiderMan', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ self.health = 200;
+ self.maxHealth = 200;
+ self.speed = 8;
+ self.isSwinging = false;
+ self.swingAnchor = null;
+ self.swingRadius = 0;
+ self.swingAngle = 0;
+ self.velocityX = 0;
+ self.velocityY = 0;
+ self.webLine = null;
+ self.update = function () {
+ if (self.isSwinging && self.swingAnchor) {
+ // Web swinging physics
+ var dx = self.x - self.swingAnchor.x;
+ var dy = self.y - self.swingAnchor.y;
+ var distance = Math.sqrt(dx * dx + dy * dy);
+ if (distance > self.swingRadius) {
+ // Constrain to swing radius
+ var angle = Math.atan2(dy, dx);
+ self.x = self.swingAnchor.x + Math.cos(angle) * self.swingRadius;
+ self.y = self.swingAnchor.y + Math.sin(angle) * self.swingRadius;
+ // Apply swing momentum
+ self.velocityX += Math.cos(angle + Math.PI / 2) * 0.3;
+ self.velocityY += 2; // Gravity
+ }
+ // Update web line position
+ if (self.webLine) {
+ self.webLine.x = (self.x + self.swingAnchor.x) / 2;
+ self.webLine.y = (self.y + self.swingAnchor.y) / 2;
+ var lineAngle = Math.atan2(self.swingAnchor.y - self.y, self.swingAnchor.x - self.x);
+ self.webLine.rotation = lineAngle + Math.PI / 2;
+ self.webLine.height = Math.sqrt(dx * dx + dy * dy);
+ }
+ } else {
+ // Free fall physics
+ self.velocityY += 0.5; // Gravity
+ self.x += self.velocityX;
+ self.y += self.velocityY;
+ // Air resistance
+ self.velocityX *= 0.98;
+ self.velocityY *= 0.99;
+ }
+ // Keep Spider-Man on screen
+ if (self.x < 40) {
+ self.x = 40;
+ self.velocityX = 0;
+ }
+ if (self.x > 2008) {
+ self.x = 2008;
+ self.velocityX = 0;
+ }
+ if (self.y > 2600) {
+ self.y = 2600;
+ self.velocityY = 0;
+ }
+ if (self.y < 40) {
+ self.y = 40;
+ self.velocityY = 0;
+ }
+ };
+ self.takeDamage = function (damage) {
+ self.health -= damage;
+ LK.effects.flashObject(self, 0xff0000, 300);
+ LK.getSound('playerHit').play();
+ if (self.health <= 0) {
+ LK.showGameOver();
+ }
+ };
+ self.startSwinging = function (attachPoint) {
+ self.isSwinging = true;
+ self.swingAnchor = attachPoint;
+ var dx = self.x - attachPoint.x;
+ var dy = self.y - attachPoint.y;
+ self.swingRadius = Math.sqrt(dx * dx + dy * dy);
+ // Create web line
+ self.webLine = game.addChild(LK.getAsset('webLine', {
+ anchorX: 0.5,
+ anchorY: 0
+ }));
+ };
+ self.stopSwinging = function () {
+ self.isSwinging = false;
+ self.swingAnchor = null;
+ if (self.webLine) {
+ self.webLine.destroy();
+ self.webLine = null;
+ }
+ };
+ return self;
+});
+var WebProjectile = Container.expand(function () {
+ var self = Container.call(this);
+ var webGraphics = self.attachAsset('webProjectile', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ self.speed = 12;
+ self.damage = 50;
+ self.velocityX = 0;
+ self.velocityY = 0;
+ self.update = function () {
+ self.x += self.velocityX;
+ self.y += self.velocityY;
+ // Check bounds
+ if (self.x < -50 || self.x > 2098 || self.y < -50 || self.y > 2782) {
+ self.destroy();
+ }
+ };
+ return self;
+});
+
+/****
* Initialize Game
-****/
+****/
var game = new LK.Game({
- backgroundColor: 0x000000
-});
\ No newline at end of file
+ backgroundColor: 0x87CEEB
+});
+
+/****
+* Game Code
+****/
+// Game variables
+var spiderMan;
+var enemies = [];
+var webProjectiles = [];
+var enemyBullets = [];
+var attachPoints = [];
+var spiderButton;
+var healthBar;
+var waveNumber = 1;
+var enemiesDefeated = 0;
+var spawnTimer = 0;
+// Create Spider-Man
+spiderMan = game.addChild(new SpiderMan());
+spiderMan.x = 1024;
+spiderMan.y = 1800;
+// Create attachment points for web swinging
+for (var i = 0; i < 8; i++) {
+ var attachPoint = game.addChild(LK.getAsset('attachPoint', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ }));
+ attachPoint.x = 200 + i * 250;
+ attachPoint.y = 200 + Math.random() * 300;
+ attachPoints.push(attachPoint);
+}
+// Create Spider button
+spiderButton = LK.gui.right.addChild(new Text2('SPIDER', {
+ size: 60,
+ fill: 0xFF0000
+}));
+spiderButton.anchor.set(0.5, 0.5);
+spiderButton.x = -150;
+// Create health display
+healthBar = LK.gui.topLeft.addChild(new Text2('Health: 200', {
+ size: 50,
+ fill: 0xFFFFFF
+}));
+healthBar.x = 150;
+healthBar.y = 50;
+// Spawn initial enemies
+function spawnEnemies(count) {
+ for (var i = 0; i < count; i++) {
+ var enemy = new Enemy();
+ enemy.x = Math.random() * 1800 + 100;
+ enemy.y = Math.random() * 400 + 300;
+ enemies.push(enemy);
+ game.addChild(enemy);
+ }
+}
+spawnEnemies(3);
+// Touch handlers
+spiderButton.down = function (x, y, obj) {
+ // Shoot web projectile
+ var webShot = new WebProjectile();
+ webShot.x = spiderMan.x;
+ webShot.y = spiderMan.y;
+ // Find nearest enemy
+ var nearestEnemy = null;
+ var nearestDistance = Infinity;
+ for (var i = 0; i < enemies.length; i++) {
+ var enemy = enemies[i];
+ var dx = enemy.x - spiderMan.x;
+ var dy = enemy.y - spiderMan.y;
+ var distance = Math.sqrt(dx * dx + dy * dy);
+ if (distance < nearestDistance) {
+ nearestDistance = distance;
+ nearestEnemy = enemy;
+ }
+ }
+ if (nearestEnemy) {
+ var dx = nearestEnemy.x - spiderMan.x;
+ var dy = nearestEnemy.y - spiderMan.y;
+ var distance = Math.sqrt(dx * dx + dy * dy);
+ webShot.velocityX = dx / distance * webShot.speed;
+ webShot.velocityY = dy / distance * webShot.speed;
+ } else {
+ webShot.velocityY = -webShot.speed;
+ }
+ webProjectiles.push(webShot);
+ game.addChild(webShot);
+ LK.getSound('webShoot').play();
+};
+game.down = function (x, y, obj) {
+ // Check if tapping on an attachment point to start swinging
+ for (var i = 0; i < attachPoints.length; i++) {
+ var point = attachPoints[i];
+ var dx = x - point.x;
+ var dy = y - point.y;
+ var distance = Math.sqrt(dx * dx + dy * dy);
+ if (distance < 100) {
+ spiderMan.startSwinging(point);
+ break;
+ }
+ }
+};
+game.up = function (x, y, obj) {
+ // Stop swinging on release
+ spiderMan.stopSwinging();
+};
+// Main game loop
+game.update = function () {
+ // Update health display
+ healthBar.setText('Health: ' + spiderMan.health);
+ // Handle web projectile collisions
+ for (var i = webProjectiles.length - 1; i >= 0; i--) {
+ var web = webProjectiles[i];
+ var webHit = false;
+ for (var j = enemies.length - 1; j >= 0; j--) {
+ var enemy = enemies[j];
+ if (web.intersects(enemy)) {
+ if (enemy.takeDamage(web.damage)) {
+ // Enemy died
+ enemies.splice(j, 1);
+ enemiesDefeated++;
+ LK.setScore(LK.getScore() + 100);
+ }
+ web.destroy();
+ webProjectiles.splice(i, 1);
+ webHit = true;
+ break;
+ }
+ }
+ }
+ // Handle enemy bullet collisions
+ for (var i = enemyBullets.length - 1; i >= 0; i--) {
+ var bullet = enemyBullets[i];
+ if (bullet.intersects(spiderMan)) {
+ spiderMan.takeDamage(bullet.damage);
+ bullet.destroy();
+ enemyBullets.splice(i, 1);
+ }
+ }
+ // Remove destroyed objects from arrays
+ webProjectiles = webProjectiles.filter(function (web) {
+ return web.parent !== null;
+ });
+ enemyBullets = enemyBullets.filter(function (bullet) {
+ return bullet.parent !== null;
+ });
+ // Spawn new wave when all enemies defeated
+ if (enemies.length === 0) {
+ spawnTimer++;
+ if (spawnTimer > 180) {
+ // 3 seconds
+ waveNumber++;
+ spawnEnemies(Math.min(2 + waveNumber, 6));
+ spawnTimer = 0;
+ }
+ }
+ // Win condition
+ if (enemiesDefeated >= 20) {
+ LK.showYouWin();
+ }
+};
\ No newline at end of file