User prompt
Kontrol daha kolay olsun
Code edit (1 edits merged)
Please save this source code
User prompt
Rubik's Cube Master
Initial prompt
Rubik küp oyunu yapalım 200 seviye olsun her seviyede oyun biraz daha zorlaşsın küpler rubik küplerle aynı renk olsun arada ip ucu versin oyun üç dakika bir sonra yavaş yavaş uzasın süre giderek yok olsun ip ucu
/**** * Plugins ****/ var tween = LK.import("@upit/tween.v1"); var storage = LK.import("@upit/storage.v1"); /**** * Classes ****/ var CubeFace = Container.expand(function (color) { var self = Container.call(this); var face = self.attachAsset('cubeFace', { anchorX: 0.5, anchorY: 0.5 }); self.currentColor = color || 0xffffff; face.tint = self.currentColor; self.setColor = function (newColor) { self.currentColor = newColor; face.tint = newColor; }; self.getColor = function () { return self.currentColor; }; return self; }); var GameButton = Container.expand(function (text, color) { var self = Container.call(this); var button = self.attachAsset('scrambleButton', { anchorX: 0.5, anchorY: 0.5 }); button.tint = color || 0x3498db; var buttonText = new Text2(text, { size: 32, fill: 0xFFFFFF }); buttonText.anchor.set(0.5, 0.5); self.addChild(buttonText); self.down = function (x, y, obj) { tween(self, { scaleX: 0.9, scaleY: 0.9 }, { duration: 100 }); }; self.up = function (x, y, obj) { tween(self, { scaleX: 1, scaleY: 1 }, { duration: 100 }); if (self.onPress) { self.onPress(); } }; return self; }); var RubiksCube = Container.expand(function () { var self = Container.call(this); // Rubik's cube colors self.colors = { white: 0xffffff, red: 0xff0000, blue: 0x0000ff, orange: 0xff8c00, green: 0x00ff00, yellow: 0xffff00 }; self.colorArray = [self.colors.white, self.colors.red, self.colors.blue, self.colors.orange, self.colors.green, self.colors.yellow]; // Create a 3x3 grid of faces self.faces = []; self.targetPattern = []; function initializeCube() { for (var i = 0; i < 9; i++) { var face = new CubeFace(self.colors.white); var row = Math.floor(i / 3); var col = i % 3; face.x = (col - 1) * 160; face.y = (row - 1) * 160; self.faces.push(face); self.addChild(face); } } self.scramble = function () { for (var i = 0; i < self.faces.length; i++) { var randomColorIndex = Math.floor(Math.random() * self.colorArray.length); self.faces[i].setColor(self.colorArray[randomColorIndex]); } }; self.generateTarget = function () { self.targetPattern = []; for (var i = 0; i < 9; i++) { var randomColorIndex = Math.floor(Math.random() * self.colorArray.length); self.targetPattern.push(self.colorArray[randomColorIndex]); } }; self.checkSolution = function () { for (var i = 0; i < self.faces.length; i++) { if (self.faces[i].getColor() !== self.targetPattern[i]) { return false; } } return true; }; self.setToTarget = function () { for (var i = 0; i < self.faces.length; i++) { self.faces[i].setColor(self.targetPattern[i]); } }; self.rotateFace = function (faceIndex) { if (faceIndex >= 0 && faceIndex < self.faces.length) { var currentColorIndex = self.colorArray.indexOf(self.faces[faceIndex].getColor()); var nextColorIndex = (currentColorIndex + 1) % self.colorArray.length; self.faces[faceIndex].setColor(self.colorArray[nextColorIndex]); // Animate rotation tween(self.faces[faceIndex], { rotation: self.faces[faceIndex].rotation + Math.PI * 0.5 }, { duration: 200, easing: tween.easeOut }); LK.getSound('move').play(); } }; initializeCube(); return self; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x34495e }); /**** * Game Code ****/ // Game state variables var currentLevel = storage.currentLevel || 1; var maxLevel = 200; var timeLimit = 180; // 3 minutes in seconds var timeRemaining = timeLimit; var gameActive = false; var hintsAvailable = Math.max(0, 10 - Math.floor(currentLevel / 20)); var movesCount = 0; var gameTimer = null; // UI Elements var levelText = new Text2('Level: 1', { size: 48, fill: 0xFFFFFF }); levelText.anchor.set(0.5, 0); LK.gui.top.addChild(levelText); var timerText = new Text2('3:00', { size: 40, fill: 0xFFFFFF }); timerText.anchor.set(1, 0); timerText.x = -50; timerText.y = 20; LK.gui.topRight.addChild(timerText); var movesText = new Text2('Moves: 0', { size: 36, fill: 0xFFFFFF }); movesText.anchor.set(0, 0); movesText.x = 120; movesText.y = 20; LK.gui.topLeft.addChild(movesText); var hintsText = new Text2('Hints: ' + hintsAvailable, { size: 32, fill: 0xF39C12 }); hintsText.anchor.set(0.5, 1); hintsText.y = -20; LK.gui.bottom.addChild(hintsText); // Game objects var cube = game.addChild(new RubiksCube()); cube.x = 1024; cube.y = 1200; var targetCube = game.addChild(new RubiksCube()); targetCube.x = 1024; targetCube.y = 600; targetCube.alpha = 0.7; // Buttons var scrambleButton = game.addChild(new GameButton('Scramble', 0x3498db)); scrambleButton.x = 400; scrambleButton.y = 2200; var solveButton = game.addChild(new GameButton('Solve', 0x27ae60)); solveButton.x = 800; solveButton.y = 2200; var hintButton = game.addChild(new GameButton('Hint', 0xf39c12)); hintButton.x = 1200; hintButton.y = 2200; var nextLevelButton = game.addChild(new GameButton('Next Level', 0xe74c3c)); nextLevelButton.x = 1600; nextLevelButton.y = 2200; // Target pattern label var targetLabel = new Text2('Target Pattern:', { size: 36, fill: 0xFFFFFF }); targetLabel.anchor.set(0.5, 0.5); targetLabel.x = 1024; targetLabel.y = 450; game.addChild(targetLabel); // Functions function startLevel() { timeLimit = Math.min(300, 180 + Math.floor(currentLevel / 10) * 30); // Progressive time increase timeRemaining = timeLimit; gameActive = true; movesCount = 0; hintsAvailable = Math.max(0, 10 - Math.floor(currentLevel / 20)); levelText.setText('Level: ' + currentLevel); movesText.setText('Moves: 0'); hintsText.setText('Hints: ' + hintsAvailable); cube.generateTarget(); targetCube.targetPattern = cube.targetPattern.slice(); targetCube.setToTarget(); cube.scramble(); // Start timer if (gameTimer) { LK.clearInterval(gameTimer); } gameTimer = LK.setInterval(updateTimer, 1000); } function updateTimer() { if (!gameActive) return; timeRemaining--; var minutes = Math.floor(timeRemaining / 60); var seconds = timeRemaining % 60; var timeString = minutes + ':' + (seconds < 10 ? '0' : '') + seconds; timerText.setText(timeString); if (timeRemaining <= 0) { gameOver(); } } function gameOver() { gameActive = false; if (gameTimer) { LK.clearInterval(gameTimer); gameTimer = null; } LK.showGameOver(); } function levelComplete() { gameActive = false; if (gameTimer) { LK.clearInterval(gameTimer); gameTimer = null; } LK.getSound('levelComplete').play(); LK.effects.flashScreen(0x27ae60, 1000); currentLevel++; storage.currentLevel = currentLevel; if (currentLevel > maxLevel) { LK.showYouWin(); } else { LK.setTimeout(function () { startLevel(); }, 2000); } } function giveHint() { if (hintsAvailable <= 0 || !gameActive) return; hintsAvailable--; hintsText.setText('Hints: ' + hintsAvailable); // Find first incorrect face and highlight it for (var i = 0; i < cube.faces.length; i++) { if (cube.faces[i].getColor() !== cube.targetPattern[i]) { LK.effects.flashObject(cube.faces[i], 0xffff00, 1000); break; } } } // Button handlers scrambleButton.onPress = function () { if (gameActive) { cube.scramble(); movesCount++; movesText.setText('Moves: ' + movesCount); } }; solveButton.onPress = function () { if (gameActive) { cube.setToTarget(); levelComplete(); } }; hintButton.onPress = function () { giveHint(); }; nextLevelButton.onPress = function () { if (!gameActive) { startLevel(); } }; // Cube face interaction game.down = function (x, y, obj) { if (!gameActive) return; for (var i = 0; i < cube.faces.length; i++) { var face = cube.faces[i]; var localPos = face.toLocal({ x: x, y: y }); if (Math.abs(localPos.x) < 75 && Math.abs(localPos.y) < 75) { cube.rotateFace(i); movesCount++; movesText.setText('Moves: ' + movesCount); // Check if level is complete if (cube.checkSolution()) { levelComplete(); } break; } } }; // Start first level startLevel(); // Play background music LK.playMusic('bgmusic');
===================================================================
--- original.js
+++ change.js
@@ -1,6 +1,326 @@
-/****
+/****
+* Plugins
+****/
+var tween = LK.import("@upit/tween.v1");
+var storage = LK.import("@upit/storage.v1");
+
+/****
+* Classes
+****/
+var CubeFace = Container.expand(function (color) {
+ var self = Container.call(this);
+ var face = self.attachAsset('cubeFace', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ self.currentColor = color || 0xffffff;
+ face.tint = self.currentColor;
+ self.setColor = function (newColor) {
+ self.currentColor = newColor;
+ face.tint = newColor;
+ };
+ self.getColor = function () {
+ return self.currentColor;
+ };
+ return self;
+});
+var GameButton = Container.expand(function (text, color) {
+ var self = Container.call(this);
+ var button = self.attachAsset('scrambleButton', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ button.tint = color || 0x3498db;
+ var buttonText = new Text2(text, {
+ size: 32,
+ fill: 0xFFFFFF
+ });
+ buttonText.anchor.set(0.5, 0.5);
+ self.addChild(buttonText);
+ self.down = function (x, y, obj) {
+ tween(self, {
+ scaleX: 0.9,
+ scaleY: 0.9
+ }, {
+ duration: 100
+ });
+ };
+ self.up = function (x, y, obj) {
+ tween(self, {
+ scaleX: 1,
+ scaleY: 1
+ }, {
+ duration: 100
+ });
+ if (self.onPress) {
+ self.onPress();
+ }
+ };
+ return self;
+});
+var RubiksCube = Container.expand(function () {
+ var self = Container.call(this);
+ // Rubik's cube colors
+ self.colors = {
+ white: 0xffffff,
+ red: 0xff0000,
+ blue: 0x0000ff,
+ orange: 0xff8c00,
+ green: 0x00ff00,
+ yellow: 0xffff00
+ };
+ self.colorArray = [self.colors.white, self.colors.red, self.colors.blue, self.colors.orange, self.colors.green, self.colors.yellow];
+ // Create a 3x3 grid of faces
+ self.faces = [];
+ self.targetPattern = [];
+ function initializeCube() {
+ for (var i = 0; i < 9; i++) {
+ var face = new CubeFace(self.colors.white);
+ var row = Math.floor(i / 3);
+ var col = i % 3;
+ face.x = (col - 1) * 160;
+ face.y = (row - 1) * 160;
+ self.faces.push(face);
+ self.addChild(face);
+ }
+ }
+ self.scramble = function () {
+ for (var i = 0; i < self.faces.length; i++) {
+ var randomColorIndex = Math.floor(Math.random() * self.colorArray.length);
+ self.faces[i].setColor(self.colorArray[randomColorIndex]);
+ }
+ };
+ self.generateTarget = function () {
+ self.targetPattern = [];
+ for (var i = 0; i < 9; i++) {
+ var randomColorIndex = Math.floor(Math.random() * self.colorArray.length);
+ self.targetPattern.push(self.colorArray[randomColorIndex]);
+ }
+ };
+ self.checkSolution = function () {
+ for (var i = 0; i < self.faces.length; i++) {
+ if (self.faces[i].getColor() !== self.targetPattern[i]) {
+ return false;
+ }
+ }
+ return true;
+ };
+ self.setToTarget = function () {
+ for (var i = 0; i < self.faces.length; i++) {
+ self.faces[i].setColor(self.targetPattern[i]);
+ }
+ };
+ self.rotateFace = function (faceIndex) {
+ if (faceIndex >= 0 && faceIndex < self.faces.length) {
+ var currentColorIndex = self.colorArray.indexOf(self.faces[faceIndex].getColor());
+ var nextColorIndex = (currentColorIndex + 1) % self.colorArray.length;
+ self.faces[faceIndex].setColor(self.colorArray[nextColorIndex]);
+ // Animate rotation
+ tween(self.faces[faceIndex], {
+ rotation: self.faces[faceIndex].rotation + Math.PI * 0.5
+ }, {
+ duration: 200,
+ easing: tween.easeOut
+ });
+ LK.getSound('move').play();
+ }
+ };
+ initializeCube();
+ return self;
+});
+
+/****
* Initialize Game
-****/
+****/
var game = new LK.Game({
- backgroundColor: 0x000000
-});
\ No newline at end of file
+ backgroundColor: 0x34495e
+});
+
+/****
+* Game Code
+****/
+// Game state variables
+var currentLevel = storage.currentLevel || 1;
+var maxLevel = 200;
+var timeLimit = 180; // 3 minutes in seconds
+var timeRemaining = timeLimit;
+var gameActive = false;
+var hintsAvailable = Math.max(0, 10 - Math.floor(currentLevel / 20));
+var movesCount = 0;
+var gameTimer = null;
+// UI Elements
+var levelText = new Text2('Level: 1', {
+ size: 48,
+ fill: 0xFFFFFF
+});
+levelText.anchor.set(0.5, 0);
+LK.gui.top.addChild(levelText);
+var timerText = new Text2('3:00', {
+ size: 40,
+ fill: 0xFFFFFF
+});
+timerText.anchor.set(1, 0);
+timerText.x = -50;
+timerText.y = 20;
+LK.gui.topRight.addChild(timerText);
+var movesText = new Text2('Moves: 0', {
+ size: 36,
+ fill: 0xFFFFFF
+});
+movesText.anchor.set(0, 0);
+movesText.x = 120;
+movesText.y = 20;
+LK.gui.topLeft.addChild(movesText);
+var hintsText = new Text2('Hints: ' + hintsAvailable, {
+ size: 32,
+ fill: 0xF39C12
+});
+hintsText.anchor.set(0.5, 1);
+hintsText.y = -20;
+LK.gui.bottom.addChild(hintsText);
+// Game objects
+var cube = game.addChild(new RubiksCube());
+cube.x = 1024;
+cube.y = 1200;
+var targetCube = game.addChild(new RubiksCube());
+targetCube.x = 1024;
+targetCube.y = 600;
+targetCube.alpha = 0.7;
+// Buttons
+var scrambleButton = game.addChild(new GameButton('Scramble', 0x3498db));
+scrambleButton.x = 400;
+scrambleButton.y = 2200;
+var solveButton = game.addChild(new GameButton('Solve', 0x27ae60));
+solveButton.x = 800;
+solveButton.y = 2200;
+var hintButton = game.addChild(new GameButton('Hint', 0xf39c12));
+hintButton.x = 1200;
+hintButton.y = 2200;
+var nextLevelButton = game.addChild(new GameButton('Next Level', 0xe74c3c));
+nextLevelButton.x = 1600;
+nextLevelButton.y = 2200;
+// Target pattern label
+var targetLabel = new Text2('Target Pattern:', {
+ size: 36,
+ fill: 0xFFFFFF
+});
+targetLabel.anchor.set(0.5, 0.5);
+targetLabel.x = 1024;
+targetLabel.y = 450;
+game.addChild(targetLabel);
+// Functions
+function startLevel() {
+ timeLimit = Math.min(300, 180 + Math.floor(currentLevel / 10) * 30); // Progressive time increase
+ timeRemaining = timeLimit;
+ gameActive = true;
+ movesCount = 0;
+ hintsAvailable = Math.max(0, 10 - Math.floor(currentLevel / 20));
+ levelText.setText('Level: ' + currentLevel);
+ movesText.setText('Moves: 0');
+ hintsText.setText('Hints: ' + hintsAvailable);
+ cube.generateTarget();
+ targetCube.targetPattern = cube.targetPattern.slice();
+ targetCube.setToTarget();
+ cube.scramble();
+ // Start timer
+ if (gameTimer) {
+ LK.clearInterval(gameTimer);
+ }
+ gameTimer = LK.setInterval(updateTimer, 1000);
+}
+function updateTimer() {
+ if (!gameActive) return;
+ timeRemaining--;
+ var minutes = Math.floor(timeRemaining / 60);
+ var seconds = timeRemaining % 60;
+ var timeString = minutes + ':' + (seconds < 10 ? '0' : '') + seconds;
+ timerText.setText(timeString);
+ if (timeRemaining <= 0) {
+ gameOver();
+ }
+}
+function gameOver() {
+ gameActive = false;
+ if (gameTimer) {
+ LK.clearInterval(gameTimer);
+ gameTimer = null;
+ }
+ LK.showGameOver();
+}
+function levelComplete() {
+ gameActive = false;
+ if (gameTimer) {
+ LK.clearInterval(gameTimer);
+ gameTimer = null;
+ }
+ LK.getSound('levelComplete').play();
+ LK.effects.flashScreen(0x27ae60, 1000);
+ currentLevel++;
+ storage.currentLevel = currentLevel;
+ if (currentLevel > maxLevel) {
+ LK.showYouWin();
+ } else {
+ LK.setTimeout(function () {
+ startLevel();
+ }, 2000);
+ }
+}
+function giveHint() {
+ if (hintsAvailable <= 0 || !gameActive) return;
+ hintsAvailable--;
+ hintsText.setText('Hints: ' + hintsAvailable);
+ // Find first incorrect face and highlight it
+ for (var i = 0; i < cube.faces.length; i++) {
+ if (cube.faces[i].getColor() !== cube.targetPattern[i]) {
+ LK.effects.flashObject(cube.faces[i], 0xffff00, 1000);
+ break;
+ }
+ }
+}
+// Button handlers
+scrambleButton.onPress = function () {
+ if (gameActive) {
+ cube.scramble();
+ movesCount++;
+ movesText.setText('Moves: ' + movesCount);
+ }
+};
+solveButton.onPress = function () {
+ if (gameActive) {
+ cube.setToTarget();
+ levelComplete();
+ }
+};
+hintButton.onPress = function () {
+ giveHint();
+};
+nextLevelButton.onPress = function () {
+ if (!gameActive) {
+ startLevel();
+ }
+};
+// Cube face interaction
+game.down = function (x, y, obj) {
+ if (!gameActive) return;
+ for (var i = 0; i < cube.faces.length; i++) {
+ var face = cube.faces[i];
+ var localPos = face.toLocal({
+ x: x,
+ y: y
+ });
+ if (Math.abs(localPos.x) < 75 && Math.abs(localPos.y) < 75) {
+ cube.rotateFace(i);
+ movesCount++;
+ movesText.setText('Moves: ' + movesCount);
+ // Check if level is complete
+ if (cube.checkSolution()) {
+ levelComplete();
+ }
+ break;
+ }
+ }
+};
+// Start first level
+startLevel();
+// Play background music
+LK.playMusic('bgmusic');
\ No newline at end of file