让豆包MarsCode 写一个贪吃蛇游戏不过分吧,我负责CV就行 原创

micro:bit 5x5点阵屏玩迷宫、俄罗斯方块、贪食蛇 microbit点阵屏玩迷宫、贪食蛇、俄罗斯方块游戏 阅读详情

作者:末世未然

贪吃蛇的游戏想必大家都听过也都玩过,今天要给大家展示的是如何利用豆包MarsCode 制作一款属于自己的贪吃蛇小游戏,话不多说,往下看看吧~

生成的代码如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Snake Game</title>
    <style>
        #game-board {
            width: 400px;
            height: 400px;
            border: 1px solid #000;
            display: flex;
            flex-wrap: wrap;
        }
       .cell {
            width: 20px;
            height: 20px;
            border: 1px solid #000;
        }
       .snake {
            background-color: #00FF00;
        }
       .food {
            background-color: #FF0000;
        }
    </style>
</head>
<body>
    <div id="game-board"></div>
    <button onclick="startGame()">Start</button>
    <button onclick="pauseGame()">Pause</button>
    <button onclick="resetGame()">Reset</button>
    <script src="game.js"></script>
</body>
</html>
let gameBoard = document.getElementById('game-board');
let boardSize = 20; // 游戏区域大小
let snake = [{ x: 10, y: 10 }]; // 蛇的初始位置
let food = { x: 5, y: 5 }; // 食物的初始位置
let direction = 'right'; // 初始方向
let isGamePaused = false; // 游戏是否暂停
let gameInterval; // 游戏定时器

// 在游戏区域创建单元格
for (let i = 0; i < boardSize * boardSize; i++) {
    let cell = document.createElement('div');
    cell.className = 'cell';
    gameBoard.appendChild(cell);
}

// 开始游戏
function startGame() {
    if (gameInterval) {
        clearInterval(gameInterval);
    }
    isGamePaused = false;
    gameInterval = setInterval(updateGame, 200); // 更新游戏状态的时间间隔
}

// 暂停游戏
function pauseGame() {
    isGamePaused = true;
}

// 重置游戏
function resetGame() {
    clearInterval(gameInterval);
    snake = [{ x: 10, y: 10 }];
    food = { x: 5, y: 5 };
    direction = 'right';
    updateGame();
}

// 更新游戏状态
function updateGame() {
    if (isGamePaused) {
        return;
    }
    
    // 移动蛇
    let newHead = { x: snake[0].x, y: snake[0].y };
    switch (direction) {
        case 'up':
            newHead.y--;
            break;
        case 'down':
            newHead.y++;
            break;
        case 'left':
            newHead.x--;
            break;
        case 'right':
            newHead.x++;
            break;
    }
    
    // 检查是否吃到食物
    if (newHead.x === food.x && newHead.y === food.y) {
        food = { x: Math.floor(Math.random() * boardSize), y: Math.floor(Math.random() * boardSize) };
    } else {
        snake.pop();
    }
    
    // 检查游戏是否结束
    if (isCollision(newHead) || newHead.x < 0 || newHead.x >= boardSize || newHead.y < 0 || newHead.y >= boardSize) {
        clearInterval(gameInterval);
        alert('Game Over!');
        return;
    }
    
    // 添加新头部
    snake.unshift(newHead);
    
    // 更新游戏界面
    renderGame();
}

// 检查是否碰撞
function isCollision(head) {
    return snake.some(segment => segment.x === head.x && segment.y === head.y);
}

// 渲染游戏界面
function renderGame() {
    let cells = document.getElementsByClassName('cell');
    for (let i = 0; i < cells.length; i++) {
        cells[i].classList.remove('snake', 'food');
    }
    
    snake.forEach(segment => {
        let cellIndex = segment.y * boardSize + segment.x;
        cells[cellIndex].classList.add('snake');
    });
    
    let foodIndex = food.y * boardSize + food.x;
    cells[foodIndex].classList.add('food');
}

