TouchFired
介绍
TouchFired(接触 被炒鱿鱼)基于Netty的《谁是卧底游戏》摸鱼程序,所有操作均在命令行执行。
使用
启动服务端
java -jar server-1.0.1.jar -p 12345
启动客户端:指定服务器地址、端口
java -jar client-1.0.1.jar -p 12345 -h 127.0.0.1
事件驱动
所有的操作均以事件为驱动。
具体事件关联如下:
ws:
websocket连接 ---> 连接成功,记录客户端完整信息(CLIENT_CONNECTED)
http:
查询房间列表 /room/list
创建:发布ROOM_CREATING事件,创建房间,加入ChannelGroup,发布ROOM_CREATED事件,返回给客户端房间信息
加入:发布ROOM_JOINING事件,加入房间,加入ChannelGroup,发布ROOM_JOINED事件,返回给客户端房间信息
游戏创建:发布GAME_CREATING事件,创建游戏,分配角色、词汇等,发布GAME_CREATED事件,返回给客户端游戏开始信息
游戏开始:发布GAME_TURNING事件,开启循环器,返回给客户端谁发言。
每轮结束:由GAME_TURNING发布GAME_TURNED_VOTE事件,开启循环投票器,返回给客户端投票
收集投票:
等待加入或创建(PADDING_JOINING) --1-> 创建房间,房间设置(ROOM_SETTINGS)
--2--> 加入房间,ROOM_JOIN
创建房间,房间设置(ROOM_SETTINGS) --cmd参数--> 房间创建完成(ROOM_CREATED)
--back--> 退出房间创建,等待加入或创建(PADDING_JOINING)
加入房间,ROOM_JOIN ---->
房间创建完成(ROOM_CREATED) ----> 房间等待玩家加入(ROOM_PADDING)
房间等待玩家加入(ROOM_PADDING) ----> 房间人满,游戏准备开始(ROOM_PADDING)
--back--> 退出房间(ROOM_QUIT)
房间人满,游戏准备开始(ROOM_PADDING) ----> 游戏开始(GAME_STARTED)
退出房间(ROOM_QUIT) --back--> 等待加入或创建(PADDING_JOINING)
游戏开始(GAME_STARTED) ---->
截图