/snake-in-im

用golang编写的贪食蛇api

Primary LanguageGo

群聊贪食蛇游戏 API

这是一个为群聊环境设计的 API 式贪食蛇游戏,支持多个用户在同一个群聊中同时参与游戏,也能够处理多个不同群聊的贪食蛇游戏。每个群聊中的游戏状态独立管理,用户可以通过 API 调用来更新位置、查询游戏状态等。

功能概述

  • 多用户支持:允许多个用户在同一群组中同时参与游戏。
  • 多群组管理:可以同时处理多个群组的游戏状态,每个群组独立进行。
  • API交互:完全通过 API 进行游戏状态的查询和管理,适用于群聊环境。

效果图

效果图

效果图


API-渲染地图

通过该端点可以请求渲染当前群组的贪食蛇游戏地图,并根据需要添加食物或更新游戏设置。

  • 请求方式:GET
  • 路径/render-map
  • 参数
    • groupid(必需):群组ID,指定要渲染的游戏属于哪个群组。
    • openid(必需):用户ID,请求者的标识。
    • avatarUrl(可选):用户头像的URL,用于在游戏中表示用户。
    • width(可选):游戏地图的宽度,默认为20。
    • height(可选):游戏地图的高度,默认为20。
    • refresh_interval(可选):游戏的刷新间隔,以秒为单位,默认情况下使用服务器设定的默认值。
    • foodname(可选):要添加到地图中的食物名称,此名称关联到一个特定的图像文件(如 "apple" 对应 "apple.png")。

请求示例:

GET /render-map?groupid=123&openid=user123&avatarUrl=http%3A%2F%2Fexample.com%2Favatar.png&width=30&height=30&refresh_interval=60&foodname=apple

API-更新方向

此 API 允许玩家更新他们控制的贪食蛇的移动方向。这是一个实时操作,确保玩家可以根据游戏情况调整移动策略。

  • 请求方式:POST
  • 路径/update-direction
  • 功能:允许用户改变他们的贪食蛇的移动方向。
  • 参数
    • groupid(必需):群组ID,指定玩家所在的游戏群组。
    • openid(必需):用户ID,用于识别控制贪食蛇的具体玩家。
    • direction(必需):新的移动方向,可选值包括 "up", "down", "left", "right"。

请求示例:

POST /update-direction?groupid=123&openid=user123&direction=up

使用场景:

当玩家需要改变其贪食蛇的方向以避免碰撞、捕食食物或策略性移动时,可以通过发送一个 POST 请求到这个 API 端点来实现。该请求需要提供玩家的群组ID、用户ID和希望改变到的新方向。


设计理念

本贪食蛇游戏是为了在群聊环境中提供互动性和娱乐性设计的。游戏支持多用户同时在线操作,并能处理来自不同群组的多个游戏实例。通过简单的 API 调用,用户可以控制自己的蛇进行移动、吃食物等操作,同时可以观看到其他玩家的动作,从而增强游戏的互动性和趣味性。

游戏地图的状态包括所有玩家蛇的位置、食物的位置以及其他游戏相关的设置。服务器端负责维护游戏逻辑,处理碰撞检测、分数计算以及游戏状态的更新和同步。


游戏逻辑

游戏的每次移动都基于固定时间间隔,通过 API 调用更新位置。服务器端负责计算每次移动后的新位置,并检查是否有蛇头与食物或其他蛇相碰撞的情况。


地图和食物管理

每个群组的游戏地图是独立管理的,支持在一个群组内有多个玩家同时游戏,而不会影响到其他群组。


用户交互

用户通过发送 API 请求来更新自己的移动方向。服务器响应请求,并返回最新的游戏状态,如蛇的位置、食物的位置等。这种设计使得游戏可以很容易地集成到任何支持 HTTP 请求的平台上,如群聊软件。


如何开始

要在本地部署和测试这个贪食蛇游戏API,您需要进行以下步骤:

  1. 克隆仓库到本地。
  2. 安装所需的依赖。编译本项目.
  3. 启动服务器。
  4. 使用 POSTMAN 或任何其他 API 测试工具来调用和测试 API。
  5. render-map将会返回一个图片url,你需要将config.json中的url和port放通到公网.
  6. 开发机器人插件,调用api,提供群聊贪食蛇游戏.

贡献

欢迎通过 Pull Requests 或提交 Issues 的方式为这个项目贡献您的代码和想法。