首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Power BI 玩贪食蛇游戏

Power BI 玩贪食蛇游戏

作者头像
wujunmin
发布于 2025-03-24 11:25:15
发布于 2025-03-24 11:25:15
9700
代码可运行
举报
文章被收录于专栏:wujunminwujunmin
运行总次数:0
代码可运行

使用AI设计了一个适配Power BI的贪食蛇游戏:

原理是HTML+CSS+JS,把下方度量值放到HTML Content视觉对象,点击开始,按上下左右就可以开玩了。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
贪食蛇 = 
"<head>
    <meta charset='UTF-8'>
    <meta name='viewport' content='width=device-width, initial-scale=1.0'>
    <title>贪食蛇游戏</title>
    <style>
        body {
            display: flex;
            flex-direction: column;
            align-items: center;
            justify-content: center;
            height: 100vh;
            margin: 0;
            background-color: #f0f0f0;
            font-family: Arial, sans-serif;
        }
        
        #game-container {
            position: relative;
            margin-bottom: 20px;
        }
        
        #game-board {
            border: 2px solid #333;
            background-color: #fff;
        }
        
        #score {
            font-size: 24px;
            margin-bottom: 10px;
        }
        
        #controls {
            margin-top: 20px;
        }
        
        button {
            padding: 10px 20px;
            font-size: 16px;
            background-color: #4CAF50;
            color: white;
            border: none;
            border-radius: 5px;
            cursor: pointer;
            margin: 0 5px;
        }
        
        button:hover {
            background-color: #45a049;
        }
        
        #game-over {
            position: absolute;
            top: 50%;
            left: 50%;
            transform: translate(-50%, -50%);
            background-color: rgba(0, 0, 0, 0.8);
            color: white;
            padding: 20px;
            border-radius: 10px;
            text-align: center;
            display: none;
        }
    </style>
