大家好,我是V哥,最近找到一个好玩的工具 TRAE,官网是这样介绍的:TRAE 深度融合 AI 能力,是一名能够理解需求、调用工具并独立完成各类开发任务的“AI 开发工程师”,帮助你高效推进每一个项目。事不宜迟,马上开干,我们一起来使用 TRAE SOLO 1分钟写个简易版飞机大战玩玩。
首先我的需求是这样的:帮我写一个飞机大战
下面是 TRAE SOLO 自动生成的的全过程
我需要先检查当前目录结构,了解项目的基础情况,然后规划飞机大战游戏的实现步骤。 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
## 操作说明 - **A键**:向左移动 - **D键**:向右移动 - **空格键**:发射子弹 - **R键**:游戏结束后重新开始 - **Q键**:退出游戏 游戏已经可以运行,你可以在终端中体验这个简单而有趣的飞机大战游戏!完成以上动作后,在代码区生成的py代码如下:
importosimportsysimportrandomimporttimeimportselect# 游戏设置WIDTH=40HEIGHT=20PLAYER_CHAR="▲"ENEMY_CHAR="▼"BULLET_CHAR="|"EMPTY_CHAR=" "classPlaneGame:def__init__(self):self.player_x=WIDTH//2self.player_y=HEIGHT-2self.bullets=[]self.enemies=[]self.score=0self.game_over=Falseself.last_enemy_time=time.time()self.enemy_spawn_delay=1.0# 秒# 设置标准输入为非阻塞ifos.name=='nt':importmsvcrtelse:# Unix系统设置importttyimporttermios self.old_settings=termios.tcgetattr(sys.stdin)tty.setcbreak(sys.stdin.fileno())defclear_screen(self):# 跨平台清屏os.system('cls'ifos.name=='nt'else'clear')defdraw(self):self.clear_screen()# 创建游戏网格grid=[[EMPTY_CHARfor_inrange(WIDTH)]for_inrange(HEIGHT)]# 绘制玩家grid[self.player_y][self.player_x]=PLAYER_CHAR# 绘制子弹forbulletinself.bullets:if0<=bullet[1]<HEIGHTand0<=bullet[0]<WIDTH:grid[bullet[1]][bullet[0]]=BULLET_CHAR# 绘制敌机forenemyinself.enemies:if0<=enemy[1]<HEIGHTand0<=enemy[0]<WIDTH:grid[enemy[1]][enemy[0]]=ENEMY_CHAR# 绘制边界print("="*(WIDTH+2))forrowingrid:print("|"+"".join(row)+"|")print("="*(WIDTH+2))# 绘制分数print(f"分数:{self.score}")ifself.game_over:print("游戏结束!按R键重新开始,按Q键退出")print("操作说明:A键向左,D键向右,空格键发射")else:print("操作说明:A键向左,D键向右,空格键发射,Q键退出")defhandle_input(self):# 跨平台非阻塞键盘输入try:ifos.name=='nt':importmsvcrtifmsvcrt.kbhit():key=msvcrt.getch().decode('utf-8').lower()self.process_key(key)else:# Unix系统使用selectrlist,_,_=select.select([sys.stdin],[],[],0.01)ifrlist:key=sys.stdin.read(1).lower()self.process_key(key)exceptExceptionase:passdefprocess_key(self,key):ifkey=='a'andself.player_x>0:self.player_x-=1elifkey=='d'andself.player_x<WIDTH-1:self.player_x+=1elifkey==' ':# 发射子弹self.bullets.append([self.player_x,self.player_y-1])elifkey=='r'andself.game_over:self.reset_game()elifkey=='q':self.exit_game()defexit_game(self):# 恢复终端设置ifos.name!='nt':importtermios termios.tcsetattr(sys.stdin,termios.TCSADRAIN,self.old_settings)sys.exit()defupdate(self):ifnotself.game_over:# 更新子弹new_bullets=[]forbulletinself.bullets:bullet[1]-=1# 子弹向上移动ifbullet[1]>0:# 子弹未飞出屏幕new_bullets.append(bullet)self.bullets=new_bullets# 生成敌机current_time=time.time()ifcurrent_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=[]forenemyinself.enemies:enemy[1]+=1# 敌机向下移动ifenemy[1]<HEIGHT:# 敌机未飞出屏幕new_enemies.append(enemy)self.enemies=new_enemies# 检测碰撞:子弹击中敌机bullets_to_remove=[]enemies_to_remove=[]fori,bulletinenumerate(self.bullets):forj,enemyinenumerate(self.enemies):ifbullet[0]==enemy[0]andbullet[1]==enemy[1]:bullets_to_remove.append(i)enemies_to_remove.append(j)self.score+=10# 删除击中的子弹和敌机(从后往前删除,避免索引问题)foriinsorted(bullets_to_remove,reverse=True):delself.bullets[i]forjinsorted(enemies_to_remove,reverse=True):delself.enemies[j]# 检测碰撞:敌机撞击玩家forenemyinself.enemies:ifenemy[0]==self.player_xandenemy[1]==self.player_y:self.game_over=Truedefreset_game(self):self.player_x=WIDTH//2self.player_y=HEIGHT-2self.bullets=[]self.enemies=[]self.score=0self.game_over=Falseself.last_enemy_time=time.time()defrun(self):whileTrue: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 主导任务,自动推进开发任务。你可根据任务需求自由切换,让高效与灵活并存。兄弟们,不用犹豫,快去试试吧。