0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

​掌上树莓派Pico W能自己编写游戏

QuTG_CloudBrain 来源:云脑智库 2023-05-05 14:32 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

《乒乓球》游戏无限量。

当前,人们对设计用于帮程序员编写软件的人工智能AI)工具非常感兴趣。GitHub的Copilot和亚马逊的CodeWhisperer通过对深度学习技术进行调整,可以生成源代码。最初开发该技术是为了生成自然语言文本。其理念是,程序员可以将这些工具作为一种强有力的自动完成方法,使用提示来生成代码块,开发人员将代码块集成到自己的软件中。

看着这些工具时,我想知道:我们能否再进一步,无需程序员参与?能不能只是按一下按钮,即可完成一段可运行程序的编写和部署?

我的日常工作是为微控制器编写嵌入式软件,因此我立刻想到了将一个独立的手持设备用作演示平台。借助一个屏幕和几个控件,用户将能够与简单的AI生成软件进行交互。无限量《乒乓球》(Pong)游戏的概念由此诞生。

我选择《乒乓球》游戏有几个原因。该游戏的玩法很简单,雅达利最初的1972年《乒乓球》街机机箱上是这样解释的:“要取得高分,就避免丢球。”只要一个向上的按钮和一个向下的按钮就可以玩这个游戏了。《乒乓球》与20世纪70年代和80年代打造的许多经典雅达利游戏一样,仅需编写较少的几行代码,已经作为编程练习题目实现了很多很多次。这意味着在AI工具训练数据的源代码资源库中有丰富的《乒乓球》游戏示例,这就提高了获得可行结果的可能性。

1e29dca8-eb0d-11ed-90ce-dac502259ad0.jpg

我使用了一台售价6美元的树莓派Pico W作为手持设备的核心,借助它的内置无线功能,可以直接连接基于云端的AI工具。为此,我安装了一个售价9美元的Pico LCD 1.14显示模块。它的240×135彩色像素足够用于《乒乓球》游戏,而且该模块集成了两个按钮和一个双轴微型操纵杆

1e403f52-eb0d-11ed-90ce-dac502259ad0.jpg

我为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来玩《乒乓球》游戏;该网站有我的容器和提示代码。)

1e48b308-eb0d-11ed-90ce-dac502259ad0.jpg

AI返回大约300行代码。在我早期的尝试中,代码无法显示游戏,因为我的模块使用的MicroPython帧缓冲(framebuffer)库版本与训练OpenAI Codex的帧缓冲库不同。解决方案是添加提示注释,描述我的库所使用的方法,例如“de f rectangle (self, x, y, w, h, c)”。另一个问题是,许多训练示例使用的是全局变量,而我最初的提示是将变量属性定义为作用于单个类,这通常是更好的做法。最终我不得不放弃,顺其大流,将我的变量声明为全局变量。

当前,在由我的提示返回的代码中,有80%都能产生可行的《乒乓球》游戏。有时游戏完全不能玩,有时能产生游戏,但不太像《乒乓球》,例如,挡板不仅上下移动,有时还能左右移动。有时是两个人来玩,有时是一人与机器对抗。由于提示中未做指定,因此Codex会采用两个选项之一。与机器对抗时,很想看看Codex如何实施这部分代码逻辑。

那么,这段代码的作者是谁?当然,其中存在一些法律争议,例如,该代码如何获取许可?因为许多训练集都基于开源软件,相关软件对由此衍生的代码规定了特定的许可条件。但对于作者,许可权和所有权是分开的,关于所有权,我认为应属于使用AI工具并验证结果的程序员,这就像你使用某公司制作的绘画程序,使用了公司的画笔和滤镜,创作了一件艺术作品。

至于我的项目,下一步将研究更复杂的游戏,比如1986年推出后风靡一时的街机游戏《打砖块》,有人知道吗?

审核编辑 :李倩

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 人工智能
    +关注

    关注

    1813

    文章

    49734

    浏览量

    261424
  • 树莓派
    +关注

    关注

    122

    文章

    2069

    浏览量

    109665
  • 深度学习
    +关注

    关注

    73

    文章

    5590

    浏览量

    123892

原文标题:​掌上树莓派Pico W能自己编写游戏。