</head>
<body>
    <h1>贪食蛇游戏</h1>
    <div id='score'>分数: 0</div>
    <div id='game-container'>
        <canvas id='game-board' width='400' height='400'></canvas>
        <div id='game-over'>
            <h2>游戏结束!</h2>
            <p>你的最终得分: <span id='final-score'>0</span></p>
            <button id='restart-btn'>重新开始</button>
        </div>
    </div>
    <div id='controls'>
        <button id='start-btn'>开始游戏</button>
        <button id='pause-btn'>暂停</button>
    </div>
    <script>
        // 获取画布和上下文
        const canvas = document.getElementById('game-board');
        const ctx = canvas.getContext('2d');
        
        // 游戏参数
        const gridSize = 20;
        const gridWidth = canvas.width / gridSize;
        const gridHeight = canvas.height / gridSize;
        let score = 0;
        let gameSpeed = 150; // 毫秒
        let gameInterval;
        let isPaused = false;
        let isGameOver = false;
        
        // 蛇的初始状态
        let snake = [
            {x: 5, y: 5}
        ];
        let direction = 'right';
        let nextDirection = 'right';
        
        // 食物位置
        let food = generateFood();
        
        // 生成食物
        function generateFood() {
            let newFood;
            let foodOnSnake;
            
            do {
                foodOnSnake = false;
                newFood = {
                    x: Math.floor(Math.random() * gridWidth),
                    y: Math.floor(Math.random() * gridHeight)
                };
                
                // 检查食物是否在蛇身上
                for (let segment of snake) {
                    if (segment.x === newFood.x && segment.y === newFood.y) {
                        foodOnSnake = true;
                        break;
                    }
                }
            } while (foodOnSnake);
            
            return newFood;
        }
        
        // 绘制游戏
        function draw() {
            // 清空画布
            ctx.fillStyle = '#fff';
            ctx.fillRect(0, 0, canvas.width, canvas.height);
            
            // 绘制蛇
            ctx.fillStyle = '#4CAF50';
            for (let segment of snake) {
                ctx.fillRect(segment.x * gridSize, segment.y * gridSize, gridSize, gridSize);
            }
            
            // 绘制蛇头
            ctx.fillStyle = '#388E3C';
            const head = snake[0];
            ctx.fillRect(head.x * gridSize, head.y * gridSize, gridSize, gridSize);
            
            // 绘制食物
            ctx.fillStyle = '#F44336';
            ctx.fillRect(food.x * gridSize, food.y * gridSize, gridSize, gridSize);
            
            // 绘制网格线
            ctx.strokeStyle = '#f0f0f0';
            ctx.lineWidth = 1;
            
            // 垂直线
            for (let x = 0; x <= canvas.width; x += gridSize) {
                ctx.beginPath();
                ctx.moveTo(x, 0);
                ctx.lineTo(x, canvas.height);
                ctx.stroke();
            }
            
            // 水平线
            for (let y = 0; y <= canvas.height; y += gridSize) {
                ctx.beginPath();
                ctx.moveTo(0, y);
                ctx.lineTo(canvas.width, y);
                ctx.stroke();
            }
        }
        
        // 更新游戏状态
        function update() {
            if (isPaused || isGameOver) return;
            
            // 更新方向
            direction = nextDirection;
            
            // 获取蛇头
            const head = {...snake[0]};
            
            // 根据方向移动蛇头
            switch (direction) {
                case 'up':
                    head.y--;
                    break;
                case 'down':
                    head.y++;
                    break;
                case 'left':
                    head.x--;
                    break;
                case 'right':
                    head.x++;
                    break;
            }
            
            // 检查游戏是否结束
            if (
                head.x < 0 || head.x >= gridWidth ||
                head.y < 0 || head.y >= gridHeight ||
                snake.some(segment => segment.x === head.x && segment.y === head.y)
            ) {
                gameOver();
                return;
            }
            
            // 将新头部添加到蛇身
            snake.unshift(head);
            
            // 检查是否吃到食物
            if (head.x === food.x && head.y === food.y) {
                // 增加分数
                score += 10;
                document.getElementById('score').textContent = `分数: ${score}`;
                
                // 生成新食物
                food = generateFood();
                
                // 加快游戏速度
                if (gameSpeed > 50) {
                    gameSpeed -= 2;
                    clearInterval(gameInterval);
                    gameInterval = setInterval(gameLoop, gameSpeed);
                }
            } else {
                // 如果没有吃到食物,移除尾部
                snake.pop();
            }
        }
        
        // 游戏循环
        function gameLoop() {
            update();
            draw();
        }
        
        // 开始游戏
        function startGame() {
            if (gameInterval) clearInterval(gameInterval);
            
            // 重置游戏状态
            snake = [{x: 5, y: 5}];
            direction = 'right';
            nextDirection = 'right';
            score = 0;
            gameSpeed = 150;
            isPaused = false;
            isGameOver = false;
            food = generateFood();
            
            // 更新分数显示
            document.getElementById('score').textContent = `分数: ${score}`;
            
            // 隐藏游戏结束界面
            document.getElementById('game-over').style.display = 'none';
            
            // 开始游戏循环
            gameInterval = setInterval(gameLoop, gameSpeed);
        }
        
        // 游戏结束
        function gameOver() {
            isGameOver = true;
            clearInterval(gameInterval);
            
            // 显示游戏结束界面
            document.getElementById('final-score').textContent = score;
            document.getElementById('game-over').style.display = 'block';
        }
        
        // 暂停游戏
        function togglePause() {
            if (isGameOver) return;
            
            isPaused = !isPaused;
            document.getElementById('pause-btn').textContent = isPaused ? '继续' : '暂停';
        }
        
        // 键盘控制
        document.addEventListener('keydown', (e) => {
            switch (e.key) {
                case 'ArrowUp':
                    if (direction !== 'down') nextDirection = 'up';
                    break;
                case 'ArrowDown':
                    if (direction !== 'up') nextDirection = 'down';
                    break;
                case 'ArrowLeft':
                    if (direction !== 'right') nextDirection = 'left';
                    break;
                case 'ArrowRight':
                    if (direction !== 'left') nextDirection = 'right';
                    break;
                case ' ':
                    togglePause();
                    break;
            }
        });
        
        // 按钮控制
        document.getElementById('start-btn').addEventListener('click', startGame);
        document.getElementById('pause-btn').addEventListener('click', togglePause);
        document.getElementById('restart-btn').addEventListener('click', startGame);
        
        // 初始绘制
        draw();
    </script>
