这是一个基于 Node.js、Express、Socket.io 和 Canvas API 的多人俄罗斯方块游戏。玩家可以实时参与游戏,选择自己的游戏界面,同时支持聊天室功能,方便玩家之间的交流。
- 多人实时游戏:支持多名玩家同时在线游戏,每个玩家可以选择自己的游戏界面。
- 游戏状态同步:玩家的游戏状态(如方块位置、得分等)会实时同步,其他玩家可以观看到你的游戏进程。
- 聊天室功能:内置聊天室,玩家可以在游戏中实时聊天交流。
- 计时功能:记录玩家的游戏时长和选择界面的时长,实时更新显示。
- 持久化数据存储:使用文件系统存储部分数据和会话信息,如无必要请不要关闭或重启服务器,否则会导致游戏数据(方块的状态和分数)丢失。
tetris-multiplayer/
├── public/
│ ├── client.js // 客户端 JavaScript 文件
│ ├── style.css // 样式表
│ └── index.html // 前端页面
├── sessions/ // 会话数据存储目录
├── data.json // 持久化数据文件
├── chat_history.txt // 聊天记录文件
├── server.js // 服务器主文件
├── package.json // 项目配置文件
└── README.md // 项目文档(本文件)
- 操作系统:Windows、macOS 或 Linux
- Node.js:版本 >= 12.x
- npm:版本 >= 6.x
git clone https://github.com/Admin-jwzz/tetris-multiplayer.git
或者直接下载项目的 ZIP 压缩包并解压。
cd tetris-multiplayer
npm install
使用 nodemon
运行服务器,以便在文件更改时自动重启:
npm run dev
直接运行服务器:
npm start
在浏览器中访问:
http://localhost
如果更改了端口号,例如改为 3000,则访问:
http://localhost:3000
- 访问应用后,会提示输入昵称。
- 输入昵称后,点击 确定 按钮。
- 昵称需要唯一,且不区分大小写。
- 设置昵称后,可以看到四个游戏界面。
- 点击 选择界面 按钮,选择一个未被占用的界面。
- 选择后,可以点击 开始游戏。
- 开始游戏:点击 开始游戏 按钮开始新游戏。
- 暂停/继续游戏:点击 暂停游戏 按钮暂停或继续游戏。
- 重新开始游戏:游戏结束后,点击 重新开始 按钮开始新一轮游戏。
- 左箭头:向左移动方块。
- 右箭头:向右移动方块。
- 下箭头:加速方块下落。
- 上箭头:旋转方块。
- 聊天室默认在左下角,可以拖动位置或最小化。
- 输入消息后按 Enter 键发送。
- 支持以下系统命令:
/logout
:注销当前用户。/clear
:清除聊天记录(仅管理员,用户名为admin就是管理员)。/rename 新昵称
:更改昵称。
- 服务器:一台可用的云服务器或本地服务器。
- Node.js:确保服务器上已安装 Node.js 和 npm。
- 端口配置:开放服务器的 HTTP 端口(如 80 或 3000)。
将项目代码上传到服务器,确保目录结构完整。
在服务器上,进入项目目录,运行:
npm install
在服务器上运行:
npm start
- 使用 Nginx 或 Apache 配置反向代理。
- 配置 SSL 证书,开启 HTTPS。
错误信息:端口已被占用。
解决方案:检查是否有其他应用占用了指定端口,或者更改 server.js
中的端口号。
错误信息:在浏览器中无法访问应用。
解决方案:检查服务器是否正在运行,防火墙和端口配置是否正确。
可能原因:未设置昵称、Socket.io 连接失败。
解决方案:确保已设置昵称,检查浏览器控制台的错误信息。
本项目采用 CC BY-NC 4.0。
版权所有 © 2024 Admin-jwzz
感谢您使用本项目,祝游戏愉快!