《乒乓球》游戲無限量。
當前,人們對設計用于幫程序員編寫軟件的人工智能(AI)工具非常感興趣。GitHub的Copilot和亞馬遜的CodeWhisperer通過對深度學習技術進行調整,可以生成源代碼。最初開發該技術是為了生成自然語言文本。其理念是,程序員可以將這些工具作為一種強有力的自動完成方法,使用提示來生成代碼塊,開發人員將代碼塊集成到自己的軟件中。
看著這些工具時,我想知道:我們能否再進一步,無需程序員參與?能不能只是按一下按鈕,即可完成一段可運行程序的編寫和部署?
我的日常工作是為微控制器編寫嵌入式軟件,因此我立刻想到了將一個獨立的手持設備用作演示平臺。借助一個屏幕和幾個控件,用戶將能夠與簡單的AI生成軟件進行交互。無限量《乒乓球》(Pong)游戲的概念由此誕生。
我選擇《乒乓球》游戲有幾個原因。該游戲的玩法很簡單,雅達利最初的1972年《乒乓球》街機機箱上是這樣解釋的:“要取得高分,就避免丟球。”只要一個向上的按鈕和一個向下的按鈕就可以玩這個游戲了。《乒乓球》與20世紀70年代和80年代打造的許多經典雅達利游戲一樣,僅需編寫較少的幾行代碼,已經作為編程練習題目實現了很多很多次。這意味著在AI工具訓練數據的源代碼資源庫中有豐富的《乒乓球》游戲示例,這就提高了獲得可行結果的可能性。
我使用了一臺售價6美元的樹莓派Pico W作為手持設備的核心,借助它的內置無線功能,可以直接連接基于云端的AI工具。為此,我安裝了一個售價9美元的Pico LCD 1.14顯示模塊。它的240×135彩色像素足夠用于《乒乓球》游戲,而且該模塊集成了兩個按鈕和一個雙軸微型操縱桿。
我為Pico選擇的編程語言是MicroPython,因為它是我常用的語言,而且它是一種解釋型語言代碼,不需要基于個人計算機的編譯器即可運行。我使用的AI編碼工具是OpenAI Codex。使用可對Web的HTTP格式查詢做出響應的API即可訪問OpenAI Codex。使用MicroPython的urequests和ujson庫,可以直接構建和發送查詢。在目前的測試階段,使用OpenAI Codex API是免費的,但需要注冊,而且查詢限制為每分鐘20次,即使是最狂熱的《乒乓球》游戲玩家,這也足夠了。
下一步是創建容器程序。該程序負責檢測何時通過按鈕請求《乒乓球》的新版本,向OpenAI Codex發送提示、接收結果并啟動游戲。容器程序還設置了一個硬件抽象層,處理Pico和LCD/控制模塊之間的物理連接。
整個項目中最關鍵的部分是創建提示,每當我們想要OpenAI Codex吐出新版《乒乓球》時,這個提示都會傳輸到OpenAI Codex。提示是一段純文本,帶有最簡單的源代碼框架,用幾行代碼概述很多電子游戲中常見的結構,即我們要用的庫列表、處理事件(如按鍵)的調用、根據這些事件更新游戲狀態的調用,以及在屏幕上顯示更新狀態的調用。
如何使用這些庫以及如何填寫調用取決于AI。將這種通用結構轉化為《乒乓球》游戲的關鍵是嵌入注釋,這些注釋在人工編寫的源代碼中是可選擇的,但在提示中是非常有用的。注釋使用簡單的英語來描述游戲玩法,例如,“該游戲包括以下類別……球:該類別代表球。它具有一個位置、一種速度和一個調試屬性。乒乓球:該類別代表游戲本身。它具有兩個擋板和一個球。它知道如何檢查游戲結束。”(在Hackaday.io上可以使用樹莓派Pico W來玩《乒乓球》游戲;該網站有我的容器和提示代碼。)
AI返回大約300行代碼。在我早期的嘗試中,代碼無法顯示游戲,因為我的模塊使用的MicroPython幀緩沖(framebuffer)庫版本與訓練OpenAI Codex的幀緩沖庫不同。解決方案是添加提示注釋,描述我的庫所使用的方法,例如“de f rectangle (self, x, y, w, h, c)”。另一個問題是,許多訓練示例使用的是全局變量,而我最初的提示是將變量屬性定義為作用于單個類,這通常是更好的做法。最終我不得不放棄,順其大流,將我的變量聲明為全局變量。
當前,在由我的提示返回的代碼中,有80%都能產生可行的《乒乓球》游戲。有時游戲完全不能玩,有時能產生游戲,但不太像《乒乓球》,例如,擋板不僅上下移動,有時還能左右移動。有時是兩個人來玩,有時是一人與機器對抗。由于提示中未做指定,因此Codex會采用兩個選項之一。與機器對抗時,很想看看Codex如何實施這部分代碼邏輯。
那么,這段代碼的作者是誰?當然,其中存在一些法律爭議,例如,該代碼如何獲取許可?因為許多訓練集都基于開源軟件,相關軟件對由此衍生的代碼規定了特定的許可條件。但對于作者,許可權和所有權是分開的,關于所有權,我認為應屬于使用AI工具并驗證結果的程序員,這就像你使用某公司制作的繪畫程序,使用了公司的畫筆和濾鏡,創作了一件藝術作品。
至于我的項目,下一步將研究更復雜的游戲,比如1986年推出后風靡一時的街機游戲《打磚塊》,有人知道嗎?
審核編輯 :李倩
-
人工智能
+關注
關注
1799文章
47959瀏覽量
241172 -
樹莓派
+關注
關注
117文章
1711瀏覽量
105983 -
深度學習
+關注
關注
73文章
5523瀏覽量
121702
原文標題:?掌上樹莓派Pico W能自己編寫游戲。
文章出處:【微信號:CloudBrain-TT,微信公眾號:云腦智庫】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
deepin 23+樹莓派讓小車動起來

樹莓派傳感器使用方法 樹莓派 Raspberry Pi 4優缺點
Raspberry Pi Pico 2 W 發布

評論