User prompt
Türkçede adı Çöp Adam olsun
User prompt
Henry Stickmin adını Stickman ile değiştir
User prompt
oyunun içinde lunge button yok
User prompt
oyuna bir buton koy bu buton dil butonu basınca dil değişisin sadce 2 dil olsun türkçe ingilizce ↪💡 Consider importing and using the following plugins: @upit/storage.v1
User prompt
oyundaki butoları büyüt am a yazıları aynı kalsın
User prompt
hayır bulamaca değil henry stickmin in buradan çıkması için seçimler yapması lazım
Code edit (1 edits merged)
Please save this source code
User prompt
Henry Stickmin: Backrooms Escape
Initial prompt
Henry Stickmin : The Backrooms
/**** * Plugins ****/ var tween = LK.import("@upit/tween.v1"); /**** * Classes ****/ var Entity = Container.expand(function () { var self = Container.call(this); var entityGraphics = self.attachAsset('entity', { anchorX: 0.5, anchorY: 0.5 }); self.speed = 2; self.direction = Math.random() * Math.PI * 2; self.detectionRange = 200; self.chaseSpeed = 3; self.isChasing = false; self.lastDirectionChange = 0; self.update = function () { if (LK.ticks - self.lastDirectionChange > 120) { self.direction += (Math.random() - 0.5) * 0.5; self.lastDirectionChange = LK.ticks; } var distanceToHenry = Math.sqrt(Math.pow(henry.x - self.x, 2) + Math.pow(henry.y - self.y, 2)); if (distanceToHenry < self.detectionRange) { self.isChasing = true; var angleToHenry = Math.atan2(henry.y - self.y, henry.x - self.x); self.direction = angleToHenry; } else if (distanceToHenry > self.detectionRange * 2) { self.isChasing = false; } var currentSpeed = self.isChasing ? self.chaseSpeed : self.speed; var newX = self.x + Math.cos(self.direction) * currentSpeed; var newY = self.y + Math.sin(self.direction) * currentSpeed; if (isValidPosition(newX, newY)) { self.x = newX; self.y = newY; } else { self.direction += Math.PI; } if (self.isChasing && Math.random() < 0.02) { LK.getSound('entity_sound').play(); } }; return self; }); var Henry = Container.expand(function () { var self = Container.call(this); var body = self.attachAsset('henry', { anchorX: 0.5, anchorY: 1.0 }); self.speed = 4; self.isMoving = false; self.targetX = 0; self.targetY = 0; self.sanity = 100; self.moveTo = function (x, y) { if (self.isMoving) return; var gridX = Math.floor(x / GRID_SIZE) * GRID_SIZE + GRID_SIZE / 2; var gridY = Math.floor(y / GRID_SIZE) * GRID_SIZE + GRID_SIZE; if (!isValidPosition(gridX, gridY)) return; self.targetX = gridX; self.targetY = gridY; self.isMoving = true; LK.getSound('footstep').play(); var distance = Math.sqrt(Math.pow(gridX - self.x, 2) + Math.pow(gridY - self.y, 2)); var duration = distance / self.speed * 16.67; tween(self, { x: gridX, y: gridY }, { duration: duration, easing: tween.linear, onFinish: function onFinish() { self.isMoving = false; checkCollisions(); } }); }; self.decreaseSanity = function (amount) { self.sanity = Math.max(0, self.sanity - amount); if (self.sanity <= 0) { LK.showGameOver(); } }; return self; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0xFFFF99 }); /**** * Game Code ****/ var GRID_SIZE = 100; var ROOM_WIDTH = 20; var ROOM_HEIGHT = 27; var levelLayout = [[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1], [1, 0, 1, 0, 1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 1, 0, 1, 1, 0, 1], [1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1], [1, 0, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1], [1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1], [1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1], [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1], [1, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1], [1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1], [1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 1], [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1], [1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1], [1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1], [1, 1, 1, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1], [1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1], [1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1], [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1], [1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 1], [1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1], [1, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1], [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1], [1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1], [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1], [1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1], [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]]; var walls = []; var floors = []; var entities = []; var henry; var exitDoor; var level = 1; var sanityText = new Text2('Sanity: 100', { size: 80, fill: 0x000000 }); sanityText.anchor.set(1, 0); LK.gui.topRight.addChild(sanityText); var levelText = new Text2('Level: 1', { size: 80, fill: 0x000000 }); levelText.anchor.set(0, 0); LK.gui.top.addChild(levelText); function initializeLevel() { walls = []; floors = []; entities = []; for (var y = 0; y < ROOM_HEIGHT; y++) { for (var x = 0; x < ROOM_WIDTH; x++) { var cellType = levelLayout[y][x]; var posX = x * GRID_SIZE + GRID_SIZE / 2; var posY = y * GRID_SIZE + GRID_SIZE / 2; if (cellType === 1) { var wall = LK.getAsset('wall', { x: posX, y: posY, anchorX: 0.5, anchorY: 0.5 }); walls.push(wall); game.addChild(wall); } else { var floor = LK.getAsset('floor', { x: posX, y: posY, anchorX: 0.5, anchorY: 0.5 }); floors.push(floor); game.addChild(floor); if (cellType === 2) { exitDoor = LK.getAsset('exit', { x: posX, y: posY + GRID_SIZE / 2, anchorX: 0.5, anchorY: 1.0 }); game.addChild(exitDoor); } } } } henry = game.addChild(new Henry()); henry.x = 1.5 * GRID_SIZE; henry.y = 1.5 * GRID_SIZE + GRID_SIZE / 2; for (var i = 0; i < Math.min(3 + level, 8); i++) { var entity = game.addChild(new Entity()); var validPos = false; var attempts = 0; while (!validPos && attempts < 50) { var randomX = (2 + Math.floor(Math.random() * (ROOM_WIDTH - 4))) * GRID_SIZE + GRID_SIZE / 2; var randomY = (2 + Math.floor(Math.random() * (ROOM_HEIGHT - 4))) * GRID_SIZE + GRID_SIZE / 2; if (isValidPosition(randomX, randomY)) { var distanceToHenry = Math.sqrt(Math.pow(henry.x - randomX, 2) + Math.pow(henry.y - randomY, 2)); if (distanceToHenry > 300) { entity.x = randomX; entity.y = randomY; entities.push(entity); validPos = true; } } attempts++; } if (!validPos) { entity.destroy(); } } } function isValidPosition(x, y) { var gridX = Math.floor(x / GRID_SIZE); var gridY = Math.floor(y / GRID_SIZE); if (gridX < 0 || gridX >= ROOM_WIDTH || gridY < 0 || gridY >= ROOM_HEIGHT) { return false; } return levelLayout[gridY][gridX] !== 1; } function checkCollisions() { for (var i = 0; i < entities.length; i++) { var entity = entities[i]; var distance = Math.sqrt(Math.pow(henry.x - entity.x, 2) + Math.pow(henry.y - entity.y, 2)); if (distance < 50) { henry.decreaseSanity(20); LK.effects.flashScreen(0xFF0000, 500); break; } } if (exitDoor) { var exitDistance = Math.sqrt(Math.pow(henry.x - exitDoor.x, 2) + Math.pow(henry.y - exitDoor.y, 2)); if (exitDistance < 60) { LK.getSound('exit_found').play(); level++; levelText.setText('Level: ' + level); henry.sanity = Math.min(100, henry.sanity + 10); if (level >= 10) { LK.showYouWin(); } else { for (var j = 0; j < entities.length; j++) { entities[j].destroy(); } if (exitDoor) { exitDoor.destroy(); } initializeLevel(); } } } } initializeLevel(); game.down = function (x, y, obj) { henry.moveTo(x, y); }; game.update = function () { sanityText.setText('Sanity: ' + henry.sanity); if (LK.ticks % 300 === 0 && henry.sanity > 0) { henry.decreaseSanity(1); } for (var i = 0; i < entities.length; i++) { entities[i].update(); } };
===================================================================
--- original.js
+++ change.js
@@ -1,6 +1,240 @@
-/****
+/****
+* Plugins
+****/
+var tween = LK.import("@upit/tween.v1");
+
+/****
+* Classes
+****/
+var Entity = Container.expand(function () {
+ var self = Container.call(this);
+ var entityGraphics = self.attachAsset('entity', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ self.speed = 2;
+ self.direction = Math.random() * Math.PI * 2;
+ self.detectionRange = 200;
+ self.chaseSpeed = 3;
+ self.isChasing = false;
+ self.lastDirectionChange = 0;
+ self.update = function () {
+ if (LK.ticks - self.lastDirectionChange > 120) {
+ self.direction += (Math.random() - 0.5) * 0.5;
+ self.lastDirectionChange = LK.ticks;
+ }
+ var distanceToHenry = Math.sqrt(Math.pow(henry.x - self.x, 2) + Math.pow(henry.y - self.y, 2));
+ if (distanceToHenry < self.detectionRange) {
+ self.isChasing = true;
+ var angleToHenry = Math.atan2(henry.y - self.y, henry.x - self.x);
+ self.direction = angleToHenry;
+ } else if (distanceToHenry > self.detectionRange * 2) {
+ self.isChasing = false;
+ }
+ var currentSpeed = self.isChasing ? self.chaseSpeed : self.speed;
+ var newX = self.x + Math.cos(self.direction) * currentSpeed;
+ var newY = self.y + Math.sin(self.direction) * currentSpeed;
+ if (isValidPosition(newX, newY)) {
+ self.x = newX;
+ self.y = newY;
+ } else {
+ self.direction += Math.PI;
+ }
+ if (self.isChasing && Math.random() < 0.02) {
+ LK.getSound('entity_sound').play();
+ }
+ };
+ return self;
+});
+var Henry = Container.expand(function () {
+ var self = Container.call(this);
+ var body = self.attachAsset('henry', {
+ anchorX: 0.5,
+ anchorY: 1.0
+ });
+ self.speed = 4;
+ self.isMoving = false;
+ self.targetX = 0;
+ self.targetY = 0;
+ self.sanity = 100;
+ self.moveTo = function (x, y) {
+ if (self.isMoving) return;
+ var gridX = Math.floor(x / GRID_SIZE) * GRID_SIZE + GRID_SIZE / 2;
+ var gridY = Math.floor(y / GRID_SIZE) * GRID_SIZE + GRID_SIZE;
+ if (!isValidPosition(gridX, gridY)) return;
+ self.targetX = gridX;
+ self.targetY = gridY;
+ self.isMoving = true;
+ LK.getSound('footstep').play();
+ var distance = Math.sqrt(Math.pow(gridX - self.x, 2) + Math.pow(gridY - self.y, 2));
+ var duration = distance / self.speed * 16.67;
+ tween(self, {
+ x: gridX,
+ y: gridY
+ }, {
+ duration: duration,
+ easing: tween.linear,
+ onFinish: function onFinish() {
+ self.isMoving = false;
+ checkCollisions();
+ }
+ });
+ };
+ self.decreaseSanity = function (amount) {
+ self.sanity = Math.max(0, self.sanity - amount);
+ if (self.sanity <= 0) {
+ LK.showGameOver();
+ }
+ };
+ return self;
+});
+
+/****
* Initialize Game
-****/
+****/
var game = new LK.Game({
- backgroundColor: 0x000000
-});
\ No newline at end of file
+ backgroundColor: 0xFFFF99
+});
+
+/****
+* Game Code
+****/
+var GRID_SIZE = 100;
+var ROOM_WIDTH = 20;
+var ROOM_HEIGHT = 27;
+var levelLayout = [[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1], [1, 0, 1, 0, 1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 1, 0, 1, 1, 0, 1], [1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1], [1, 0, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1], [1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1], [1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1], [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1], [1, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1], [1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1], [1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 1], [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1], [1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1], [1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1], [1, 1, 1, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1], [1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1], [1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1], [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1], [1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 1], [1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1], [1, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1], [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1], [1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1], [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1], [1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1], [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]];
+var walls = [];
+var floors = [];
+var entities = [];
+var henry;
+var exitDoor;
+var level = 1;
+var sanityText = new Text2('Sanity: 100', {
+ size: 80,
+ fill: 0x000000
+});
+sanityText.anchor.set(1, 0);
+LK.gui.topRight.addChild(sanityText);
+var levelText = new Text2('Level: 1', {
+ size: 80,
+ fill: 0x000000
+});
+levelText.anchor.set(0, 0);
+LK.gui.top.addChild(levelText);
+function initializeLevel() {
+ walls = [];
+ floors = [];
+ entities = [];
+ for (var y = 0; y < ROOM_HEIGHT; y++) {
+ for (var x = 0; x < ROOM_WIDTH; x++) {
+ var cellType = levelLayout[y][x];
+ var posX = x * GRID_SIZE + GRID_SIZE / 2;
+ var posY = y * GRID_SIZE + GRID_SIZE / 2;
+ if (cellType === 1) {
+ var wall = LK.getAsset('wall', {
+ x: posX,
+ y: posY,
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ walls.push(wall);
+ game.addChild(wall);
+ } else {
+ var floor = LK.getAsset('floor', {
+ x: posX,
+ y: posY,
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ floors.push(floor);
+ game.addChild(floor);
+ if (cellType === 2) {
+ exitDoor = LK.getAsset('exit', {
+ x: posX,
+ y: posY + GRID_SIZE / 2,
+ anchorX: 0.5,
+ anchorY: 1.0
+ });
+ game.addChild(exitDoor);
+ }
+ }
+ }
+ }
+ henry = game.addChild(new Henry());
+ henry.x = 1.5 * GRID_SIZE;
+ henry.y = 1.5 * GRID_SIZE + GRID_SIZE / 2;
+ for (var i = 0; i < Math.min(3 + level, 8); i++) {
+ var entity = game.addChild(new Entity());
+ var validPos = false;
+ var attempts = 0;
+ while (!validPos && attempts < 50) {
+ var randomX = (2 + Math.floor(Math.random() * (ROOM_WIDTH - 4))) * GRID_SIZE + GRID_SIZE / 2;
+ var randomY = (2 + Math.floor(Math.random() * (ROOM_HEIGHT - 4))) * GRID_SIZE + GRID_SIZE / 2;
+ if (isValidPosition(randomX, randomY)) {
+ var distanceToHenry = Math.sqrt(Math.pow(henry.x - randomX, 2) + Math.pow(henry.y - randomY, 2));
+ if (distanceToHenry > 300) {
+ entity.x = randomX;
+ entity.y = randomY;
+ entities.push(entity);
+ validPos = true;
+ }
+ }
+ attempts++;
+ }
+ if (!validPos) {
+ entity.destroy();
+ }
+ }
+}
+function isValidPosition(x, y) {
+ var gridX = Math.floor(x / GRID_SIZE);
+ var gridY = Math.floor(y / GRID_SIZE);
+ if (gridX < 0 || gridX >= ROOM_WIDTH || gridY < 0 || gridY >= ROOM_HEIGHT) {
+ return false;
+ }
+ return levelLayout[gridY][gridX] !== 1;
+}
+function checkCollisions() {
+ for (var i = 0; i < entities.length; i++) {
+ var entity = entities[i];
+ var distance = Math.sqrt(Math.pow(henry.x - entity.x, 2) + Math.pow(henry.y - entity.y, 2));
+ if (distance < 50) {
+ henry.decreaseSanity(20);
+ LK.effects.flashScreen(0xFF0000, 500);
+ break;
+ }
+ }
+ if (exitDoor) {
+ var exitDistance = Math.sqrt(Math.pow(henry.x - exitDoor.x, 2) + Math.pow(henry.y - exitDoor.y, 2));
+ if (exitDistance < 60) {
+ LK.getSound('exit_found').play();
+ level++;
+ levelText.setText('Level: ' + level);
+ henry.sanity = Math.min(100, henry.sanity + 10);
+ if (level >= 10) {
+ LK.showYouWin();
+ } else {
+ for (var j = 0; j < entities.length; j++) {
+ entities[j].destroy();
+ }
+ if (exitDoor) {
+ exitDoor.destroy();
+ }
+ initializeLevel();
+ }
+ }
+ }
+}
+initializeLevel();
+game.down = function (x, y, obj) {
+ henry.moveTo(x, y);
+};
+game.update = function () {
+ sanityText.setText('Sanity: ' + henry.sanity);
+ if (LK.ticks % 300 === 0 && henry.sanity > 0) {
+ henry.decreaseSanity(1);
+ }
+ for (var i = 0; i < entities.length; i++) {
+ entities[i].update();
+ }
+};
\ No newline at end of file