</body>"

如有美化需求,可以把以上代码扔给AI继续修改。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-03-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 wujunmin 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
CodeBuddy IDE 内测体验:AI 全栈开发的天才
作为一名在开发者社区摸爬滚打多年的老兵,我始终对新兴的开发工具抱有极大的热情与好奇。近日,我有幸参与了号称“全球首个产设研一体的 AI 全栈工程师”——CodeBuddy IDE 的内部测试。在深度体验了其强大的 AI 项目生成能力与备受诟病的 SSH 功能后,我的心情可以说是五味杂陈。
AiCharm
2025/07/22
3290
CodeBuddy IDE 内测体验:AI 全栈开发的天才
❤️创意网页:贪吃蛇游戏 - 创造一个经典的小游戏
欢迎来到本篇技术博客!今天,我们将一起学习如何使用HTML5 Canvas和JavaScript创造一个经典的小游戏 - 贪吃蛇游戏。我们将会为您提供代码解析以及游戏玩法说明。让我们开始吧!
命运之光
2024/03/20
5151
❤️创意网页:贪吃蛇游戏 - 创造一个经典的小游戏
无需手动写代码,Trae帮你一键生成项目!
周末闲来无事,刷朋友圈时看到有人提到了一款叫 Trae 的工具,说是能“无需手动写代码”,还能“一键生成项目”。作为一个对新技术充满好奇的人,我立马来了兴趣,心想:这玩意儿真有这么神奇?于是,我决定亲自上手试试,看看它到底真的有那么神奇吗,那么多人都在用。
是Dream呀
2025/03/27
8800
无需手动写代码,Trae帮你一键生成项目!
【CodeBuddy】三分钟开发一个实用小功能之:贪吃蛇经典复刻版
我正在参加CodeBuddy「首席试玩官」内容创作大赛,本文所使用的 CodeBuddy 免费下载链接: 腾讯云代码助手 CodeBuddy - AI 时代的智能编程伙伴
Jimaks
2025/05/20
1350
【CodeBuddy】三分钟开发一个实用小功能之:贪吃蛇经典复刻版
【愚公系列】《AIGC辅助软件开发》008-面向软件开发的提示工程:如何提问才能让ChatGPT更懂你
文章链接:https://cloud.tencent.com/developer/article/2471823
愚公搬代码
2024/11/27
1060
js+jquery实现贪吃蛇经典小游戏
恩爸编程
2024/11/27
3000
js+jquery实现贪吃蛇经典小游戏
JavaScript贪食蛇游戏制作详解
之前闲时开发过一个简单的网页版贪食蛇游戏程序,现在把程序的实现思路写下来,供有兴趣同学参考阅读。 代码的实现比较简单,整个程序由三个类,一组常量和一些游戏逻辑以外的初始化和控制代码组成,总共400多
用户1608022
2018/04/11
1.3K0
JavaScript贪食蛇游戏制作详解
从零到一:腾讯云 AI 代码助手 + DeepSeek 写一个浏览器插件
这个实现方案完全使用矢量图形绘制,不依赖任何图片素材,核心游戏逻辑与UI组件分离,便于维护和扩展。游戏控制逻辑完整包含开始/暂停/重置功能,并实现了经典贪吃蛇的所有核心机制。
全栈若城
2025/02/28
1870
从零到一:腾讯云 AI 代码助手 + DeepSeek 写一个浏览器插件
腾讯云AI代码助手实战:HTML5版本贪吃蛇小游戏
你好,我是喵喵侠。市面上有很多AI编程助手,可以帮你提升开发效率。最近我发现了一款很好用的国产AI编程助手,那就是——腾讯云AI代码助手。我想用它来开发一款小游戏,正好贪吃蛇这款游戏简单易懂,也富有挑战性,就选它了。我会在这篇文章中,讲述我是如何用它来指导我开发HTML5版本贪吃蛇小游戏的。我将从项目需求分析开始,到具体实现步骤,再到总结,带你一步步实现这个经典游戏。
喵喵侠
2024/08/25
4340
腾讯云AI代码助手实战:HTML5版本贪吃蛇小游戏
【C】贪吃蛇小游戏代码
#include <stdio.h> #include <graphics.h> #include <stdlib.h> #include <dos.h> /*引用的库函数*/ #define LEFT 0x4b00 #define RIGHT 0x4d00 #define DOWN 0x5000 #define UP 0x4800 #define ESC 0x011b/*宏定义键名*/ #define N 200 int i,key; int level;/*游戏等级*/ int score=0;/*得分
赵腰静
2018/03/09
2.7K1
实现简易贪吃蛇
<!DOCTYPE html> <html>     <head>         <meta http-equiv="Content-Type" content="text/html;charset=utf-8">         <title>贪吃蛇游戏-盲鹰</title>         <meta name="Keywords" content="关键字,关键字">         <meta name="description" content="">       
山海散人
2021/03/03
4440
【游戏制作】使用Python创建一个美观的贪吃蛇游戏,附完整代码
在开始编写代码之前,我们需要确保安装了必要的库。我们将使用tkinter和ttkbootstrap库。
命运之光
2024/08/02
4610
【游戏制作】使用Python创建一个美观的贪吃蛇游戏,附完整代码
TypeScript 贪吃蛇游戏详细教程
我们这个项目使用webpack来打包构建,所以需要安装webpack的相关的一些依赖,把webpack和TypeScript等一些东西整合一下,以方便我们后面整个项目的开发。
害恶细君
2022/11/22
1.3K1
TypeScript 贪吃蛇游戏详细教程
刚学会 TypeScript, 顺手做个贪吃蛇小游戏
最近在学习中,再次遇到了贪吃蛇的案例,之前刚学 JavaScript 的时候就有遇到过,趁着这段时间有一点点时间,就跟着做了一下,这篇文章将手把手带你实现一个贪吃蛇的小游戏,难度不会很大,嘻嘻
小丞同学
2021/10/08
4710
用python做一个贪吃蛇游戏_免费贪吃蛇试玩的游戏
距上次更新博客,又过去很长时间了,感觉再不更新一下,自己写博客的习惯就要废了,哈哈。从去年九月份开学之后,疫情学期期末考试开学考、实验室项目软著申请和新项目设计、课程集训等事情较多,没有很多时间;然后这个学期我到大三下学期,实验室工作交接完就准备考研,之后也没有很多时间来写博客,所以赶紧来更新一下,和大家分享一些知识和心得,希望喜欢的小伙伴可以点赞、收藏和关注,哈哈。
全栈程序员站长
2022/09/22
7140
用python做一个贪吃蛇游戏_免费贪吃蛇试玩的游戏
用React创建一个最经典的贪吃蛇游戏
在人工智能快速发展的时代,大模型(LLM)只要有足够的算力和数据就可以做到任何的事情,甚至可以模拟出另一个地球。LLM作为一个革命化的科技,可以取代很多岗位,甚至可以让人类达到“躺着领钱的时代”。Marscode作为一个新推出的IDE,紧跟时代的潮流,拥抱AI,顺应时代的潮流。
执行上下文
2024/09/17
1930
用React创建一个最经典的贪吃蛇游戏
经典游戏—贪吃蛇从C++代码实现[通俗易懂]
小时候都玩过贪吃蛇这个经典的小游戏,在我们的普通手机里似乎都是必备的。它伴随着我们的童年,经历了好多好多时光。它带给我们了许多的乐趣。
全栈程序员站长
2022/08/24
14.8K0
键码经典游戏:简易版贪吃蛇
在这篇博客中,我们将一起探索如何使用HTML、CSS和JavaScript创建一个经典的贪吃蛇游戏。
掘金安东尼
2023/10/27
4810
键码经典游戏:简易版贪吃蛇
【玩转Python】DIY贪吃蛇游戏复盘
贪吃蛇通过“上”,“下”,“左”,“右”四个方向来控制蛇的移动,贪吃蛇每吃到一个食物,身体长度就会增长一次,当蛇撞到墙壁或者自己身体的时候,游戏就会结束。
潘永斌
2021/04/20
8130
【玩转Python】DIY贪吃蛇游戏复盘
贪吃蛇小游戏
秦jh
2024/01/19
1980
推荐阅读
相关推荐
CodeBuddy IDE 内测体验:AI 全栈开发的天才
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档