前言
作为一名钓鱼爱好者,我在抖音分享了许多钓鱼视频。为了让博客访问者能够直观地浏览我的抖音作品,决定在Hexo博客中集成抖音视频相册功能。
本文将详细介绍整个实现过程,从数据配置到页面展示,再到进阶优化,帮助你快速在博客中实现类似功能。
继俄罗斯方块之后,本文讲解扫雷游戏的开发。扫雷是 Windows 系统经典的益智小游戏,核心玩法是揭开格子找出所有安全区域,同时避免触雷。
相比俄罗斯方块,扫雷更侧重于逻辑推理和策略标记,需要实现数字计算、递归扩散、旗标标记等功能。
游戏放置在 source/ai-games/minesweeper/ 目录下,文件结构如下:
1 | source/ai-games/minesweeper/ |
扫雷游戏采用经典的三段式状态栏设计:
1 | <div class="game-header"> |
1 | const DIFFICULTY = { |
三种难度满足不同水平玩家的需求。
1 | let board = []; // 存储地雷和数字 |
board 中:-1 表示地雷,0-8 表示周围地雷数量。
1 | function initBoard() { |
继上一篇文章介绍贪吃蛇小游戏的实现方案后,本文继续讲解俄罗斯方块游戏的开发。相比贪吃蛇,俄罗斯方块的实现更加复杂,涉及方块旋转、多行消除、速度递增等机制。
通过这个案例,可以学习到如何用原生 JavaScript 实现经典的方块下落消除游戏。
游戏放置在 source/ai-games/tetris/ 目录下,文件结构如下:
1 | source/ai-games/tetris/ |
与贪吃蛇相同的独立目录结构,便于管理和扩展更多游戏。
1 | <canvas id="game-canvas" width="240" height="400"></canvas> |
俄罗斯方块采用 12×20 网格,每个格子 20px,宽度较窄以适应竖屏布局。
1 | canvas { |
使用蓝色主题(#2196F3)与贪吃蛇的绿色区分开。
游戏包含 7 种经典方块形状,用矩阵和颜色表示:
1 | const SHAPES = { |
每种方块用 0/1 矩阵表示形状,1 表示方块存在的位置。
1 | let board = []; // 12×20 游戏板,存储已落方块颜色 |
board 是二维数组,存储已固定在底部的方块颜色,空位为 0。
1 | function randomPiece() { |
使用 map(row => [...row]) 实现矩阵的深拷贝,避免修改原始形状定义。
1 | function checkCollision(matrix, x, y) { |
遍历方块的每个单元格,检查是否越界或与已落方块重叠。
在静态博客中嵌入 JavaScript 小游戏是一种提升用户体验的好方法。之前用 Lua 为 Unity 实现过多种小游戏,现在尝试将经典的贪吃蛇游戏移植到 Hexo 博客中。
本文将详细介绍如何在 Hexo 博客中实现一个可玩的贪吃蛇小游戏,包括游戏页面搭建、核心逻辑实现以及移动端适配。
游戏放置在 source/ai-games/snake/ 目录下,文件结构如下:
1 | source/ai-games/snake/ |
这种独立目录的方式便于管理,每个游戏都有自己完整的资源。
游戏页面使用 Hexo 的 标签来嵌入原始 HTML 代码,这样可以避免 Hexo 对 HTML 标签进行转义。
1 | <canvas id="game-canvas" width="400" height="400"></canvas> |
游戏采用 20×20 网格,每个格子 20px,整体画布大小为 400×400 像素。
1 | canvas { |
暗色系背景配合绿色边框,营造游戏氛围。touch-action: none 用于禁止移动端默认触摸行为,避免游戏时页面滚动。
游戏逻辑全部封装在 snake-game.js 文件中,共约 309 行代码。
1 | window.initSnakeGame = function() { |
将游戏初始化函数挂载到 window 对象上,便于 PJAX 页面切换后重新调用。
1 | const gridSize = 20; // 20x20 网格 |
蛇身使用数组存储,每个元素表示蛇的一节坐标。direction 和 nextDirection 分离的设计可以防止连续快速按键导致蛇身掉头自杀。
1 | function move() { |
核心思路:
1 | // 边界碰撞 |
1 | function randomFood() { |
使用循环尝试生成随机位置,直到找到不与蛇身重叠的位置。
1 | function draw() { |
绘制顺序:清空画布 → 网格线 → 蛇身 → 食物 → 游戏结束遮罩。
针对 Visual Studio 2022 用户,要打造一个高效率的“本地 AI 程序员”,关键在于选择一款能与 VS 2022 深度集成、且支持连接本地模型(如 Ollama)的插件。目前最高效的方案是使用 Visual Studio 的插件 Copilot (第三方开源版,非官方) 配合 Ollama。
以下是部署全流程:
- 核心引擎: Ollama。负责在本地运行 DeepSeek 模型。
- 模型选择: DeepSeek-Coder-V2:16b。这是目前代码能力极强且适合本地部署的专用模型(如果显存不足,可退而求其次选择 deepseek-coder:6.7b)。
- IDE 插件: Visual Copilot (在 VS 扩展市场中搜索)。这是一个开源免费插件,能够将 Ollama 接入 VS 2022,提供代码补全和聊天功能。
- 第一步:配置本地模型引擎 (Ollama)
下载安装: 访问 Ollama 官网 下载并安装 Windows 版本。
拉取专用代码模型: 打开命令行(PowerShell 或 CMD),输入以下命令下载 DeepSeek 的代码模型:
ollama run deepseek-coder-v2:16b
注:如果您的显卡显存小于 12GB,建议使用 ollama run deepseek-coder:6.7b 以保证速度。
验证运行: 安装完成后,确保 Ollama 在托盘区运行,且在浏览器访问 http://localhost:11434 能看到 “Ollama is running” 字样。
- 第二步:安装并配置 Visual Studio 2022 插件
Visual Studio 2022 原生集成了 GitHub Copilot,但它无法连接本地 Ollama(除非使用代理转发,非常麻烦)。我们需要安装支持 OpenAI 兼容接口的第三方插件。
打开扩展管理器: 在 Visual Studio 2022 中,点击顶部菜单栏的 扩展 -> 管理扩展。
搜索插件: 在搜索框中输入 “Visual Copilot” (或者搜索 “CodeGPT” ,两者皆可,这里以 Visual Copilot 为例,因为它对 OpenAI 兼容性很好)。
安装: 点击下载,安装完成后 重启 VS 2022。
- 第三步:连接插件与 Ollama
重启后,我们需要告诉插件去哪里找本地模型:
打开设置: 在 VS 菜单栏找到新出现的 Visual Copilot 图标或菜单项,选择 Settings / Options。
配置 API 地址:
找到 Api Base (或 Endpoint) 一栏。
注意:必须加上 /v1,这是为了兼容 OpenAI 的协议格式。
配置密钥 (API Key):
找到 Api Key 一栏。
填入:ollama (或者随便填几个字符,本地模式下 Ollama 不验证 Key,但这栏通常不能为空)。
配置模型名称: