大家好,我是V哥,最近找到一个好玩的工具 TRAE,官网是这样介绍的:TRAE 深度融合 AI 能力,是一名能够理解需求、调用工具并独立完成各类开发任务的"AI 开发工程师",帮助你高效推进每一个项目。事不宜迟,马上开干,我们一起来使用 TRAE SOLO 1分钟写个简易版飞机大战玩玩。
首先我的需求是这样的:帮我写一个飞机大战
下面是 TRAE SOLO 自动生成的的全过程
makefile
我需要先检查当前目录结构,了解项目的基础情况,然后规划飞机大战游戏的实现步骤。
toolName: view_folder
status: success
/Users/vince/Trae/demo1
查看main.py的内容,了解现有代码情况,然后规划飞机大战游戏的实现。
toolName: view_files
status: success
filePath: /Users/vince/Trae/demo1/main.py
我将重写main.py文件,实现一个完整的飞机大战游戏,包含玩家飞机、敌机、子弹系统和碰撞检测等功能。
toolName: edit_file_search_replace
status: success
filePath: /Users/vince/Trae/demo1/main.py
changes: undefined
现在我需要安装pygame库,然后运行游戏来测试是否正常工作。
toolName: run_command
status: success
command: pip install pygame undefined
使用python -m pip来安装pygame库,因为直接使用pip命令没有找到。
toolName: run_command
status: success
command: python -m pip install pygame undefined
使用python3 -m pip来安装pygame库,因为环境中可能只安装了python3。
toolName: run_command
status: success
command: python3 -m pip install pygame undefined
pygame安装失败,因为缺少SDL依赖。我将修改代码,使用Python内置的turtle库来实现飞机大战游戏,这样不需要任何外部依赖。
toolName: edit_file_search_replace
status: success
filePath: /Users/vince/Trae/demo1/main.py
changes: undefined
现在运行游戏,测试使用turtle库实现的飞机大战是否正常工作。
toolName: run_command
status: success
command: python3 main.py undefined
turtle库在macOS上遇到了Tk依赖问题,我将重新编写一个基于文本界面的飞机大战游戏,使用Python标准库,无需任何外部依赖。
toolName: edit_file_search_replace
status: success
filePath: /Users/vince/Trae/demo1/main.py
changes: undefined
修改代码,使用跨平台的非阻塞键盘输入方式,替换Windows特有的msvcrt库。
toolName: edit_file_search_replace
status: success
filePath: /Users/vince/Trae/demo1/main.py
changes: undefined
运行游戏,测试跨平台的文本界面飞机大战是否正常工作。
toolName: run_command
status: success
command: python3 main.py undefined
飞机大战游戏已经成功编写完成!以下是游戏的主要功能和特点:
## 游戏功能
- **玩家控制**:使用A键向左移动,D键向右移动
- **武器系统**:空格键发射子弹
- **敌机系统**:自动生成敌机并向下移动
- **碰撞检测**:
- 子弹击中敌机得分
- 敌机撞击玩家游戏结束
- **分数系统**:击中一架敌机得10分
- **游戏状态**:支持游戏结束、重新开始和退出功能
## 游戏特点
- **跨平台**:支持Windows和macOS/Linux系统
- **无外部依赖**:仅使用Python标准库
- **文本界面**:使用字符绘制游戏元素,简洁直观
- **操作简单**:清晰的操作说明
- **代码结构清晰**:模块化设计,易于扩展
## 运行方式
在终端中执行以下命令:
python3 main.py
markdown
## 操作说明
- **A键**:向左移动
- **D键**:向右移动
- **空格键**:发射子弹
- **R键**:游戏结束后重新开始
- **Q键**:退出游戏
游戏已经可以运行,你可以在终端中体验这个简单而有趣的飞机大战游戏!
完成以上动作后,在代码区生成的py代码如下:
py
import os
import sys
import random
import time
import select
# 游戏设置
WIDTH = 40
HEIGHT = 20
PLAYER_CHAR = "▲"
ENEMY_CHAR = "▼"
BULLET_CHAR = "|"
EMPTY_CHAR = " "
class PlaneGame:
def __init__(self):
self.player_x = WIDTH // 2
self.player_y = HEIGHT - 2
self.bullets = []
self.enemies = []
self.score = 0
self.game_over = False
self.last_enemy_time = time.time()
self.enemy_spawn_delay = 1.0 # 秒
# 设置标准输入为非阻塞
if os.name == 'nt':
import msvcrt
else:
# Unix系统设置
import tty
import termios
self.old_settings = termios.tcgetattr(sys.stdin)
tty.setcbreak(sys.stdin.fileno())
def clear_screen(self):
# 跨平台清屏
os.system('cls' if os.name == 'nt' else 'clear')
def draw(self):
self.clear_screen()
# 创建游戏网格
grid = [[EMPTY_CHAR for _ in range(WIDTH)] for _ in range(HEIGHT)]
# 绘制玩家
grid[self.player_y][self.player_x] = PLAYER_CHAR
# 绘制子弹
for bullet in self.bullets:
if 0 <= bullet[1] < HEIGHT and 0 <= bullet[0] < WIDTH:
grid[bullet[1]][bullet[0]] = BULLET_CHAR
# 绘制敌机
for enemy in self.enemies:
if 0 <= enemy[1] < HEIGHT and 0 <= enemy[0] < WIDTH:
grid[enemy[1]][enemy[0]] = ENEMY_CHAR
# 绘制边界
print("=" * (WIDTH + 2))
for row in grid:
print("|" + "".join(row) + "|")
print("=" * (WIDTH + 2))
# 绘制分数
print(f"分数: {self.score}")
if self.game_over:
print("游戏结束!按R键重新开始,按Q键退出")
print("操作说明:A键向左,D键向右,空格键发射")
else:
print("操作说明:A键向左,D键向右,空格键发射,Q键退出")
def handle_input(self):
# 跨平台非阻塞键盘输入
try:
if os.name == 'nt':
import msvcrt
if msvcrt.kbhit():
key = msvcrt.getch().decode('utf-8').lower()
self.process_key(key)
else:
# Unix系统使用select
rlist, _, _ = select.select([sys.stdin], [], [], 0.01)
if rlist:
key = sys.stdin.read(1).lower()
self.process_key(key)
except Exception as e:
pass
def process_key(self, key):
if key == 'a' and self.player_x > 0:
self.player_x -= 1
elif key == 'd' and self.player_x < WIDTH - 1:
self.player_x += 1
elif key == ' ':
# 发射子弹
self.bullets.append([self.player_x, self.player_y - 1])
elif key == 'r' and self.game_over:
self.reset_game()
elif key == 'q':
self.exit_game()
def exit_game(self):
# 恢复终端设置
if os.name != 'nt':
import termios
termios.tcsetattr(sys.stdin, termios.TCSADRAIN, self.old_settings)
sys.exit()
def update(self):
if not self.game_over:
# 更新子弹
new_bullets = []
for bullet in self.bullets:
bullet[1] -= 1 # 子弹向上移动
if bullet[1] > 0: # 子弹未飞出屏幕
new_bullets.append(bullet)
self.bullets = new_bullets
# 生成敌机
current_time = time.time()
if current_time - self.last_enemy_time > self.enemy_spawn_delay:
enemy_x = random.randint(0, WIDTH - 1)
self.enemies.append([enemy_x, 0])
self.last_enemy_time = current_time
# 更新敌机
new_enemies = []
for enemy in self.enemies:
enemy[1] += 1 # 敌机向下移动
if enemy[1] < HEIGHT: # 敌机未飞出屏幕
new_enemies.append(enemy)
self.enemies = new_enemies
# 检测碰撞:子弹击中敌机
bullets_to_remove = []
enemies_to_remove = []
for i, bullet in enumerate(self.bullets):
for j, enemy in enumerate(self.enemies):
if bullet[0] == enemy[0] and bullet[1] == enemy[1]:
bullets_to_remove.append(i)
enemies_to_remove.append(j)
self.score += 10
# 删除击中的子弹和敌机(从后往前删除,避免索引问题)
for i in sorted(bullets_to_remove, reverse=True):
del self.bullets[i]
for j in sorted(enemies_to_remove, reverse=True):
del self.enemies[j]
# 检测碰撞:敌机撞击玩家
for enemy in self.enemies:
if enemy[0] == self.player_x and enemy[1] == self.player_y:
self.game_over = True
def reset_game(self):
self.player_x = WIDTH // 2
self.player_y = HEIGHT - 2
self.bullets = []
self.enemies = []
self.score = 0
self.game_over = False
self.last_enemy_time = time.time()
def run(self):
while True:
self.handle_input()
self.update()
self.draw()
time.sleep(0.1) # 控制游戏速度
if __name__ == "__main__":
game = PlaneGame()
game.run()
下面我来测试运行一下,单击代码区右上角的运行按钮:

在终端运行的效果是这样的:

啥也不说,V哥先爽一把。
小结一下

TRAE 覆盖从编码、调试到测试、重构、部署等多类开发任务。提供智能体编程工具 CUE,支持代码补全、多行修改、智能导入和智能重命名等功能,适配多种日常开发场景,帮助你减少重复操作,专注核心创新。TRAE 不仅将 AI 集成进 IDE,也让 Al 使用更多开发工具。TRAE 目前拥有双重开发模式:IDE 模式保留原有流程,控制感更强;SOLO 模式让 AI 主导任务,自动推进开发任务。你可根据任务需求自由切换,让高效与灵活并存。兄弟们,不用犹豫,快去试试吧。