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年推出后风靡一时的街机游戏《打砖块》,有人知道吗?

审核编辑 :李倩

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

    关注

    1822

    文章

    50637

    浏览量

    268355
  • 树莓派
    +关注

    关注

    122

    文章

    2086

    浏览量

    111070
  • 深度学习
    +关注

    关注

    73

    文章

    5615

    浏览量

    124885

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

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

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    树莓5还是香橙5 Pro?两款热门开发板的详细对比

    完善的社区支持和成熟的软件生态,且预算允许,树莓5会是比较省心的选择;如果更看重硬件配置和扩展性,且愿意花一些时间自己研究解决问题,香橙5 Pro在同价位上
    发表于 03-04 19:29

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

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

    零成本钢铁侠手套!树莓+OpenCV 秒变手势遥控器!

    大家好,这是一个树莓和OpenCV的连载专题。使用树莓与OpenCV实现姿态估计和面部特征点追踪使用树莓
    的头像 发表于 08-16 16:16 1774次阅读
    零成本钢铁侠手套!<b class='flag-5'>树莓</b><b class='flag-5'>派</b>+OpenCV 秒变手势遥控器!

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

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

    树莓屏幕怎么选?

    树莓很多人都用过,但用屏幕的倒不是很多。不少都是直接远程操作,或者直接接身边的显示设备了。但我觉得给开发板配一个屏幕还是很能提升使用体验的。这次我就介绍一下树莓的屏幕怎么选择。
    的头像 发表于 08-08 14:59 1879次阅读
    <b class='flag-5'>树莓</b><b class='flag-5'>派</b>屏幕怎么选?

    树莓操作系统:版本、特性及设置完整指南!

    树莓操作系统是什么?树莓操作系统是由树莓基金会专为树莓
    的头像 发表于 07-28 18:26 2125次阅读
    <b class='flag-5'>树莓</b><b class='flag-5'>派</b>操作系统:版本、特性及设置完整指南!

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

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

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

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

    树莓打造无人机,你需注意的事项!

    能否将树莓装入无人机?使用树莓打造无人机是可行的。树莓充当无人机的“大脑”,将飞行控制器的
    的头像 发表于 07-14 17:49 2533次阅读
    用<b class='flag-5'>树莓</b><b class='flag-5'>派</b>打造无人机,你需注意的事项!

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

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

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

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

    树莓小技巧:无需键盘或显示器,如何通过WiFi设置树莓

    树莓是一款小巧便携的USB供电计算机,可以隐藏起来用于小型项目,如网络服务器或家庭自动化。通常,设置树莓需要键盘和显示器来编辑和查看树莓
    的头像 发表于 06-26 15:41 2054次阅读
    <b class='flag-5'>树莓</b><b class='flag-5'>派</b>小技巧:无需键盘或显示器,如何通过WiFi设置<b class='flag-5'>树莓</b><b class='flag-5'>派</b>?

    树莓 Zero 2 W 是开启智能家居生活的理想之选!

    想尝试智能家居自动化,又不想花费太多?树莓Zero2W或许正是你开启智能家居之旅所需的理想设备。小板子大潜力想打造一个智能家居?这想法超棒!一旦掌握了技巧,自动化控制灯光、插座、传感器等设备,既有
    的头像 发表于 06-24 16:24 1312次阅读
    <b class='flag-5'>树莓</b><b class='flag-5'>派</b> Zero 2 <b class='flag-5'>W</b> 是开启智能家居生活的理想之选!

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

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

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

    在本教程系列的第一部分中,您将学习如何使用树莓AI摄像头来检测不同的树莓型号。本系列由DavidPlowman创建,他是树莓
    的头像 发表于 06-13 16:39 1752次阅读
    <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>!