文章出处:【微信号:CloudBrain-TT,微信公众号:云脑智库】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    树莓Pico上运用不同的并行化手段

    树莓Pico由RP2040微控制器驱动,其上搭载两个CPU核,这让它非常适合探索并行计算。本文通过真实的数字信号处理样例来说明从双核架构中提取最大价值的方法和考量。
    的头像 发表于 08-29 09:51 3518次阅读
    在<b class='flag-5'>树莓</b><b class='flag-5'>派</b><b class='flag-5'>Pico</b>上运用不同的并行化手段

    如何使用树莓与OpenCV实现面部和运动追踪的云台系统?

    大家好,这是一个树莓和OpenCV的连载专题。使用树莓与OpenCV实现姿态估计和面部特征点追踪使用树莓
    的头像 发表于 08-14 17:45 955次阅读
    如何使用<b class='flag-5'>树莓</b><b class='flag-5'>派</b>与OpenCV实现面部和运动追踪的云台系统?

    树莓5上开启YOLO姿态估计识别之旅!

    AIHat+上|如何编写自定义Python代码YOLO姿态估计在树莓AIHat+上|编写自定义Python代码今天是第二部分:树莓
    的头像 发表于 07-18 15:31 1987次阅读
    在<b class='flag-5'>树莓</b><b class='flag-5'>派</b>5上开启YOLO姿态估计识别之旅!

    树莓5上使用YOLO进行物体和动物识别-入门指南

    AIHat+上|如何编写自定义Python代码YOLO姿态估计在树莓AIHat+上|编写自定义Python代码今天是第一部分:在树莓
    的头像 发表于 07-17 17:16 1559次阅读
    在<b class='flag-5'>树莓</b><b class='flag-5'>派</b>5上使用YOLO进行物体和动物识别-入门指南

    树莓6 传闻:发布日期与规格!

    每当我想再为我的收藏增添一款树莓时,总会在是立即购买还是等待硬件更强大的下一代之间犹豫不决。但新树莓型号的发布往往容易被错过,尤其是在你的信息流被病毒式传播的猫咪视频占据时。因此,
    的头像 发表于 07-11 16:21 1336次阅读
    <b class='flag-5'>树莓</b><b class='flag-5'>派</b>6 传闻:发布日期与规格!

    20个任何人都能完成的树莓酷炫项目!

    不知道如何利用你买的树莓?这个小设备真的当台式电脑用吗?当服务器吗?当广播电台吗?当然可以!为了帮助你入门,我们精心挑选了这份
    的头像 发表于 07-03 17:10 2977次阅读
    20个任何人都能完成的<b class='flag-5'>树莓</b><b class='flag-5'>派</b>酷炫项目!

    树莓复古游戏,你会选哪一个?

    复古游戏树莓单板计算机的组合十分常见。在树莓项目列表中,几乎都会包含至少一个复古游戏项目。
    的头像 发表于 06-16 16:56 812次阅读
    <b class='flag-5'>树莓</b><b class='flag-5'>派</b>复古<b class='flag-5'>游戏</b>,你会选哪一个?

    树莓分类器:用树莓识别不同型号的树莓

    在本教程系列的第一部分中,您将学习如何使用树莓AI摄像头来检测不同的树莓型号。本系列由DavidPlowman创建,他是树莓
    的头像 发表于 06-13 16:39 982次阅读
    <b class='flag-5'>树莓</b><b class='flag-5'>派</b>分类器:用<b class='flag-5'>树莓</b><b class='flag-5'>派</b>识别不同型号的<b class='flag-5'>树莓</b><b class='flag-5'>派</b>!

    用 Lakka 和 树莓 打造终客厅游戏机!

    尽管现代树莓单板计算机(SBC)的规格有了大幅提升,但它们的性能仍不足以在4K分辨率下以60帧每秒(FPS)的速度运行3A级PC游戏。不过,那些老派游戏——尤其是为老式
    的头像 发表于 05-27 15:35 702次阅读
    用 Lakka 和 <b class='flag-5'>树莓</b><b class='flag-5'>派</b> 打造终客厅<b class='flag-5'>游戏</b>机!

    树莓“吉尼斯世界记录”:将树莓的性能发挥到极致的项目!

    树莓是一款功能强大、体积小巧且高度可定制的设备,多年来,我们见证了它被应用于众多领域。无论是将其装入3D打印的经典游戏机外壳,还是简单地将它隐藏起来作为家庭文件服务器,我们都报道过在社区里用
    的头像 发表于 05-22 16:53 1198次阅读
    <b class='flag-5'>树莓</b><b class='flag-5'>派</b>“吉尼斯世界记录”:将<b class='flag-5'>树莓</b><b class='flag-5'>派</b>的性能发挥到极致的项目!

    树莓 Zero 打造的智能漫游车!

    使用PXFMini和树莓Zero打造您自己的自主漫游车。本项目所用组件硬件组件ErleRoboticsPXFmini×1树莓Zero×1
    的头像 发表于 05-13 16:39 866次阅读
    用 <b class='flag-5'>树莓</b><b class='flag-5'>派</b> Zero 打造的智能漫游车!

    基于XIAO RP2040和树莓的围棋棋盘游戏系统设计

    今天小编给大家带来的是来自mocketech的基于树莓和XIAO RP2040的围棋棋盘娱乐系统,每块围棋石都会根据其状态显示面部表情,从而便于评估整体比赛情况。即使是不熟悉围棋规则的人也可以通过这些表情轻松理解游戏。 灵感
    的头像 发表于 04-29 14:01 1099次阅读
    基于XIAO RP2040和<b class='flag-5'>树莓</b><b class='flag-5'>派</b>的围棋棋盘<b class='flag-5'>游戏</b>系统设计

    别再用钥匙啦!树莓Pico教你用RFID“刷”门禁~

    获得读卡器,再搭配4美元的树莓Pico,即可读取卡片/标签的ID信息。在本教程中,我们将学习如何使用MFRC522读卡器和树莓
    的头像 发表于 04-23 16:03 1147次阅读
    别再用钥匙啦!<b class='flag-5'>树莓</b><b class='flag-5'>派</b><b class='flag-5'>Pico</b>教你用RFID“刷”门禁~

    树莓 Pico 2040 的“速度狂飙”:时钟速度几乎翻倍!

    树莓Pico2040的“超能力”升级如果你手头有一个树莓Pico2040,但总觉得它的性能还
    的头像 发表于 03-25 09:25 919次阅读
    <b class='flag-5'>树莓</b><b class='flag-5'>派</b> <b class='flag-5'>Pico</b> 2040 的“速度狂飙”:时钟速度几乎翻倍!

    deepin 23+树莓让小车动起来

    。     硬件准备 以下是所需的硬件清单,看看自己都备齐了吗? 树莓 4b 智能小车底盘 双层圆盘(两轮附带电机、电池盒) Type-C 接口 5V 锂电池(给树莓
    的头像 发表于 02-12 09:12 1321次阅读
    deepin 23+<b class='flag-5'>树莓</b><b class='flag-5'>派</b>让小车动起来