自从ChatGPT呈现后,它很快地就占据了我的各种新闻头条和日常作业生活。关于这种AI产品,我其实并没有很生疏。究竟GitHub的Copilot和Jasper等AI东西其实更早曾经就呈现了。
但ChatGPT不相同,它一呈现简直就风靡全球,远远超越历史上的其他产品。
Copilot和Jasper还能够说是为程序员和文案人员而生,但ChatGPT却简直什么人群都适用,乃至仍是免费的。只要联网注册账号,你就能够随时向ChatGPT提出任何问题。
大多数时分,它都会给你一个答案。令人震惊的是,ChatGPT给出的答案大多数时分还颇有意思,乃至言语也不会过于生硬。
ChatGPT问世以后,有很多的文章吹嘘ChatGPT能够经过谷歌的面试,不过也有一些批评者说ChatGPT其实很智障。出于这种好奇心,我测验运用ChatGPT主动生成代码进行编程,来见识一下ChatGPT的能力。
我做了一个小测试,测验经过用Python做一个简略的Astro Shooter游戏来弄清楚ChatGPT的能力。我的目标是:除了调整参数外,彻底不写任何一行代码,相当于一个不太懂编程的人运用ChatGPT来开发游戏。
在这篇文章中,咱们只会用到两个东西:Lightly和ChatGPT。Lightly是一个超级轻量且强大的在线编辑器(IDE),它答应你在浏览器在网页上进行编译、运转项目。咱们将用它作为咱们的编辑器和编译器,与人工智能言语模型ChatGPT一起开发咱们的游戏。
向ChatGPT提问
首要,我用一个简略明了的问题开端了实验。我问ChatGPT“是否能用Pygame为我编码一个Astro Shooter游戏”。
ChatGPT毫不犹豫地回复了我一段根本代码,如下:
import pygame
# Initialize the game engine
pygame.init()
# Set the screen size
screen = pygame.display.set_mode((800, 600))
# Set the title of the window
pygame.display.set_caption("Astro Shooter")
# Load the player image
player_image = pygame.image.load("player.png")
# Set the player starting position
player_x = 400
player_y = 500
# Load the enemy image
enemy_image = pygame.image.load("enemy.png")
# Set the enemy starting position
enemy_x = 50
enemy_y = 50
# Set the running flag to True
running = True
# Game loop
while running:
# Handle events
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
# Clear the screen
screen.fill((0, 0, 0))
# Draw the player
screen.blit(player_image, (player_x, player_y))
# Draw the enemy
screen.blit(enemy_image, (enemy_x, enemy_y))
# Update the display
pygame.display.update()
# Quit the game engine
pygame.quit()
ChatGPT给出的榜首段代码根本上仅仅个游戏画布。你能够具有你自己的飞船和一个敌人的占位符,除此以外别无其它,你乃至不能称其为游戏,由于它乃至没有宇宙飞船的外观设计。
我从Itch.io里找来了一些简略的宇宙飞船素材,这部分素材会附在后面的项目包里,欢迎取需。
增加方向键功能来移动飞船
光有画布可不行,咱们有必要让ChatGPT写出新的代码,调用更多的功能来移动咱们的飞船。因而,我向ChatGPT提出了我的第二个需求:增加一个用方向键左右移动飞船的函数。
这就是增加到游戏循环中的移动函数,下面是完好代码:
# Game loop
while running:
# Handle events
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_LEFT:
player_x -= player_speed
if event.key == pygame.K_RIGHT:
player_x += player_speed
我测验运转ChatGPT生成的代码,但当我按下方向键时,飞船移动得太快了,乃至移动到了边界之外。
所以我又向ChatGPT提出了一些需求。在提问的过程中,ChatGPT很常会吞掉一些长答案,或者运转到一半就会卡壳。这个似乎是ChatGPT服务器的问题,有时分改写一下就好,但我最终发现,让他更新小部分代码才是真实的打开方法。当然,这种方法仍是需求有一点代码根底,否则有或许就不知道要把代码段仿制到原代码的哪个部分。
在给出一个比较清晰的要求后,我终于得到了比较理想的游戏代码。
依照常规把代码仿制粘贴到Lightly IDE中运转。不得不说,Lightly IDE真的是一个很便利的在线编辑器,不需求任何安装就能够让你在浏览器上运转大多数编程项目。
让ChatGPT生成更多的代码,让游戏正常运转
我向ChatGPT提出了更多的需求,包括生成更多的敌人,让飞船射出导弹,以及在被导弹击中时让敌方飞船消失。
下面是我在ChatGPT输入的一些需求:
-
让游戏中再呈现十个敌人。
-
让玩家在按下空格键时发射导弹。
-
当导弹击中敌人时,使敌人消失。假如导弹击中了敌人,玩家就得到100分。
说实话,这个过程并不像我幻想的那么简单。我花了很多时刻和ChatGPT交流并反复调试,不断在它生成的代码中发现新的问题,然后再让它解决问题。
例如:当我榜首次要求ChatGPT为我生成更多的敌人时。它仅仅显现了一堆敌人,有些乃至呈现在玩家的下方,这就变得无法射击。很明显,这和我想象的并不相同。
让敌人动起来
当前版别中,游戏里仅有会动的东西是玩家的飞船和它的导弹。敌人的飞船依然是一动不动的,彻底被固定在出生点上。
所以,我需求给敌人增加一些动作,让他们不断朝着玩家向下移动。
假如你满足熟悉编程,必定理解想完成这一点其实并不难,但用通俗的言语指挥ChatGPT来完成这个效果,需求花费一些时刻才能获得一个相对满意的成果。
下面就是一个交流失利的例子:
要是我是飞船驾驶员,我或许人都傻了。
我花了很多时刻才找到正确的交流方法。想要让ChatGPT更好更准确的为你供给答案,最好的方法是提出下面这样具体的问题:
ChatGPT会告知你哪些能够修正,并给出相关的代码片段。在这里,你能够手动查看代码,替换需求的东西,而不是直接仿制和粘贴生成的代码。
我在下面又问了ChatGPT几个问题,让游戏变得更好一些。
-
我要怎样才能把导弹改成白色矩形?
-
我要怎样修正代码,才能使敌人不显现在玩家下面?
-
我要怎样修正代码,才能使敌人向下移动的速度更慢?
最终,我获得了一个彻底由ChatGPT供给代码,并且看起来可玩的游戏。下面是这个游戏在Lightly中运转的姿态:
下面是这个游戏的完好代码,你能够仿制到浏览器上当即运转这个游戏并试玩一下。
2129eec9db-share.lightly.teamcode.com
对ChatGPT的进一步考虑
ChatGPT这么火不是没有理由的。谁会想到一个聊天机器人只靠提示指令就能自己写代码开宣布一个游戏?
不过,尽管我对ChatGPT的能力感到相当赞赏,但这并不意味着我对它的成果感到满意。
假如你在没有任何专业常识的情况下,盲目地依靠ChatGPT这个东西,你会在它过错的答案中迷失自己。现在来看,它依然仅仅一个帮助人类前进效率的聊天机器人,而并不能取代人类。
你能够让ChatGPT依照十分具体(和专业)的指令生成答案,并手动处理调整,这真的会让作业效率前进很多。假如你仅仅用指令来提示和调试,我反而觉得还不如有满足常识储藏的人类。当然,ChatGPT本身也会不断地学习前进,此后是不是依然坚持原地踏步,就不得而知了。
假如你是一个程序员小白,平时首要依靠于在知乎、问答上询问解决方案,那ChatGPT对你来说或许会供给一个更快捷便利的答案。经过它的回复,你的确能够从这些主张中从头调试代码并改进学习。
在我测验向ChatGPT索要代码的过程中,它简直每一次都对它给出的代码供给了相当具体的解释,这关于一个学习中的程序员来说十分有帮助,也便于咱们在操练的过程中前进。
总的来说,我以为ChatGPT作为人工智能发展的一座里程碑名副其实。它的呈现必将改动咱们未来的计算方法,我乃至对此抱有乐观态度。
无论如何,这并不意味着咱们应该中止学习编程或任何其他ChatGPT已经掌握的常识。咱们应该把ChatGPT当作玩具、东西,乃至是朋友而不是敌人。它不应该让你中止前进,而是为你供给帮助,让你进一步前进。