User prompt
分数显示改成绿色
User prompt
苹果不要出现在界面之外
User prompt
增加一个 蛇的脑袋的图层 和身体用同样的颜色,但是多出一个眼睛和嘴巴
User prompt
Increase the length of the snake more when it eats food
User prompt
在右上角显示目前的分数
User prompt
把食物的图层替换为苹果
User prompt
把蛇的图层替换为 一只蛇
User prompt
吃下食物的蛇的长度增加更多
User prompt
蛇只能沿着水平或者垂直的路线前进
User prompt
增加背景图层,并且背景设置为浅灰色
User prompt
当蛇和食物的位置重合时,判定为蛇吃下食物
User prompt
当蛇接触到食物,则吃下食物,分数增加1分,同时蛇的身体长度增加
User prompt
让蛇向点击的地方移动
User prompt
通过点击控制蛇
User prompt
Create a Button class
User prompt
在游戏界面增加上下左右方向按钮,用按钮控制蛇的前进方向
User prompt
蛇的前进速度减慢
Initial prompt
Greedy Snake
===================================================================
--- original.js
+++ change.js
@@ -1,133 +1,133 @@
-/****
+/****
* Classes
-****/
+****/
// Food class
var Food = Container.expand(function () {
- var self = Container.call(this);
- var food = LK.getAsset('food', {
- anchorX: 0.5,
- anchorY: 0.5
- });
- self.addChild(food);
- self.randomizePosition = function () {
- self.x = Math.floor(Math.random() * 2048);
- self.y = Math.floor(Math.random() * 2732);
- };
- self.randomizePosition();
+ var self = Container.call(this);
+ var food = LK.getAsset('food', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ self.addChild(food);
+ self.randomizePosition = function () {
+ self.x = Math.floor(Math.random() * 2048);
+ self.y = Math.floor(Math.random() * 2732);
+ };
+ self.randomizePosition();
});
//<Assets used in the game will automatically appear here>
// Snake class
var Snake = Container.expand(function () {
- var self = Container.call(this);
- self.segments = [];
- self.direction = {
- x: 1,
- y: 0
- };
- self.speed = 10;
- self.grow = false;
- self.init = function () {
- // Initialize the snake with 3 segments
- for (var i = 0; i < 3; i++) {
- var segment = self.addSegment(1024 - i * 20, 1366);
- self.segments.push(segment);
- }
- };
- self.addSegment = function (x, y) {
- var segment = LK.getAsset('snakeSegment', {
- anchorX: 0.5,
- anchorY: 0.5
- });
- segment.x = x;
- segment.y = y;
- game.addChild(segment);
- return segment;
- };
- self.update = function () {
- // Move the snake
- var head = self.segments[0];
- var newX = head.x + self.direction.x * self.speed;
- var newY = head.y + self.direction.y * self.speed;
- // Check for collisions with walls
- if (newX < 0 || newX > 2048 || newY < 0 || newY > 2732) {
- LK.showGameOver();
- return;
- }
- // Check for collisions with itself
- for (var i = 1; i < self.segments.length; i++) {
- if (newX === self.segments[i].x && newY === self.segments[i].y) {
- LK.showGameOver();
- return;
- }
- }
- // Move the segments
- for (var i = self.segments.length - 1; i > 0; i--) {
- self.segments[i].x = self.segments[i - 1].x;
- self.segments[i].y = self.segments[i - 1].y;
- }
- head.x = newX;
- head.y = newY;
- // Grow the snake
- if (self.grow) {
- var tail = self.segments[self.segments.length - 1];
- var newSegment = self.addSegment(tail.x, tail.y);
- self.segments.push(newSegment);
- self.grow = false;
- }
- };
- self.changeDirection = function (newDirection) {
- // Prevent the snake from reversing
- if (self.direction.x + newDirection.x !== 0 || self.direction.y + newDirection.y !== 0) {
- self.direction = newDirection;
- }
- };
- self.init();
+ var self = Container.call(this);
+ self.segments = [];
+ self.direction = {
+ x: 1,
+ y: 0
+ };
+ self.speed = 5;
+ self.grow = false;
+ self.init = function () {
+ // Initialize the snake with 3 segments
+ for (var i = 0; i < 3; i++) {
+ var segment = self.addSegment(1024 - i * 20, 1366);
+ self.segments.push(segment);
+ }
+ };
+ self.addSegment = function (x, y) {
+ var segment = LK.getAsset('snakeSegment', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ segment.x = x;
+ segment.y = y;
+ game.addChild(segment);
+ return segment;
+ };
+ self.update = function () {
+ // Move the snake
+ var head = self.segments[0];
+ var newX = head.x + self.direction.x * self.speed;
+ var newY = head.y + self.direction.y * self.speed;
+ // Check for collisions with walls
+ if (newX < 0 || newX > 2048 || newY < 0 || newY > 2732) {
+ LK.showGameOver();
+ return;
+ }
+ // Check for collisions with itself
+ for (var i = 1; i < self.segments.length; i++) {
+ if (newX === self.segments[i].x && newY === self.segments[i].y) {
+ LK.showGameOver();
+ return;
+ }
+ }
+ // Move the segments
+ for (var i = self.segments.length - 1; i > 0; i--) {
+ self.segments[i].x = self.segments[i - 1].x;
+ self.segments[i].y = self.segments[i - 1].y;
+ }
+ head.x = newX;
+ head.y = newY;
+ // Grow the snake
+ if (self.grow) {
+ var tail = self.segments[self.segments.length - 1];
+ var newSegment = self.addSegment(tail.x, tail.y);
+ self.segments.push(newSegment);
+ self.grow = false;
+ }
+ };
+ self.changeDirection = function (newDirection) {
+ // Prevent the snake from reversing
+ if (self.direction.x + newDirection.x !== 0 || self.direction.y + newDirection.y !== 0) {
+ self.direction = newDirection;
+ }
+ };
+ self.init();
});
-/****
+/****
* Initialize Game
-****/
+****/
var game = new LK.Game({
- backgroundColor: 0x000000 //Init game with black background
+ backgroundColor: 0x000000 //Init game with black background
});
-/****
+/****
* Game Code
-****/
+****/
var snake = new Snake();
game.addChild(snake);
var food = new Food();
game.addChild(food);
game.update = function () {
- snake.update();
- // Check for collision with food
- if (snake.segments[0].x === food.x && snake.segments[0].y === food.y) {
- snake.grow = true;
- food.randomizePosition();
- }
+ snake.update();
+ // Check for collision with food
+ if (snake.segments[0].x === food.x && snake.segments[0].y === food.y) {
+ snake.grow = true;
+ food.randomizePosition();
+ }
};
// Handle touch events for direction change
game.down = function (x, y, obj) {
- var head = snake.segments[0];
- if (x < head.x) {
- snake.changeDirection({
- x: -1,
- y: 0
- });
- } else if (x > head.x) {
- snake.changeDirection({
- x: 1,
- y: 0
- });
- } else if (y < head.y) {
- snake.changeDirection({
- x: 0,
- y: -1
- });
- } else if (y > head.y) {
- snake.changeDirection({
- x: 0,
- y: 1
- });
- }
+ var head = snake.segments[0];
+ if (x < head.x) {
+ snake.changeDirection({
+ x: -1,
+ y: 0
+ });
+ } else if (x > head.x) {
+ snake.changeDirection({
+ x: 1,
+ y: 0
+ });
+ } else if (y < head.y) {
+ snake.changeDirection({
+ x: 0,
+ y: -1
+ });
+ } else if (y > head.y) {
+ snake.changeDirection({
+ x: 0,
+ y: 1
+ });
+ }
};
\ No newline at end of file