游戏主程进阶|全栈游戏开发NodeJs<使用TypeScript>服务器+最新CocosCreator联网五子棋游戏

源码获取方式请关注GFanStudio公众号回复"五子棋",QQ技术交流群:1038743340

完整课程链接如下:

游戏主程进阶|全栈游戏开发NodeJs<TypeScript>服务器+最新CocosCreator联网五子棋游戏

    hello大家好!最近抽时间做了一套全栈游戏开发NodeJs<TypeScript>服务器+最新CocosCreator联网五子棋游戏,内容囊括服务器知识和客户端的很多知识点,包含Nodejs使用TypeScript开发服务器和最新CocosCreator客户端使用短链http和websocket长链以及数据库和数据加密等知识点有兴趣的话可以了解一下,例如一下:

1、详细讲解全栈Nodejs服务器框架和Cocos客户端框架实现联网五子棋游戏;

2、详细讲解如何搭建http网关服务器和websocket游戏服务器;

3、详细讲解游服务器和客户端如何自定义序列化消息结构

4、详细讲解服务器如何处理发送全服消息和单服消息;

5、详细讲解服务器和客户端如何加密及传输数据消息防止破解;

6、详细讲解开发中如何使用shell、python、bat批处理辅助开发游戏周边工具;

7、详细讲解mysql数据库操作及sql语句编写等;

       具体设计课程列表大致如下:

图片

  ===>课程知识点结构介绍及演示<===

00-项目演示及课程介绍

===>客户端框架搭建&UI管理&工具类阶段<===

01-环境准备及创建游戏项目工程与基础配置

02-搭建登录UI界面01

03-搭建登录UI界面02

04-搭建通用气泡提示框ToastView01

05-搭建通用气泡提示框ToastView02

06-添加游戏公用工具类GameUtils01

07-添加游戏公用工具类GameUtils02

08-搭建游戏通用弹框面板CommonPopView01

09-搭建游戏通用弹框面板CommonPopView02

10-搭建游戏通用弹框面板CommonPopView03

11-添加游戏UIManager及core通用单例01

12-添加游戏UIManager及实现弹框调用02

13-添加游戏UIManager及气泡提示&动画效果03

14-添加事件订阅EventManager管理类

===>服务器基础框架搭建阶段<===

15-创建NodeJs服务器项目初始化与配置01

16-创建NodeJs服务器项目初始化与配置02

17-安装Express框架及依赖包

18-实现app-http网关服务器启动逻辑及跨域问题

19-添加LoggerManager日志管理类01

20-添加LoggerManager日志管理类02

21-添加GlobalUtils全局工具类处理加密等

22-链接数据库并创建game-fivechess数据库

23-编写SQL语句创建数据库game_users表

24-添加MySqlManager数据库管理类及依赖包

25-创建增删改查SQL语句及错误码逻辑

26-配置http网关服务器和ws服务器启动脚本命令

===>登录模块客户端与服务器交互业务阶段<===

27-完善客户端登录与服务器交互逻辑

28-添加HttpManager管理类及请求网关

29-安装JSCrypto加密工具依赖包并生成公私秘钥

30-客户端使用JSCrypt加密用户名和密码

31-服务器安装JSCrypt依赖并添加MiddleWare中间件

32-服务器安装crypto依赖并添加自定义响应结构及MD5加密

33-服务器添加Routes登录和注册路由

34-服务器添加UserDao并实现注册接口

35-服务器完善UserCtrl并实现注册接口

36-服务器完善UserCtrl登录接口并绑定UsersRoutes

37-服务器和客户端联调验证登录注册接口成功

38-分别编写shell&python&bat批命令脚本启动服务器

39-处理服务器登录响应并新增GameData存储数据

40-处理服务器登录响应之登录失败或成功

41-处理服务器注册响应之登录失败或成功

===>客户端部分游戏功能实现阶段<===

42-新增选择Pve和Pvp游戏类型界面

43-完善游戏类型界面pvp和pve交互逻辑

44-添加创建房间和加入房间UI界面

45-完善选择pvp二级界面交互逻辑

46-新增GameChessBoardPvE人机对战UI界面

47-将GameChessBoardPvE组件UI元素绑定到预制体

48-完善选择谁先手后开始游戏逻辑

49-完善开始游戏逻辑并新增ChessPieces棋子预制体

50-实现ChessPieces棋子预制体的脚本组件逻辑

51-添加初始化棋盘棋子及先手等UI逻辑

52-完善棋盘棋子UI细节逻辑

53-修复单例基类并完善代码注释说明

54-初始化五元组横竖方向占位

55-初始化五元组左右纵方向占位

56-实现玩家下棋落子相关逻辑

57-添加检测游戏是否结束判断逻辑

58-检测是否五子连珠之横向逻辑

59-检测是否五子连珠之竖向纵向逻辑

60-实现AI下棋检测相关逻辑

61-检测下棋效果及完善交互逻辑

62-优化AI下棋逻辑并新增BackBtnView通用返回组件

===>服务器和客户端websocket实现阶段<===

