吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1738|回复: 6
收起左侧

[其他原创] 网页解谜游戏开发框架——Online Puzzle

[复制链接]
imlinhanchao 发表于 2023-11-22 10:48

因为不确定网站是否也可以作为原创工具发表,所以发到编程语言区。有知道的小伙伴帮忙解答下。

今天要讲的这个是一个基于 Node Express 网页解谜游戏的开发框架:Online Puzzle。曾经使用这个框架制作的网页游戏有摸鱼大闯关:https://p.hancel.org/ ,应该有些人已经玩过了。使用这个框架,现在你也可以制作自己的网页解谜游戏给别人玩拉~

食用方法

  1. 首先 clone 仓库或在 GitHub 上直接 Use This Template
  2. stages 拷贝 tpl.js 为一个新的 js 文件。文件名必须完全小写,名称与关卡地址一致。
  3. 填写关卡编号 stage,下一关卡路径 next ,网页标题提示 title (选填),通关密码 passwd (选填)等等。
  4. 最后在 html() 中编写谜面即可完成一个关卡。

更多参数参考 tpl.js

运行方法

  1. 首次运行需要执行 npm run init。根据提示做项目初始化就好了。
  2. 然后本地调试在 VSCode 直接按下 F5 就可以了。
  3. 如果是要服务器运行,可以使用 pm2,执行 pm2 start -n puzzle npm -- start 即可。

代码解析

代码的核心就在于 interface/stage.js 这个文件。

其中的 load 函数会去 stage 文件夹根据路由载入对应的关卡文件:

static load(stage) {
    let stage_path = path.join('..', 'stages', stage.toLowerCase());
    try {
        return new Stage(require(stage_path));
    } catch (error) {
        return null;
    }
}

在 express 的 route 处,则会通过载入的关卡文件,检查跳关,更新闯关进度,最后渲染关卡。

router.get('/:stage.html', async function(req, res, next) {
    let puzzle = Stage.load(req.params.stage);
    // 找不到关卡文件返回 404
    if (!puzzle) return next();
    // 跳关检查,如果访问关卡数大于当前闯关进度+1则返回 404
    if (req.session.last && puzzle.stage - req.session.last.stage > 1) 
        return next();
    let user = new User(req.session);
    let last = { url: req.url, stage: puzzle.stage < 0 ? 0 : puzzle.stage }
    // 添加闯关进度
    if (user.islogin) await user.addRecord(last)
    if (!req.session.last || req.session.last.stage < puzzle.stage) req.session.last = last
    // 关卡设定的 response 处理
    if (puzzle.beforeRsp instanceof Function && await puzzle.beforeRsp(req, res)) return;
    // 渲染关卡
    res.render('puzzle', { config, puzzle, user: req.session.user, last: req.session.last });
});

这样,就可以通过关卡文件,单独定于谜面与谜题 Tip,可以把 Tip 通过代码隐藏到网页的不同地方,比如 Header,Js,CSS,HTML 代码中。

最后,如果你有用这个框架制作好的网页解谜游戏,欢迎分享出来,我挂到 Readme 上去。

代码仓库地址:https://github.com/imlinhanchao/puzzle_node
镜像地址:https://gitee.com/imlinhanchao/puzzle_node

免费评分

参与人数 3吾爱币 +7 热心值 +3 收起 理由
yjycyan56 + 1 + 1 谢谢@Thanks!
苏紫方璇 + 5 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
blindcat + 1 + 1 谢谢@Thanks!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

blindcat 发表于 2023-11-22 12:28
感谢分享,研究研究去
丶夜雨无声 发表于 2023-11-22 13:22
现在网页游戏好多 代码都差不多 感谢分享 抽空学习学习
FruitBaby 发表于 2023-11-22 17:40
Recalled123 发表于 2023-11-22 20:10
感谢大佬分享

来充电了,我感觉现在网页游戏好多代码都差不多一样哎
jackies 发表于 2023-12-19 16:51
学习学习,充充电
11414 发表于 2024-3-20 21:14
学习进步
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-24 19:55

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表