// 监听键盘事件改变方向
document.addEventListener('keydown', function(event) {
    switch (event.keyCode) {
        case 37: // 左箭头
            if (direction!== 'right') {
                direction = 'left';
            }
            break;
        case 38: // 上箭头
            if (direction!== 'down') {
                direction = 'up';
            }
            break;
        case 39: // 右箭头
            if (direction!== 'left') {
                direction = 'right';
            }
            break;
        case 40: // 下箭头
            if (direction!== 'up') {
                direction = 'down';
            }
            break;
    }
});

运行完代码后,效果是这样的:

咱再录个屏看看效果如何:

加了一行代码,布局看着正常了:

然后重新玩了一下游戏:

游戏逻辑也没毛病了, 豆包MarsCode 还真是蛮准确的。

至此,贪吃蛇游戏已经完成了,可以开始摸鱼坐等下班了。

但是作为一篇参赛文章,这么草草结束是不可以滴!再继续折腾下豆包MarsCode 吧,我们发现贪吃蛇的头很难被分辨,于是我问豆包MarsCode,蛇头用另一种颜色区分:
 

在刚刚生成的代码中, 豆包MarsCode竟然自己加上了box-sizing: border-box!!!不得不感叹 AI 的学习能力,不过下面的 js 让我有点头大,这个 updateSnake 方法之前没有,且仅给我部分代码,这让我很难办啊,我是只会 CV 的小菜鸡啊,小菜鸡本着能 AI 来就不可能自己动手的原则,于是咱又问豆包MarsCode,选中的代码中我要加入蛇头采用不一样颜色的逻辑(这次我是选中代码块问的):

很好,我补上这段逻辑之后,出问题了,身子的颜色也变成头的颜色了:

直接问问豆包MarsCode 咋回事?

按照豆包MarsCode 给的代码修改后,蛇的身子颜色正常了:

 总体玩下来,咱好像就一开始动了一点小脑筋,自己加了一个 box-sizing,现在我后悔了,应该叫豆包MarsCode 自己解决的!

AI对程序员的影响是深远的,它既带来了自动化和效率提升的机遇,也带来了技能需求变化和工作角色转变的挑战。为了应对这些影响,程序员应该保持持续学习的心态,掌握AI技术,关注行业动态,并强化自己的软技能。

好了,今天的分享就到这,最后贴一个彩蛋:

酷!用豆包MarsCode 写了一个五子棋小游戏 2017 年,当时大学三本毕业前端工作一年,去深圳找工作面试,在拉勾上海投,接到某公司前端开发团队回复询问邮箱账号,喜滋滋的以为可以有面试了。一看邮箱,抛给我一道面试题,写完发到对方邮箱。。编写一个单机五子棋,用原生 web 技术实现,完成时间不作限制。实现胜负判断,并给出赢棋提示。实现悔棋和撤销悔棋功能。可使用 DOM/ Canvas 实现。当年没有实现,现在有了 AI 编程助手,弥补这个遗憾吧~ 阅读详情

相关推荐

snake贪吃蛇游戏

1.贪吃蛇游戏 技术:C++编程 ncurses编程 linux系统编程 2.游戏玩法 1.绘制蛇 2.绘制食物 1.蛇移动 2.吃食物 3.蛇咬自己 4.蛇撞墙 3.游戏设计:

使用豆包MarsCode 编写 Node.js 全栈应用开发实践

​ 以下是「豆包MarsCode 体验官」优秀文章,作者狼叔。 欢迎更多用户使用豆包MarsCode 并分享您的产品使用心得及反馈、创意项目开发等,【有奖征集|人人都是豆包MarsCode 测评官!】活动正在火热进行中,欢迎大家投稿参加,惊喜大礼等着大家! ​

DouBaoMarsCode的博客 3101

Voltus功耗分析——读入Innovus数据/cpf/spef文件

检查的内容:物理库、时序库、网表、I/Os、tie-high&tie-low pins、电源/地pins。设计数据(LEF/DEF/netlist)、cpf文件、SPEF文件。方法二:定义每个 power/ground net's 电压。4.设计数据检查(design sanity check)方法一:读入.dat数据。方法二:读入def文件。方法一:读入CPF文件。

qq_44347276的博客 3983

