TypeScript实现贪吃蛇游戏
以下是一个简化的TypeScript代码示例,用于实现贪吃蛇游戏中的蛇部分。这个示例只包含了蛇的基本属性和移动功能。
class Snake {
body: number[][]; // 蛇的身体,使用二维数组表示位置
direction: 'up' | 'down' | 'left' | 'right'; // 蛇的移动方向
constructor() {
this.body = [[2, 2], [1, 2], [0, 2]]; // 初始蛇的位置
this.direction = 'right'; // 初始方向
}
move(food: number[]): void {
const nextHead = this.getNextHead();
if (this.isEating(food, nextHead)) {
this.body.push(nextHead); // 吃到食物,蛇长大
} else {
this.body.push(nextHead); // 没吃食物,蛇前进
this.body.shift(); // 蛇尾部移除
}
}
getNextHead(): number[] {
const [x, y] = this.body[this.body.length - 1];
switch (this.direction) {
case 'up': return [x - 1, y];
case 'down': return [x + 1, y];
case 'left': return [x, y - 1];
case 'right': return [x, y + 1];
}
}
isEating(food: number[], nextHead: number[]): boolean {
return nextHead[0] === food[0] && nextHead[1] === food[1];
}
changeDirection(newDirection: 'up' | 'down' | 'left' | 'right'): void {
const oppositeDirection = { 'up': 'down', 'down': 'up', 'left': 'right', 'right': 'left' };
if (newDirection !== oppositeDirection[this.direction]) {
this.direction = newDirection;
}
}
}
// 使用示例
const snake = new Snake();
const food = [1, 1]; // 假设食物在坐标(1, 1)
// 玩家按键,改变蛇的移动方向
snake.changeDirection('left');
// 游戏循环中调用snake.move(food)更新蛇的位置
这个代码实现了基本的贪吃蛇游戏中蛇的部分。它包括蛇的移动逻辑,包括蛇吃食物时的增长和没吃食物时的移动。这个示例没有实现游戏的其他部分,比如与屏幕边界的碰撞检测、蛇吃蛇本身的检测等。实际的游戏可能需要更复杂的逻辑来处理这些情况。
评论已关闭