63-添加websocket管理类并自定义数据传输格式

64-监听websocket消息并新增字节数组转换为字符串方法

65-客户端接收服务器队列消息及添加自定义消息命令组装方法01

66-客户端接收服务器队列消息及添加自定义消息命令组装方法02

67-客户端自定义全局发送消息到服务器方法

68-客户端新增字符串转字节数组方法

69-服务器实现自定义消息类型及新增WSManager管理类

70-服务器安装websocket依赖包及调用

71-服务器新增websocket监听连接接收消息关闭ws及error逻辑

72-服务器新增handleMessage分发客户端发送的消息

73-服务器新增handleCloseWS处理关闭ws的相关逻辑

74-服务器封装发送全服消息和单服消息逻辑

75-服务器工程结构调整及联调校验网关和WebSocket服连接

76-服务器PlayerManager管理用户数据信息

77-服务器测试发送全服和单服响应消息逻辑

78-客户端和服务器消息加密解密01

79-客户端和服务器消息加密解密02

80-客户端完善返回组件release模式下切换逻辑及登录提示

  请关注微信公众号GFanStudio具体教学视频详细教程请移步B站搜索关注Up主GFanStudio,另外也可以添加QQ技术交流群:1038743340

    

图片

图片

    

  • 20
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
由于涉及到服务器文件的遍历,需要使用服务器端的代码。以下是使用Node.js实现服务器文件遍历的示例代码: ```javascript const fs = require('fs'); // 定义遍历函数 function traverseFolder(folderPath) { fs.readdir(folderPath, function(err, files) { if (err) { console.error(err); return; } files.forEach(function(file) { const fullPath = folderPath + '/' + file; fs.stat(fullPath, function(err, stats) { if (err) { console.error(err); return; } if (stats.isDirectory()) { // 如果是文件夹,递归进入 traverseFolder(fullPath); } else { // 如果是文件,可以做相应的处理 console.log(fullPath); } }); }); }); } // 调用遍历函数 traverseFolder('/path/to/your/folder'); ``` 上述代码中,`traverseFolder`函数用于遍历指定路径下的所有文件和文件夹。对于每个文件夹,递归进入;对于每个文件,可以做相应的处理,例如打印路径。 此外,还需要在Node.js中使用HTTP模块搭建一个简单的Web服务器,以便在浏览器中访问文件列表。以下是示例代码: ```javascript const http = require('http'); const fs = require('fs'); const path = require('path'); // 定义遍历函数 function traverseFolder(folderPath, callback) { fs.readdir(folderPath, function(err, files) { if (err) { callback(err); return; } const results = []; files.forEach(function(file) { const fullPath = folderPath + '/' + file; fs.stat(fullPath, function(err, stats) { if (err) { callback(err); return; } const item = { name: file, path: fullPath, isDirectory: stats.isDirectory() }; if (stats.isDirectory()) { // 如果是文件夹,递归进入 traverseFolder(fullPath, function(err, children) { if (err) { callback(err); return; } item.children = children; results.push(item); if (results.length === files.length) { callback(null, results); } }); } else { // 如果是文件,直接添加到结果数组中 results.push(item); if (results.length === files.length) { callback(null, results); } } }); }); }); } // 创建HTTP服务器 const server = http.createServer(function(req, res) { // 获取当前路径 const currentPath = '.' + req.url; // 如果是文件,直接返回文件内容 if (fs.existsSync(currentPath) && fs.statSync(currentPath).isFile()) { fs.readFile(currentPath, function(err, data) { if (err) { res.writeHead(500); res.end(); return; } res.writeHead(200, { 'Content-Type': 'text/plain' }); res.end(data); }); return; } // 如果是文件夹,返回文件列表 traverseFolder(currentPath, function(err, results) { if (err) { res.writeHead(500); res.end(); return; } // 生成HTML代码,展示文件列表 let html = '<ul>'; results.forEach(function(item) { html += '<li>'; if (item.isDirectory) { html += '<a href="' + item.path + '">' + item.name + '</a>'; if (item.children) { html += '<ul>'; item.children.forEach(function(child) { html += '<li><a href="' + child.path + '">' + child.name + '</a></li>'; }); html += '</ul>'; } } else { html += item.name; } html += '</li>'; }); html += '</ul>'; res.writeHead(200, { 'Content-Type': 'text/html' }); res.end(html); }); }); // 启动服务器 server.listen(8080, function() { console.log('Server is listening on port 8080'); }); ``` 上述代码中,`traverseFolder`函数的作用与之前的示例代码相同,但这里将结果包装为一个对象数组,以便在浏览器中进行展示。同时,返回的结果是一个异步回调函数的参数,而非直接输出到控制台。 在HTTP服务器中,首先判断当前请求的路径是否是一个文件,如果是,则直接返回文件内容。否则,调用`traverseFolder`函数获取文件列表,并生成HTML代码,向浏览器输出。需要注意的是,这里使用了`fs.existsSync`和`fs.statSync`函数判断当前路径是否是一个文件,以避免遍历整个文件夹。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

GFanStudio-LeeSir

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值