1 Star 2 Fork 0

Cliven / RetroSnakerPlan-server

Create your Gitee Account
Explore and code with more than 6 million developers,Free private repositories !:)
Sign up
Clone or download
draft.md 2.15 KB
Copy Edit Web IDE Raw Blame History
Cliven authored 2018-06-03 16:45 . 增加多线程

开发手稿

[TOC]

执行计划

  1. 完成数据结构的设计
  2. 游戏设计
  3. 根据功能书写函数

编写主函数

  1. 收到包之后开启多线程
  2. 多线程编程 3 在多线程响应

多线程编程内容

  1. 将收到的包,解析为字节数组
  2. 将字节数组,转为请求实体
  3. 调用响应函数处理实体,获取字节数组
  4. 将自己数组打包为Package,响应
  5. 多线程中捕获异常,重新响应
  6. 并发锁!!

主函数监听消息,并且解析

使用多线程处理收到的消息

封装多线程程序

需要设计在线程中捕获异常并且处理为响应字节串的对象

设计地图

食物信息通过一个食物最大上线控制,超过不生成

食物通过一个2维数组存储

地图上的玩家通过Map存储

MVC结构

把地图和相关的信息当做上下文构造,相关服务和控制器

服务

食物服务

对上下文中食物信息的增加、删除、修改、查询。

玩家服务

对上下文中玩家信息的增加、删除、修改、查询。

解析控制器

决定处理类型

根据请求的字段决定处理函数

初始化

  1. 创建角色
    • 创建玩家ID
    • 创建玩家的角色
  2. 根据玩家ID,对周围区域数据整合
  3. 序列化响应实体

更新

  1. 根据ID查找玩家
  2. 更新玩家信息
    • 角色信息
    • 吃掉的食物
  3. 根据玩家ID,对周围区域数据整合
  4. 序列化响应实体

死亡

  1. 解析请求字节为实体
  2. 从玩家列表中移除玩家
  3. 把玩家的角色变成食物
  4. 增加击杀者的分数
  5. 响应玩家的ID和分数

区域数据整合

  1. 根据头结点获取周围区域
    • 头结点区域获取
  2. 根据区获取区域内的所有玩家信息、
    • 需要区域相交检测
  3. 根据区域获取周围的所有食物信息
  4. 把上面的信息整合到一个响应中

测试数据

  1. 制造Food的数据,序列化测试,16进制输出
  2. 制造SnakeNode的数据,序列化,16进制输出
  3. 制作请求的数据
    • NO_ID
    • UPDATE
    • DEAD
  4. 制作响应的数据
    • UPDATE
    • DEAD

Comment ( 0 )

Sign in for post a comment

Java
1
https://gitee.com/Trisia/RetroSnakerPlan-server.git
git@gitee.com:Trisia/RetroSnakerPlan-server.git
Trisia
RetroSnakerPlan-server
RetroSnakerPlan-server
master

Search