用AI在5分钟内编个贪吃蛇游戏

不需要写一行代码,就能写游戏

992

在 Windows 10 中通过 WSL2 安装 vLLM 部署本地大模型的方法和步骤

通过 WSL2 在 Windows 10 中部署 vLLM 的核心优势是兼顾 Windows 生态与 Linux 环境的 GPU 加速能力,适合需要在 Windows 下开发但依赖 vLLM 高性能推理的场景。相比原生 Windows 部署(Ollama 等工具),该方案性能更优(接近原生 Ubuntu),且支持更大模型和量化优化。若追求极致性能,建议直接使用 Ubuntu 系统;若必须依赖 Windows 工具链,WSL2 + vLLM 是当前最优选择。

当 AI 开始写文章、绘星空,甚至预测未来,您还在旁观吗?这里将剖开人工智能的思考逻辑,拆解 AI 创作的底层密码,也聊聊人工智能里的人文温度。每篇都有让你拍案的细节,快来解锁 AI 时代的神奇世界! 3753

Android音频混音器AudioMixer实战:从多路输入到设备播放的完整流程解析

本文深入解析了Android平台上音频混音器AudioMixer的完整工作流程,涵盖从多路音频输入、轨道创建与配置、AudioBufferProvider数据源接入,到核心混音处理与最终设备播放的全过程。文章重点探讨了如何高效管理音频数据流、配置音量与重采样参数,并提供了缓冲区管理与性能优化的实战技巧,帮助开发者构建稳定、低延迟的音频应用。

l3m4n的博客 342

豆包编程真奇妙,玩法直击HTML~

一键可视化,轻松写代码,用这几个简单的方法就能生成HTML网页,快来豆包AI编程体验吧!

weixin_53260296的博客 2423

国产大模型编程能力深度分析报告(2026年5月更新版)

2026年5月国产大模型编程能力报告显示,主流模型迎来重大升级。DeepSeek V4以1.6T参数创性能新高,Qwen3.6-Plus支持原生多模态编程,MiniMax M2.7转向闭源并优化Agent编码,Kimi K2.6成为商业化成熟的主力模型,GLM-5开源并涨价30%。阿里云百炼推出双轨订阅体系,区分团队和个人开发者需求。各模型在参数规模、上下文长度、性能表现和适用场景上各具优势,国产AI编程服务正加速向订阅制转型,成本效益显著提升。

Willin Wang 的全栈升级指南 1647

程序员最强辅助——‘‘豆包Marscode” Apply功能上线爽爆了!一键生成贪吃蛇游戏!

作为一个程序猿,大家是不是跟我一样:每当程序出现bug想寻求AI帮助时,都要将一大段程序全部复制下来并写出我的需求。如此麻烦繁琐,有时还会出现驴头不对马尾的现象。有同学说了,使用Copilot呀~可以是可以,但是他每个月10$的价格真的很不美妙!于是,众望所致——Marscode应运而生!可谓不是copilot用不起,而MarsCode更有性价比!!豆包 Marscode由深耕人工智能领域、技术实力强大的字节跳动开发,旨在满足人们在信息获取、内容创作、技术支持等多方面需求。

爱因斯晨的博客 4023

IGBT模块封装中的银烧结技术:为什么特斯拉和比亚迪都在用这种黑科技?

本文深入解析了IGBT模块封装中的银烧结技术,揭示了其作为功率半导体封装工艺关键升级的原因。该技术通过低温烧结形成高熔点、高导热导电的银连接层,显著提升了模块的功率循环寿命、散热能力和高温工作稳定性,这正是特斯拉、比亚迪等行业巨头采用此项黑科技以释放电动汽车电驱系统极致性能的核心所在。

yhn4567890的博客 833

低代码Agent开发框架使用指南(二)—Coze平台核心功能概览

本篇分享系统介绍了字节跳动推出的低代码智能体开发平台Coze。Coze以免费易用、多模型支持和便捷的跨平台发布为核心优势,显著降低了智能体开发门槛。文章详细解析了平台的六大核心功能:扩展能力边界的插件系统、增强认知的知识库、结构化数据管理的数据库、可视化图像处理的图像流、实现复杂逻辑编排的工作流,以及处理复杂任务的多智能体协作机制,全面展现了Coze平台的强大能力。

weixin_42782643的博客 1358

使用豆包Marscode编写贪吃蛇小游戏

本项目旨在实现一个现代化、可扩展的贪吃蛇游戏,结合前端技术和用户交互设计,提升游戏体验,并允许用户自定义游戏参数,如速度、分数显示等。通过使用HTML、CSS和JavaScript技术,本项目成功实现了一个简单且可互动的贪吃蛇游戏,提供了基本的游戏玩法和自定义选项。随着技术的进一步发展,本游戏可进一步优化,加入更多创新功能如AI对战和排行榜系统,提升玩家的整体体验。虽然目前贪吃蛇游戏的设计没有直接涉及人工智能(AI),但未来可以通过引入AI技术进一步改进游戏的体验。

Foolbird123的博客 864

手把手学计科--web网页设计

网页的组成:文字、图像和超链接等元素。还可以包括哦音频、视频和动画。分类:静态(固定信息)和动态(与服务器数据库进行实时的数据交换。HTML和CSS 是一种静态网页搭建技术。

Yhvaely的博客 1748

【玩转canvas+MarsCode AI】手把手教你实现五子棋小游戏

文章主要介绍了使用 canvas 和 MarsCode AI 实现五子棋小游戏的过程。先介绍了 MarsCode 编程助手的功能和使用方法,以及 canvas 的基本概念。然后详细阐述了五子棋小游戏的开发步骤,包括明确需求、设计界面、初始化棋盘、处理用户输入、玩家切换机制、胜负判定逻辑等,还列举了相关代码示例,最后总结了开发过程及 MarsCode AI 的作用。

静Yu的博客 7661

使用 Python 爬取 Wikipedia 数据:抓取百科条目及其内容

维基百科的 API 提供了一些方便的接口,通过这些接口,我们可以轻松获取到维基百科的条目、类别、图片和其他相关信息。维基百科的 API 主要是基于 HTTP 请求的,通过向特定的 URL 发送 GET 请求来获取信息。:获取指定条目的内容。在本博客中,我们介绍了如何使用 Python 爬取维基百科的条目数据。通过使用 Wikipedia API 和网页抓取技术,我们能够高效地获取条目内容,并将其存储和分析。希望本篇教程能帮助你深入理解如何抓取和处理维基百科的数据。

2201_76125261的博客 475

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

爷青回系列!豆包MarsCode 助我实现打地鼠自由!

以在 Visual Studio Code 中为例,需要先打开 VSCode 扩展窗口,在搜索框搜索MarsCode,找到豆包MarsCode 后单击 「install」,完成安装,登录后即可使用豆包MarsCode 编程助手。可以看到如下图所示,豆包MarsCode 已经帮我们生成了打地鼠的基础样式。进行到这一步我们成功完善了地鼠的显示逻辑,现在为点击动作添加游戏反馈。现在游戏已经得到进一步完善,接下来需要我们继续完善地鼠的显示逻辑~到这里我们的打地鼠游戏就大功告成~获得了文章首页游戏的效果👇。

DouBaoMarsCode的博客 1115

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

Android AI大模型WebSocket内容渲染【GPT、豆包、kimi】,支持markdown。支持代码块,具体代码块内容有需求的可以给我发邮箱或者私信wuyueyueai@vip.qq.com

【代码】Android AI大模型WebSocket内容渲染【GPT、豆包、kimi】,支持markdown。支持代码块,具体代码块内容有需求的可以给我发邮箱或者私信wuyueyueai@vip.qq.com。

maziqiang1993的专栏 1356

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

【运营豆包MarsCode玩转Java】一个从0-1深度探索—编程碰撞秘密的空间

同时,可以利用 Java 的类库来开发各种类型的应用程序,如桌面应用程序、Web 应用程序、移动应用程序等。除了IntelliJ IDEA和Eclipse,还有许多其他的IDE,如Visual Studio Code、NetBeans等,它们都提供了类似的功能和工具。IntelliJ IDEA 是一个流行的Java集成开发环境,它提供了丰富的功能和工具,以提高开发效率。循环,让用户不断输入猜测的数字,并根据用户的猜测给出相应的提示,直到猜对为止。:这是 Java 程序的入口点,程序从这里开始执行。

weixin_71202655的博客 1052

使用 Vue 配合豆包MarsCode 实现“小恐龙酷跑“小游戏

豆包MarCode着实能够为我们节省大量的开发时间。有 bug 时,可以先让它进行检查;面对功能点需求时,也能让它先生成代码给我们试试,看看它的思路。不过,它生成的代码或许并不完全符合我们的预期,此时我们需要添加更为详细的描述,或者换种思路的代码让它再试试。AI 在算法和逻辑方面表现得极为强大,但在具体功能实现方面,当我们参考它生成的代码时,仍需进行一定的调整。最后,希望咱们的豆包MarCode在未来的发展道路上能够稳中求进,不断完善,为用户带来更多的惊喜与便利。

DouBaoMarsCode的博客 1664

python编程游戏代码大全,python最简单游戏代码

大家好,小编来为大家解答以下问题,20行python代码的入门级小游戏,python编程游戏代码大全,现在让我们一起来看看吧!大家好,我是James条。今天给大家带来30个py小游戏,一定要收藏! 全部源码都整理好了,在文章最底部~【有手就行系列不介绍玩法了+附源码】源码分享: 2、打乒乓 简简单单【简单介绍一下玩法+附源码】玩法:上下控制起跳躲避玩法:三个相连就能消除玩法:童年经典,普通模式没啥意思,小时候我们都是玩加速的不学c语言能不能学python。玩法:童年经典,普通魔术也没啥意思,小时候玩的

M3666789的博客 5857

豆包MarsCode 蛇年编程大作战-蛇年贺岁刮刮乐

新年总是充满了惊喜与期待,刮刮乐作为一种广受欢迎的互动形式,能为人们带来即时的欢乐和惊喜。借助蛇年这个特殊的时间节点,我希望通过MarsCode实现一个线上的蛇年贺岁刮刮乐,让大家在享受刮奖乐趣的同时,也能感受到蛇年的独特魅力。多次使用MarsCodeMarsCode只是我们的辅助工具,我们需要细化问题描述,将功能拆解,一点点的将积木拼搭。多用“#”,确定上下文,明确要询问的是一个文件一个方法片段还是整个工作区文件。当多次询问无果后,新开一个对话可能会有意外之喜。

qq_57492914的博客 2973

豆包MarsCode 初体验,用React创建一个最经典的贪吃蛇游戏

以下是「体验官」优秀文章,作者Find。

DouBaoMarsCode的博客 975

学习python篇之使用python设计贪吃蛇小游戏

学习python篇之使用python设计贪吃蛇小游戏 需要用到的模块 threading模块 queue模块 time模块 random模块 以下是编写的完整代码 # -*- codeing = utf-8 -*- # @Time : 2021/3/22 13:01 # @Author : 霍義 # @File : tcs.py # @Software : PyCharm __author__ = 'HY' from tkinter import * import threading import qu

HYXRX的博客 478

微软打造复古游戏 MakeCode Arcade改善程序代码编辑麻烦

微软释出MakeCode Arcade,这是一个基于网页且对初学者友善的程序代码编辑器,与平常的MakeCode操作相同,开发者能以模块或是JavaScript,建置网页或是为专有硬件建置复古街机游戏。MakeCode Arcade能让开发者开发出类似过去彩色Gameboy游戏机的游戏,其支持分辨率160x120屏幕,限制同时只能显示16色,开发者可以改变调色盘,支持4声道的复古声音系统,以及共8...

weixin_34366546的博客 3666

第一次实训编写项目——贪吃蛇(codeblocks)

贪吃蛇——实训项目

Cx330_1217的博客 4259
上一篇: 使用 Vue 配合豆包MarsCode 实现“小恐龙酷跑“小游戏
下一篇: 这个 AI 懂 Vue 吗?
TRAE.ai
博客等级 码龄2年 811粉丝 76原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值