chatgpt生成偽代碼 我用ChatGPT和Lightly做了一個Astro Shooter游戲
自從出現后,它很快地就占據了我的各種新聞頭條和日常工作生活。對于這種AI產品,我其實并沒有很陌生。畢竟的和等AI工具其實更早以前就出現了。
但不一樣,它一出現幾乎就風靡全球,遠遠超過歷史上的其他產品。
和還可以說是為程序員和文案人員而生,但卻幾乎什么人群都適用,甚至還是免費的。只要聯網注冊賬號,你就可以隨時向提出任何問題。
大多數時候,它都會給你一個答案。令人震驚的是,給出的答案大多數時候還頗有意思,甚至語言也不會過于生硬。
面世以后,有大量的文章吹噓能夠通過谷歌的面試,不過也有一些批評者說其實很智障。出于這種好奇心,我嘗試使用自動生成代碼進行編程,來見識一下的能力。
我做了一個小測試,嘗試通過用做一個簡單的 游戲來弄清楚的能力。我的目標是:除了調整參數外,完全不寫任何一行代碼,相當于一個不太懂編程的人使用來開發游戲。
在這篇文章中,我們只會用到兩個工具:和。是一個超級輕量且強大的在線編輯器(IDE),它允許你在瀏覽器在網頁上進行編譯、運行項目。我們將用它作為我們的編輯器和編譯器,與人工智能語言模型一起開發我們的游戲。
向發問
首先,我用一個簡單明了的問題開始了實驗。我問“是否能用為我編碼一個 游戲”。
毫不猶豫地回復了我一段基本代碼,如下:
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()
復制代碼
給出的第一段代碼基本上只是個游戲畫布。你可以擁有你自己的飛船和一個敵人的占位符,除此以外別無其它,你甚至不能稱其為游戲,因為它甚至沒有宇宙飛船的外觀設計。
我從Itch.io里找來了一些簡單的宇宙飛船素材,這部分素材會附在后面的項目包里,歡迎取需。
增加方向鍵功能來移動飛船
光有畫布可不行,我們必須讓寫出新的代碼,調用更多的功能來移動我們的飛船。因此,我向提出了我的第二個需求:添加一個用方向鍵左右移動飛船的函數。
這就是添加到游戲循環中的移動函數,下面是完整代碼:
# 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
復制代碼
我嘗試運行生成的代碼,但當我按下方向鍵時,飛船移動得太快了,甚至移動到了邊界之外。
于是我又向提出了一些需求。在提問的過程中,很常會吞掉一些長答案,或者運行到一半就會卡殼。這個似乎是服務器的問題,有時候刷新一下就好,但我最終發現,讓他更新小部分代碼才是真正的打開方式。當然,這種方式還是需要有一點代碼基礎,否則有可能就不知道要把代碼段復制到原代碼的哪個部分。
在給出一個比較明確的要求后,我終于得到了比較理想的游戲代碼。
按照慣例把代碼復制粘貼到 IDE中運行。不得不說, IDE真的是一個很方便的在線編輯器,不需要任何安裝就可以讓你在瀏覽器上運行大多數編程項目。
讓生成更多的代碼,讓游戲正常運行
我向提出了更多的需求,包括生成更多的敵人,讓飛船射出導彈chatgpt生成偽代碼,以及在被導彈擊中時讓敵方飛船消失。
下面是我在輸入的一些需求:
說實話,這個過程并不像我想象的那么容易。我花了很多時間和溝通并反復調試,不斷在它生成的代碼中發現新的問題,然后再讓它解決問題。
例如:當我第一次要求為我生成更多的敵人時。它只是顯示了一堆敵人,有些甚至出現在玩家的下方,這就變得無法射擊。很明顯,這和我設想的并不一樣。
讓敵人動起來
當前版本中,游戲里唯一會動的東西是玩家的飛船和它的導彈。敵人的飛船仍然是一動不動的,完全被固定在出生點上。
所以,我需要給敵人增加一些動作,讓他們不斷朝著玩家向下移動。
如果你足夠熟悉編程,一定明白想實現這一點其實并不難,但用通俗的語言指揮來實現這個效果,需要花費一些時間才能獲得一個相對滿意的結果。
下面就是一個溝通失敗的例子:
要是我是飛船駕駛員,我可能人都傻了。
我花了很多時間才找到正確的溝通方法。想要讓更好更準確的為你提供答案,最好的方法是提出下面這樣具體的問題:
會告訴你哪些可以修改,并給出相關的代碼片段。在這里chatgpt生成偽代碼,你可以手動檢查代碼,替換需要的東西,而不是直接復制和粘貼生成的代碼。
我在下面又問了幾個問題,讓游戲變得更好一些。
最終,我獲得了一個完全由提供代碼,并且看起來可玩的游戲。下面是這個游戲在中運行的樣子:
下面是這個游戲的完整代碼,你可以復制到瀏覽器上立即運行這個游戲并試玩一下。
對的進一步思考
這么火不是沒有理由的。誰會想到一個聊天機器人只靠提示命令就能自己寫代碼開發出一個游戲?
不過,雖然我對的能力感到相當贊嘆,但這并不意味著我對它的結果感到滿意。
如果你在沒有任何專業知識的情況下,盲目地依賴這個工具,你會在它錯誤的答案中迷失自己。目前來看,它仍然只是一個幫助人類提高效率的聊天機器人,而并不能取代人類。
你可以讓按照非常具體(和專業)的命令生成答案chatgpt生成偽代碼,并手動處理調整,這真的會讓工作效率提高很多。如果你只是用命令來提示和調試,我反而覺得還不如有足夠知識儲備的人類。當然,本身也會不斷地學習進步,此后是不是依然保持原地踏步,就不得而知了。
如果你是一個程序員小白,平時主要依賴于在知乎、問答上詢問解決方案,那對你來說可能會提供一個更快捷方便的答案。通過它的回復,你確實可以從這些建議中重新調試代碼并改善學習。
在我嘗試向索要代碼的過程中,它幾乎每一次都對它給出的代碼提供了相當詳細的解釋,這對于一個學習中的程序員來說非常有幫助,也便于我們在練習的過程中進步。
總的來說,我認為作為人工智能發展的一座里程碑當之無愧。它的出現必將改變我們未來的計算方式,我甚至對此抱有樂觀態度。
無論如何,這并不意味著我們應該停止學習編程或任何其他已經掌握的知識。我們應該把當作玩具、工具,甚至是朋友而不是敵人。它不應該讓你停止進步,而是為你提供幫助,讓你進一步進步。
免責聲明:本文系轉載,版權歸原作者所有;旨在傳遞信息,不代表本站的觀點和立場和對其真實性負責。如需轉載,請聯系原作者。如果來源標注有誤或侵犯了您的合法權益或者其他問題不想在本站發布,來信即刪。
聲明:本站所有文章資源內容,如無特殊說明或標注,均為采集網絡資源。如若本站內容侵犯了原著者的合法權益,可聯系本站刪除。