/**** * Plugins ****/ var facekit = LK.import("@upit/facekit.v1"); /**** * Classes ****/ //<Write imports for supported plugins here> // Chicken class to represent the player character var Chicken = Container.expand(function () { var self = Container.call(this); var chickenGraphics = self.attachAsset('chicken', { anchorX: 0.5, anchorY: 1 }); // Add a collision element inside the chicken var collisionElement = self.attachAsset('collisionElement', { anchorX: 0.5, anchorY: 0.5, width: chickenGraphics.width * 0.4, height: chickenGraphics.height * 0.2 }); collisionElement.alpha = 0; collisionElement.y = -30; self.speed = 5; self.jumpHeight = 400; self.isJumping = false; self.jumpVelocity = 0; self.update = function () { self.y += self.jumpVelocity; self.jumpVelocity += 0.5; // Gravity effect if (self.jumpVelocity > 30) { self.jumpVelocity = 30; } var targetPlatform = undefined; var isOnPlatform = platforms.some(function (platform) { if (collisionElement.intersects(platform)) { if (self.y - platform.y < 100) { targetPlatform = platform; return true; } ; } }); if (isOnPlatform && self.jumpVelocity > 0) { // Ground level self.y = targetPlatform.y + 70; self.isJumping = false; self.jumpVelocity = 0; // Reset jump velocity when hitting the ground } self.x = 2048 / 2; // Center the chicken horizontally }; self.jump = function (volume) { var isOnPlatform = platforms.some(function (platform) { if (collisionElement.intersects(platform)) { return self.y - platform.y < 100; } }); if (!self.isJumping && isOnPlatform) { self.isJumping = true; chicken.jumpVelocity = -30 * volume; // Set jump velocity based on volume self.update(); } }; }); // Platform class to represent moving platforms var Platform = Container.expand(function () { var self = Container.call(this); self.moveSpeed = -5; // Base move speed self.moveMultiplier = 1; // Default move multiplier var groundGraphics = self.attachAsset('ground', { anchorX: 0, anchorY: 0 }); self.width = groundGraphics.width; self.update = function () { if (chicken.isJumping) { self.moveMultiplier = 2; } else if (facekit.volume > 0.3) { self.moveMultiplier = facekit.volume * 3; } else { self.moveMultiplier = 0; } self.x += self.moveSpeed * self.moveMultiplier; // If the platform moves off screen to the left, reposition it to the right /*if (self.x < -self.width) { // Reposition the platform to the right with a random gap self.x += self.width + 2048 + Math.random() * 1000; }*/ }; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x000000 //Init game with black background }); /**** * Game Code ****/ // Initialize platforms function addPlatformAt(x, y) { var platform = new Platform(); platform.x = x; //i * 1900 + i * Math.random() * 1000; // Space platforms with gaps platform.y = y; //2200; // Ground level platforms.push(platform); game.addChild(platform); return platform; } var platforms = []; addPlatformAt(1000, 2200); addPlatformAt(3000, 2200); addPlatformAt(5000, 1800); addPlatformAt(7000, 2200); var lastPlatform = addPlatformAt(9000, 1500); var trophy = lastPlatform.attachAsset('trophy', { anchorX: 0.5, anchorY: 0.5, x: lastPlatform.width / 2, y: -100 }); // Initialize chicken //<Write imports for supported plugins here> var volumeText = new Text2('Volume: 0', { size: 100, fill: 0xFFFFFF }); volumeText.anchor.set(0.5, 0); LK.gui.top.addChild(volumeText); var chicken = game.addChild(new Chicken()); Platform.prototype.chicken = chicken; // Make chicken accessible in Platform class chicken.x = 2048 / 2; // Center the chicken horizontally chicken.y = 2200; // Start the chicken at the ground level // Function to handle microphone input function handleMicrophoneInput(volume) { // console.log(volume, volume > 0.9 && !chicken.isJumpin); if (volume > 0.80 && !chicken.isJumping) { chicken.jump(volume); } } // Update game logic game.update = function () { chicken.update(); platforms.forEach(function (platform) { platform.update(); }); // Remove excess platforms if more than 3 exist /*while (platforms.length > 3) { var excessPlatform = platforms.shift(); excessPlatform.destroy(); }*/ handleMicrophoneInput(facekit.volume); // Use facekit to get the volume volumeText.setText('Volume: ' + facekit.volume.toFixed(2)); // Check if the chicken has fallen off the screen if (chicken.y > 3000) { // End the game if the chicken has fallen off the screen LK.showGameOver(); } // Check if the chicken touches the trophy if (chicken.intersects(trophy)) { // End the game with a win if the chicken touches the trophy LK.showYouWin(); } };
===================================================================
--- original.js
+++ change.js
@@ -1,53 +1,167 @@
-/****
+/****
+* Plugins
+****/
+var facekit = LK.import("@upit/facekit.v1");
+
+/****
* Classes
-****/
-//<Assets used in the game will automatically appear here>
+****/
//<Write imports for supported plugins here>
-// Chicken class representing the player character
+// Chicken class to represent the player character
var Chicken = Container.expand(function () {
- var self = Container.call(this);
- var chickenGraphics = self.attachAsset('chicken', {
- anchorX: 0.5,
- anchorY: 0.5
- });
- self.speed = 5; // Default speed
- self.update = function () {
- // Update logic for chicken
- };
+ var self = Container.call(this);
+ var chickenGraphics = self.attachAsset('chicken', {
+ anchorX: 0.5,
+ anchorY: 1
+ });
+ // Add a collision element inside the chicken
+ var collisionElement = self.attachAsset('collisionElement', {
+ anchorX: 0.5,
+ anchorY: 0.5,
+ width: chickenGraphics.width * 0.4,
+ height: chickenGraphics.height * 0.2
+ });
+ collisionElement.alpha = 0;
+ collisionElement.y = -30;
+ self.speed = 5;
+ self.jumpHeight = 400;
+ self.isJumping = false;
+ self.jumpVelocity = 0;
+ self.update = function () {
+ self.y += self.jumpVelocity;
+ self.jumpVelocity += 0.5; // Gravity effect
+ if (self.jumpVelocity > 30) {
+ self.jumpVelocity = 30;
+ }
+ var targetPlatform = undefined;
+ var isOnPlatform = platforms.some(function (platform) {
+ if (collisionElement.intersects(platform)) {
+ if (self.y - platform.y < 100) {
+ targetPlatform = platform;
+ return true;
+ }
+ ;
+ }
+ });
+ if (isOnPlatform && self.jumpVelocity > 0) {
+ // Ground level
+ self.y = targetPlatform.y + 70;
+ self.isJumping = false;
+ self.jumpVelocity = 0; // Reset jump velocity when hitting the ground
+ }
+ self.x = 2048 / 2; // Center the chicken horizontally
+ };
+ self.jump = function (volume) {
+ var isOnPlatform = platforms.some(function (platform) {
+ if (collisionElement.intersects(platform)) {
+ return self.y - platform.y < 100;
+ }
+ });
+ if (!self.isJumping && isOnPlatform) {
+ self.isJumping = true;
+ chicken.jumpVelocity = -30 * volume; // Set jump velocity based on volume
+ self.update();
+ }
+ };
});
+// Platform class to represent moving platforms
+var Platform = Container.expand(function () {
+ var self = Container.call(this);
+ self.moveSpeed = -5; // Base move speed
+ self.moveMultiplier = 1; // Default move multiplier
+ var groundGraphics = self.attachAsset('ground', {
+ anchorX: 0,
+ anchorY: 0
+ });
+ self.width = groundGraphics.width;
+ self.update = function () {
+ if (chicken.isJumping) {
+ self.moveMultiplier = 2;
+ } else if (facekit.volume > 0.3) {
+ self.moveMultiplier = facekit.volume * 3;
+ } else {
+ self.moveMultiplier = 0;
+ }
+ self.x += self.moveSpeed * self.moveMultiplier;
+ // If the platform moves off screen to the left, reposition it to the right
+ /*if (self.x < -self.width) {
+ // Reposition the platform to the right with a random gap
+ self.x += self.width + 2048 + Math.random() * 1000;
+ }*/
+ };
+});
-/****
+/****
* Initialize Game
-****/
+****/
var game = new LK.Game({
- backgroundColor: 0x87ceeb // Sky blue background
+ backgroundColor: 0x000000 //Init game with black background
});
-/****
+/****
* Game Code
-****/
-// Initialize chicken and add to game
+****/
+// Initialize platforms
+function addPlatformAt(x, y) {
+ var platform = new Platform();
+ platform.x = x; //i * 1900 + i * Math.random() * 1000; // Space platforms with gaps
+ platform.y = y; //2200; // Ground level
+ platforms.push(platform);
+ game.addChild(platform);
+ return platform;
+}
+var platforms = [];
+addPlatformAt(1000, 2200);
+addPlatformAt(3000, 2200);
+addPlatformAt(5000, 1800);
+addPlatformAt(7000, 2200);
+var lastPlatform = addPlatformAt(9000, 1500);
+var trophy = lastPlatform.attachAsset('trophy', {
+ anchorX: 0.5,
+ anchorY: 0.5,
+ x: lastPlatform.width / 2,
+ y: -100
+});
+// Initialize chicken
+//<Write imports for supported plugins here>
+var volumeText = new Text2('Volume: 0', {
+ size: 100,
+ fill: 0xFFFFFF
+});
+volumeText.anchor.set(0.5, 0);
+LK.gui.top.addChild(volumeText);
var chicken = game.addChild(new Chicken());
-chicken.x = 2048 / 2;
-chicken.y = 2732 - 150; // Start near the bottom of the screen
-// Function to handle voice input
-function handleVoiceInput(command) {
- if (command === 'jump') {
- chicken.y -= 100; // Make the chicken jump
- } else if (command === 'left') {
- chicken.x -= chicken.speed; // Move left
- } else if (command === 'right') {
- chicken.x += chicken.speed; // Move right
- }
+Platform.prototype.chicken = chicken; // Make chicken accessible in Platform class
+chicken.x = 2048 / 2; // Center the chicken horizontally
+chicken.y = 2200; // Start the chicken at the ground level
+// Function to handle microphone input
+function handleMicrophoneInput(volume) {
+ // console.log(volume, volume > 0.9 && !chicken.isJumpin);
+ if (volume > 0.80 && !chicken.isJumping) {
+ chicken.jump(volume);
+ }
}
-// Simulate voice input for demonstration purposes
-var simulatedCommands = ['jump', 'left', 'right'];
-var commandIndex = 0;
-LK.setInterval(function () {
- handleVoiceInput(simulatedCommands[commandIndex]);
- commandIndex = (commandIndex + 1) % simulatedCommands.length;
-}, 2000);
-// Update function for game logic
+// Update game logic
game.update = function () {
- // Game update logic
+ chicken.update();
+ platforms.forEach(function (platform) {
+ platform.update();
+ });
+ // Remove excess platforms if more than 3 exist
+ /*while (platforms.length > 3) {
+ var excessPlatform = platforms.shift();
+ excessPlatform.destroy();
+ }*/
+ handleMicrophoneInput(facekit.volume); // Use facekit to get the volume
+ volumeText.setText('Volume: ' + facekit.volume.toFixed(2));
+ // Check if the chicken has fallen off the screen
+ if (chicken.y > 3000) {
+ // End the game if the chicken has fallen off the screen
+ LK.showGameOver();
+ }
+ // Check if the chicken touches the trophy
+ if (chicken.intersects(trophy)) {
+ // End the game with a win if the chicken touches the trophy
+ LK.showYouWin();
+ }
};
\ No newline at end of file
Golden chicken trophy. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows
Row of Spikes. Computer Game Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows
A simple wide hand-drawn symmetrical ribbon banners. The banner text reads “Small bawk to move” in playful, cartoonish black lettering. The ribbon is warm beige parchment. Each side ends with simple curved, scroll-like ribbon. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
A simple wide hand-drawn symmetrical ribbon banners. The banner text reads “Big BAWK to Jump!” in playful, cartoonish black lettering. The ribbon is warm beige parchment. Each side ends with simple curved, scroll-like ribbon. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
Cartoon-style rectangular speech bubble with a sharp, dynamic outline. Inside the bubble, create the text ‘BAWK’ in bold, vibrant orange-to-yellow gradient lettering, with a thick black jagged shadow for contrast. The text should have a dynamic comic-style font and appear slightly 3D. The bubble should have a sharp tail pointing downward, consistent with comic-style speech bubbles. The intent is that we are shouting "BAWK".. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows
Simple cartoon whisper speech bubble with text "bawk" lowercase lettering. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows