
Trae初体验-不写一行代码开发2048小游戏
Trae 是字节跳动于 2025 年 1 月 19 日推出的 AI 编程工具。其实我对于国内出现Trae这样类Cursor的编程工具出现并不惊讶,AI编程是目前已经被验证能够真正提效的方向之一,Cursor也打通了付费模式,所以我相信2025年这类的工具将像雨后春笋一般生长出来,让我们拭目以待。
·
什么是Trae?
Trae 是字节跳动于 2025 年 1 月 19 日推出的 AI 编程工具。
核心功能
- 智能代码生成与优化:集成Claude 3.5和GPT-4o等顶级AI模型,可根据自然语言描述快速生成高质量代码片段,能精准理解需求并提供代码补全、优化和重构建议,提升代码质量,减少手动编写工作量。还可实时分析代码性能,帮助开发者减少冗余代码、提高执行效率。
- AI驱动的交互模式
- Chat模式:开发者可通过对话框输入问题或代码需求,Trae会基于AI模型生成代码建议或解答,适合解决编程中的具体问题,如调试错误、优化代码结构等。
- Builder模式:亮点功能,能根据用户需求直接生成完整的代码项目,如输入“生成一个图片压缩工具”的描述,它就可自动生成项目代码,并在生成过程中征求用户意见,确保代码的准确性和完整性。
- 原生中文支持:从底层设计上就支持中文,界面语言全面中文化,减少了语言切换带来的不便,让开发者能更专注于代码本身,提升开发效率。
- 多模态支持:开发者上传图像,Trae会精准理解图像内容,并结合AI功能生成相关代码,极大地简化了需求表达和代码实现的过程,适合需要视觉化输入的开发场景。
- 便捷的项目预览与调试:提供Webview功能,支持在IDE内直接预览Web页面,方便前端开发,开发者无需切换到浏览器即可实时查看开发效果。还支持在对话中引用代码块、文件或整个项目,实现精准交互。
应用场景
- Web开发:能够通过简单的自然语言描述快速生成静态网页或动态Web应用的代码,并结合Webview功能直接在IDE内预览和调试前端页面,提高开发效率。
- 游戏开发:可以生成简单游戏的基础代码,并与主流游戏引擎集成,例如能生成贪吃蛇游戏的基础代码,开发者在此基础上扩展和优化即可。
- 数据处理:能生成数据清洗、分析和机器学习数据准备的代码,支持多种数据格式,可高效完成数据处理任务,助力开发者快速实现数据驱动的项目。
- API开发:可以快速生成API请求和后端接口代码,还支持生成API文档和测试代码,帮助开发者快速开发和验证API功能。
- 工具开发:能根据描述生成实用工具的代码,如图片压缩、文件加密等,开发者通过简单提示词就能快速实现功能,减少开发时间和精力。
- 学习与教学:不仅适用于专业开发者,也是初学者和教育工作者的得力助手,能生成各种编程语言的基础代码示例,帮助初学者理解语法和逻辑,也为教师提供了丰富的教学用代码案例,辅助教学。
Trae vs Cursor
对比维度 | Trae | Cursor |
---|---|---|
核心功能 | AI代码生成与优化、Builder模式(项目搭建)、Chat模式(对话交互)、多模态交互(支持图片上传)、Webview功能(前端预览) | 智能代码补全、代码生成与解释、上下文感知与代码库索引、深度集成VS Code |
语言支持 | 原生中文支持,也支持英文 | 主要面向英文开发者 |
AI模型 | Claude 3.5、GPT-4o | 自研模型,支持多种语言 |
价格 | 免费 | 付费(订阅制) |
上下文感知 | 支持,但相对Cursor较弱 | 强,支持全项目上下文分析 |
多模态交互 | 支持上传图片生成代码 | 不支持 |
项目预览功能 | 支持Webview预览 | 不支持 |
学习成本 | 适合有一定编程基础的用户,有独特功能需学习 | 低,基于VS Code,熟悉VS Code的用户易上手 |
适用场景 | Web开发、游戏开发、数据处理、API开发、工具开发 | 全栈开发、复杂项目开发、代码优化与调试 |
平台支持 | 目前仅支持Mac,Windows版本即将上线 | 深度集成VS Code,支持Windows、Mac、Linux等 |
实践案例:2048小游戏
输入prompt指令
笔者输入的是“请帮我开发一个2048小游戏”,就是这么简单直接。然后Trae AI就开始辛勤的帮我生成代码,不用几分钟就完成了整体的代码框架搭建。
分别有三个代码文件:
game_2048.py
import tkinter as tk
import random
import colors
class Game2048:
def __init__(self):
self.window = tk.Tk()
self.window.title('2048游戏')
self.grid_cells = []
self.matrix = [[0] * 4 for _ in range(4)]
self.score = 0
self.init_grid()
self.init_matrix()
# 绑定按键事件
self.window.bind('<Left>', lambda event: self.move('left'))
self.window.bind('<Right>', lambda event: self.move('right'))
self.window.bind('<Up>', lambda event: self.move('up'))
self.window.bind('<Down>', lambda event: self.move('down'))
def init_grid(self):
background = tk.Frame(self.window, bg='#92877d', width=400, height=400)
background.grid()
for i in range(4):
grid_row = []
for j in range(4):
cell = tk.Frame(
background,
bg='#9e948a',
width=100,
height=100
)
cell.grid(row=i, column=j, padx=5, pady=5)
t = tk.Label(
cell,
text="",
bg='#9e948a',
justify=tk.CENTER,
font=('Arial', 30, 'bold'),
width=4,
height=2
)
t.grid()
grid_row.append(t)
self.grid_cells.append(grid_row)
def init_matrix(self):
# 初始化时添加两个数字
self.add_new_tile()
self.add_new_tile()
self.update_grid_cells()
def add_new_tile(self):
# 在空位置随机添加一个新数字(2或4)
empty_cells = [(i, j) for i in range(4) for j in range(4) if self.matrix[i][j] == 0]
if empty_cells:
i, j = random.choice(empty_cells)
self.matrix[i][j] = 2 if random.random() < 0.9 else 4
def update_grid_cells(self):
for i in range(4):
for j in range(4):
new_number = self.matrix[i][j]
if new_number == 0:
self.grid_cells[i][j].configure(text="", bg='#9e948a')
else:
self.grid_cells[i][j].configure(
text=str(new_number),
bg=colors.CELL_COLORS.get(new_number, '#ffffff'),
fg=colors.NUMBER_COLORS.get(new_number, '#ffffff')
)
self.window.update_idletasks()
def stack(self):
new_matrix = [[0] * 4 for _ in range(4)]
for i in range(4):
fill_position = 0
for j in range(4):
if self.matrix[i][j] != 0:
new_matrix[i][fill_position] = self.matrix[i][j]
fill_position += 1
self.matrix = new_matrix
def combine(self):
for i in range(4):
for j in range(3):
if self.matrix[i][j] != 0 and self.matrix[i][j] == self.matrix[i][j + 1]:
self.matrix[i][j] *= 2
self.matrix[i][j + 1] = 0
self.score += self.matrix[i][j]
def reverse(self):
new_matrix = []
for i in range(4):
new_matrix.append([])
for j in range(4):
new_matrix[i].append(self.matrix[i][3 - j])
self.matrix = new_matrix
def transpose(self):
new_matrix = [[0] * 4 for _ in range(4)]
for i in range(4):
for j in range(4):
new_matrix[i][j] = self.matrix[j][i]
self.matrix = new_matrix
def move(self, direction):
if direction == 'up':
self.transpose()
self.stack()
self.combine()
self.stack()
self.transpose()
elif direction == 'down':
self.transpose()
self.reverse()
self.stack()
self.combine()
self.stack()
self.reverse()
self.transpose()
elif direction == 'left':
self.stack()
self.combine()
self.stack()
elif direction == 'right':
self.reverse()
self.stack()
self.combine()
self.stack()
self.reverse()
self.add_new_tile()
self.update_grid_cells()
if self.game_over():
self.grid_cells[1][1].configure(text="Game", bg='#ffffff')
self.grid_cells[1][2].configure(text="Over!", bg='#ffffff')
def game_over(self):
# 检查是否还有空格
for i in range(4):
for j in range(4):
if self.matrix[i][j] == 0:
return False
# 检查是否还能合并
for i in range(4):
for j in range(3):
if self.matrix[i][j] == self.matrix[i][j + 1]:
return False
for i in range(3):
for j in range(4):
if self.matrix[i][j] == self.matrix[i + 1][j]:
return False
return True
def run(self):
self.window.mainloop()
colors.py
CELL_COLORS = {
2: "#eee4da",
4: "#ede0c8",
8: "#f2b179",
16: "#f59563",
32: "#f67c5f",
64: "#f65e3b",
128: "#edcf72",
256: "#edcc61",
512: "#edc850",
1024: "#edc53f",
2048: "#edc22e"
}
NUMBER_COLORS = {
2: "#776e65",
4: "#776e65",
8: "#f9f6f2",
16: "#f9f6f2",
32: "#f9f6f2",
64: "#f9f6f2",
128: "#f9f6f2",
256: "#f9f6f2",
512: "#f9f6f2",
1024: "#f9f6f2",
2048: "#f9f6f2"
}
main.py
from game_2048 import Game2048
if __name__ == "__main__":
game = Game2048()
game.run()
工程代码看不懂?直接问:
处理编译错误
遇到编译错误,不用怕,直接问Trae:
我按照指引按照了python相关的依赖库,重新编译运行就成功了,根本不用再去google或百度解决方案。
运行结果
就这样我们就开发好一款经典的2024小游戏,相比于过去这类Demo我们还得各种找源码学习,现在智能得有点吓人。
写在最后
其实我对于国内出现Trae这样类Cursor的编程工具出现并不惊讶,AI编程是目前已经被验证能够真正提效的方向之一,Cursor也打通了付费模式,所以我相信2025年这类的工具将像雨后春笋一般生长出来,让我们拭目以待。
更多推荐
所有评论(0)