没有找到合适的产品?
联系客服协助选型:023-68661681
提供3000多款全球软件/控件产品
针对软件研发的各个阶段提供专业培训与技术咨询
根据客户需求提供定制化的软件开发服务
全球知名设计软件,显著提升设计质量
打造以经营为中心,实现生产过程透明化管理
帮助企业合理产能分配,提高资源利用率
快速打造数字化生产线,实现全流程追溯
生产过程精准追溯,满足企业合规要求
以六西格玛为理论基础,实现产品质量全数字化管理
通过大屏电子看板,实现车间透明化管理
对设备进行全生命周期管理,提高设备综合利用率
实现设备数据的实时采集与监控
利用数字化技术提升油气勘探的效率和成功率
钻井计划优化、实时监控和风险评估
提供业务洞察与决策支持实现数据驱动决策
原创|行业资讯|编辑:何思佳|2025-05-22 10:36:24.220|阅读 58 次
概述:使用 Docker 和 TensorFlow.js 构建 AI 贪吃蛇游戏,不仅是一次技术融合的实践探索,也是前端开发与机器学习模型融合的优秀范例。本文将从容器部署、模型运行到浏览器交互,全流程剖析这一 AI 项目如何实现“即开即用”,为 AI 游戏化应用提供落地思路。
# 界面/图表报表/文档/IDE等千款热门软控件火热销售中 >>
在 AI 与 Web 前端不断融合的背景下,如何让一个具备智能行为的 AI 应用快速上线、跨平台运行,成为开发者关注的重点。我们通过构建一个基于 TensorFlow.js 的贪吃蛇 AI 游戏,借助 Docker Desktop 的最新特性,实现了前端即模型运行环境、即部署平台的闭环体验。这一实践聚焦于两个核心目标:一是探索 AI 游戏智能体的构建与部署流程,二是验证 Docker 在本地 AI 应用开发与交付中的高效性与便捷性。通过容器化方式,整个贪吃蛇 AI 系统可快速运行在任意支持 Docker 的本地环境,真正做到了“即开即用、无需依赖”。
本次应用的核心是构建一个贪吃蛇 AI,通过 TensorFlow.js 实现智能决策模型,再利用 Docker 进行容器化部署。开发者只需克隆代码并运行 Docker 命令,即可在浏览器中体验 AI 驱动的游戏交互。以下是本次应用开发的详细步骤,希望能对您有所启发。
git clone https://github.com/dockersamples/snake-game-tensorflow-docker
小提示:Windows用户建议选择Linux发行版
安装 Docker Desktop 后,运行预先构建的 Docker 镜像,并在命令提示符中执行以下命令。它将拉取镜像并启动一个运行 Snake-game:v1 Docker 镜像的新容器,并在主机上公开 8080 端口。
运行以下命令来启动应用程序:
docker compose up
接下来打开浏览器,访问 http://localhost:8080 查看蛇游戏的输出并开始您的第一个游戏。
index.html file 是游戏的基础,定义了网页的布局和结构。它会获取驱动 AI 的 TensorFlow.js 库,以及用于处理游戏逻辑的 script.js 和用于 AI 动作的 ai.js 。游戏界面简洁实用,配备模式选择器,可让玩家在手动控制(使用箭头键)和 AI 模式之间切换。当 AI 进行训练时,记分牌会动态更新得分、最高分和代数。此外,游戏本身基于 HTML <canvas> 元素运行,使其具有高度的交互性。接下来,我们将探索 JavaScript 文件如何让这款游戏栩栩如生!
文件:index.html
HTML 文件设置了游戏的结构,例如游戏画布和控制按钮。它还从 TensorFlow 获取库,代码将进一步使用该库来训练贪吃蛇。
文件:script.js
该文件处理游戏中的所有事情——绘制棋盘、移动蛇、放置水果和记录分数。
const canvas = document.getElementById('gameCanvas'); const ctx = canvas.getContext('2d'); let snake = [{ x: 5, y: 5 }]; let fruit = { x: 10, y: 10 }; let direction = { x: 1, y: 0 }; let score = 0;
游戏循环使游戏保持运行,更新蛇的位置,检查碰撞并处理分数。
function gameLoopManual() { const head = { x: snake[0].x + direction.x, y: snake[0].y + direction.y }; if (head.x === fruit.x && head.y === fruit.y) { score++; fruit = placeFruit(); } else { snake.pop(); } snake.unshift(head); }
document.getElementById('mode').addEventListener('change', function() { gameMode = this.value; });
文件:ai.js
该文件创建并训练神经网络——学习如何玩贪吃蛇的人工智能大脑!以下三段代码分别为定义神经网络、优化器函数和记住自己的动作并进行自我训练。
var movementOptions = ['left', 'forward', 'right']; const neuralNet = tf.sequential(); neuralNet.add(tf.layers.dense({units: 256, inputShape: [5]})); neuralNet.add(tf.layers.dense({units: 512})); neuralNet.add(tf.layers.dense({units: 256})); neuralNet.add(tf.layers.dense({units: 3}));
const optAdam = tf.train.adam(.001); neuralNet.compile({ optimizer: optAdam, loss: 'meanSquaredError' });
async function trainNeuralNet(moveRecord) { for (var i = 0; i < moveRecord.length; i++) { const expected = tf.oneHot(tf.tensor1d([deriveExpectedMove(moveRecord[i])], 'int32'), 3).cast('float32'); posArr = tf.tensor2d([moveRecord[i]]); await neuralNet.fit(posArr, expected, { batchSize: 3, epochs: 1 }); expected.dispose(); posArr.dispose(); } }
每场比赛结束后,人工智能都会查看发生的情况,调整其内部连接,并尝试在下一场比赛中取得进步。
movementOptions 数组定义了蛇可能的移动方向:“左”、“前”和“右”。
使用学习率为 0.001 的 Adam 优化器编译模型,并指定均方误差损失函数。trainNeuralNet 函数用于使用给定的 moveRecord 数组训练神经网络。该函数迭代 moveRecord 数组,为预期运动创建独热编码张量,并使用TensorFlow.js 的 fit 方法训练模型。
在玩游戏时,人工智能会预测最佳动作应该是什么。
function computePrediction(input) { let inputs = tf.tensor2d([input]); const outputs = neuralNet.predict(inputs); return movementOptions[outputs.argMax(1).dataSync()[0]]; }
下面介绍如何使用 Docker 设置贪吃蛇游戏的开发环境!
为了使开发更加顺畅,您可以使用 Docker Volumes 来避免每次更改游戏文件时重建 Docker 镜像。从 Snake-AI-TensorFlow-Docker 代码所在的文件夹运行命令:
docker run -it --rm -d -p 8080:80 --name web -v ./:/usr/share/nginx/html nginx
使用以下命令检查容器是否正在运行
harsh@Harshs-MacBook-Air snake-game-tensorflow-docker % docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES c47e2711b2db nginx "/docker-entrypoint.…" 3 seconds ago Up 2 seconds 0.0.0.0:8080->80/tcp web
打开浏览器并访问 http://localhost:8080,您将看到贪吃蛇游戏的输出。这种设置非常适合开发,因为它可以保持一切快速且动态。
从模型训练、容器部署到浏览器推理,贪吃蛇 AI 系统的实现过程不仅是一次完整的端到端 AI 应用落地探索,也展示了 Docker Desktop 与 TensorFlow.js 在轻量级 AI 开发中的协同潜力。这种“浏览器即平台”的方式,使得 AI 不再是高门槛、依赖后端的大型工程,而是可以作为 Web 模块,灵活嵌入到任意系统中运行。对于教育、演示、开发者工具以及交互式内容平台而言,这是一种更轻巧、更可控的 AI 应用路径,也为 Web AI 模型的快速部署提供了实际范例。未来,随着 Docker 在 AI 本地推理支持方面的持续进化,这样的“容器+前端AI”组合将释放更多开发与运营可能。
慧都科技是专注软件工程、智能制造、石油工程三大行业的数字化解决方案服务商。在软件工程领域,我们提供开发控件、研发管理、代码开发、部署运维等软件开发全链路所需的产品,提供正版授权采购、技术选型、个性化维保等服务,帮助客户实现技术合规、降本增效与风险可控。
慧都科技是Docker的中国区的合作伙伴,Docker作为DevOps部署领域的优秀产品,帮助企业通过容器化技术实现应用的快速构建。
本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@evget.com
嵌入式软件测试工具Parasoft C/C++test 聚焦高可靠性系统开发,提供核心能力三重保障:在编码阶段左移拦截缺陷降低修复成本;自动检查MISRA/CERT/AUTOSAR等安全标准确保合规性;AI智能测试动态优化用例覆盖深度。三者协同构建嵌入式软件质量防护体系,适用于车载、航天等安全关键领域。
企业级软件测试方案Parasoft C/C++test通过预置模板实现快速落地,利用 Docker 镜像固化测试环境确保一致性,并借助一键式集成能力简化复杂流程。帮助团队实现无缝协作与高效交付,避免陷入重复的配置与调试泥潭。
企业级软件测试方案Parasoft dotTEST通过聚合所有质量实践数据,提供一站式质量视图,帮助团队高效识别风险、优化流程,并加速高质量软件的交付。
本文将为大家介绍SciChart在助力蛋白质结构研究中发挥的作用,欢迎下载最新版组件体验~
服务电话
重庆/ 023-68661681
华东/ 13452821722
华南/ 18100878085
华北/ 17347785263
客户支持
技术支持咨询服务
服务热线:400-700-1020
邮箱:sales@evget.com
关注我们
地址 : 重庆市九龙坡区火炬大道69号6幢
慧都科技 版权所有 Copyright 2003-
2025 渝ICP备12000582号-13 渝公网安备
50010702500608号