文章目录
前言
- 最近逛B站经常看到一个熟悉的身影,豆包 MarsCode AI ,对于一位对 AI 领域稍有关注的开发者,对 MarsCode AI 也有一些深度体验,但是看一些 B站 UP 主的使用视频,发现有时候我们使用的工具感觉不是同一个东西,秉承着程序员较真的想法,我们来复现一下其中一位百大UP主
英雄哪里出来
发布的一个视频 :不写一行代码,开发一款属于自己的游戏,我们可以看到这个视频接近百万播放,8万点赞,想必具备一定的参考意义。
前置准备
- 为了让整个复现实验尽可能的相同,我会采取尽可能相似的环境,提示词等等。
- MarsCode AI ide 插件版本:1.2.1.2
- 代码仓库:拉取的相同的代码仓库(并尽可能复现相同的问题代码,由于代码仓库中是正常运行的代码因此需要根据视频中的问题进行复现)
- 问答模式:使用相同的仓库级问答
- 提示语:使用完全一致的提示语
复现实验
频率调整问题
- 我们第一个复现的问题是人物动画鬼畜问题,首先复现问题。
- 复现后效果
解决方法复现
- 使用视频中相同的提示词进行复现:
请问项目中的角色动画为什么这么鬼畜啊?
- 第一次问答 MarsCode AI 只是提供了一些解决思路,甚至没有提供相关的代码,我们进行追加问答试一下:
请问项目中的角色动画为什么这么鬼畜啊? 提供修复代码?
- 可以看到 MarsCode AI 甚至没有正确提示到错误代码的范围,经过简单的代码阅读和 MarsCode AI 提示的一些解决思路,我给了他一些修复建议:
是不是更新动画帧太快没有限制频率导致的鬼畜
,这一次 MarsCode AI 成功的解决了问题,提供了正确的修复代码。
- 修复后的动画效果
- 此时此刻我灵机一动,再次问了开头的那一句提示语,发现 MarsCode AI 正确的给我解决了问题,难道?心里埋下了一个小小怀疑种子,当然也有可能是偶然,为了验证猜想,继续复现后面的问题。
- 这里虽然种下了一颗怀疑的种子,但是也让我们看到了 MarsCode AI 优秀的学习能力,在一个项目的长期开发学习中,具备很大的参考意义,能让我们避免在一个问题上重复犯错。
篮球显示问题
- 按照老规则,先重现问题代码
def update(self):
if self.isGameOver:
return
self.player.update()
[ball.update() for ball in self.balls]
self.checkCollide()
# if self.isGameWin():
# self.Load( self.level.level + 1 )
解决方法复现
- 使用相同的提示语询问 MarsCode AI :
这个游戏中球为什么显示不出来?告诉我是哪个文件第几行出的问题,别说废话了
- 我们发现 MarsCode AI 同样没有给我们正确代码,简单分析代码发现错误可能是在
loadOneBall
相关方法,提供给 MarsCode AI ,MarsCode AI 给我们分析了整个方法的作用已经相关上下文。
- 结合分析和断点我们发现 balls 列表中没有生成球的实例,再次把补充资料提供给 MarsCode AI ,这一次 MarsCode AI 完美的解决了问题。
- 此时我们再次验证解决第一个问题中遗留的可能猜想,嘿嘿复现失败。
碰撞问题
- 复现错误代码
def update(self):
if self.isGameOver:
return
self.player.update()
[ball.update() for ball in self.balls]
self.checkCollide()
# if self.isGameWin():
# self.Load( self.level.level + 1 )
def checkCollide(self):
#self.checkBallBlockCollide()
self.checkBallPlayerCollide()
flag = True
while flag:
flag = False
for ball in self.balls:
if ball.GetRect().y > GAME_SIZE[1]:
self.balls.remove(ball)
flag = True
break
if len(self.balls) == 0:
self.isGameOver = True
解决方法复现
- 使用相同的提示语询问 MarsCode AI :
球和砖块怎么没有碰撞?是哪里出了问题?
- 咦,MarsCode AI 机智的发现我们错误代码,原来代码被注释掉了
- 这一次 MarsCode AI 表现得非常出色和视频中描述一致,快速的帮我们解决了问题。
复现结论
- 根据上面的几个问题的复现结论其实并不能得到一个准确的答案,因为环境上还存在一定差异,比如项目是使用 MarsCode AI 从 0 到 1 开发,MarsCode AI 获取到了足够的前置知识可以达到视频中的预期效果。有兴趣的朋友可以尝试折腾一下。
如何正确使用 MarsCode AI
- 对于问题比较简单的场景,MarsCode AI 一般可以帮我们轻松快速解决。
- 对于问题比较复杂的场景,建议是不要过于相信 AI ,因为它可能会不小心误导你,而是尽可能参考它的解决思路。
- 给予 AI 的提示词包含尽可能多的依赖数据以及尽可能完整的需求描述,那么它将给于你更完整、更接近解决方案的答案。
新增实现一个计时器需求为例
- 我们在提示词中尽可能的完整描述了我们的需求,让 MarsCode AI 解决我们的问题。
- 出乎意料的是 MarsCode AI 直接给我们生成了正确且符合需求的代码,本来可能需要半个小时的工作,我们在2分钟内完成了需求,极大的提高了我们的开发效率。
总结
- 虽然 MarsCode AI 在处理复杂问题上仍有不足之处,但 MarsCode AI 仍然是我们编程旅程中的超级搭档!无论是写代码、修 Bug 还是生成测试,它都能大幅提升我们的效率。还在等什么?快让你的开发工具箱进化吧!