由于curosr的体验会员到期了,就想着尝试一下Trae,没想到Trae的体验比之前好了太多,唯一一个缺点就是没抢到solo的邀请码,,但标准版能力已颠覆传统编码流程,非常适合国内小白用户开发。
下面就让我们来体验一下,Trae的能力吧
首先是进入页面,可以选择中文,这个真的是对英语不好的用户太友好了,虽然以前vscode也可以安装插件,但是Trae一开始就让用户选择语言,真的是很细心了,不错
由于作为一个用户,打开Builder,下面就有两个选项,那就来看看这两个选项,Trae的能力

然后trae就看有没有文件目录,没有的话就会帮我们创建一个文件目录,然后生成对应的index.html,js,css文件

然后是运行,由于我的电脑没有安装python,Trae运行不起来,第一次是cmd执行,然后Trae觉得可能是权限不够,就使用powershell去执行,最终发现没有。
然后尝试使用Node.js的http-server包来启动一个简单的HTTP服务器。首先,我们需要检查是否安装了Node.js。
会去检查node的版本来验证是不是安装了node,这一操作,确实非常适合小白用户,太厉害了吧~

然后通过执行node server.js
,为我们的贪吃蛇小游戏启动服务,然后编辑器自动帮我们把网页打开,这体验很人性化,然后我们来看看他的逻辑是不是有bug,如果有的话,看看他能不能自己解决

可以通过方向键来控制,积分逻辑也是对的,碰到墙壁会游戏结束,功能写的很完美

那就来看看他的js代码是怎么完成的吧
- 游戏常量和配置
ini
// 游戏常量
const GRID_SIZE = 20; // 每个网格的大小(像素)
const GRID_COUNT = 20; // 游戏区域的网格数量(20×20的网格)
const GAME_SPEED = 150; // 游戏初始速度(毫秒/帧)
// 方向常量
const DIRECTIONS = { // 定义四个方向的坐标变化
UP: { x: 0, y: -1 },
DOWN: { x: 0, y: 1 },
LEFT: { x: -1, y: 0 },
RIGHT: { x: 1, y: 0 }
};
2. DOM元素获取
ini
const canvas = document.getElementById('game-canvas');
const ctx = canvas.getContext('2d');
const scoreElement = document.getElementById('score');
const startButton = document.getElementById('start-btn');
const pauseButton = document.getElementById('pause-btn');
const restartButton = document.getElementById('restart-btn');
3. 游戏状态变量,设置蛇和实物的位置
ini
// 游戏状态
let snake = []; // 蛇的身体,数组中每个元素是一个坐标对象{x,y}
let food = {}; // 食物的位置
let direction = DIRECTIONS.RIGHT; // 当前移动方向
let nextDirection = DIRECTIONS.RIGHT; // 下一帧的移动方向
let score = 0; // 游戏分数
let gameInterval = null; // 游戏循环的计时器
let isPaused = false; // 游戏是否暂停
let isGameOver = true; // 游戏是否结束
4. 蛇的移动逻辑,通过方向键来控制蛇的位置以及蛇吃食物后的长度
ini
function moveSnake() {
// 获取蛇头
const head = { x: snake[0].x, y: snake[0].y };
head.x += direction.x;
head.y += direction.y;
snake.unshift(head);
if (!(head.x === food.x && head.y === food.y)) {
snake.pop();
}
}
5. 碰撞检测,四周的墙壁,以及自己的身体
csharp
function checkCollision() {
const head = snake[0];
// 检查是否撞墙
if (head.x < 0 || head.x >= GRID_COUNT || head.y < 0 || head.y >=
GRID_COUNT) {
return true;
}
// 检查是否撞到自己(从第二个身体部分开始检查)
for (let i = 1; i < snake.length; i++) {
if (head.x === snake[i].x && head.y === snake[i].y) {
return true;
}
}
return false;
}
6. 食物生成,随机生成的食物
ini
function generateFood() {
// 随机生成食物位置
let newFood;
let foodOnSnake;
// 循环直到生成的食物不在蛇身上
do {
foodOnSnake = false;
newFood = {
x: Math.floor(Math.random() * GRID_COUNT),
y: Math.floor(Math.random() * GRID_COUNT)
};
// 检查食物是否生成在蛇身上
for (let i = 0; i < snake.length; i++) {
if (newFood.x === snake[i].x && newFood.y === snake[i].y) {
foodOnSnake = true;
break;
}
}
} while (foodOnSnake);
food = newFood;
}
7. 吃食物逻辑
scss
function eatFood() {
// 增加分数
score += 10;
scoreElement.textContent = score;
// 生成新食物
generateFood();
// 每得到50分增加游戏速度
if (score % 50 === 0) {
clearInterval(gameInterval);
// 游戏速度随分数增加而加快,但最快不低于50毫秒/帧
gameInterval = setInterval(gameLoop, Math.max(50, GAME_SPEED -
Math.floor(score / 50) * 10));
}
}
总结:
Trae非常适合新手用户来学习编程,大大缩短学习成本,复杂一点的逻辑,可能需要提高自己的认知,利用ai才可以更好的实现,如果你有兴趣,那就快点下载Trae来试试吧~