显示人员信息
对于游戏界面需要显示对手玩家的个人信息,最起码的是任务的名称,或者头像,在我的设计中,其中数据库创建了
(使用了Mybatis所有表都不具备外键,只具备主键,使用关联字段进行逻辑关联)
房间表
游戏表
玩家表
其中使用房间表的mainID(房间号)作为和玩家表的关联
首先用户登录,在首页可以看见游戏房间列表,可以选择
创建房间(创建新的房间,并根据当前user创建Player,将Player设置到房间的玩家字段上),将context中的当前房间的玩家人数设置为1,以后当有人进入该房间时,对这个玩家人数+1,跳转到房间页面,此页面显示玩家信息,在创建Player时设置了他的位置(第一个玩家)为“东”,以后进入的每一个人对位置进行随进分配(或者将位置字段设置为数字,每次来人进行加一,但是当已经有四个人,可此时一个玩家离开了,那么很难判断是哪个方位离开了,这里展示还没有完成,这里记录一下)
2018-10-19
目前还是对于玩家信息采取的是位置查询,并没有查询完整的玩家信息。
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
因为有四个玩家,因此需要共享数据,想到了redis缓存存储,但是其实数据量不是特表达,对于每个房间而言,目前可能只需要保存进入房间的人数,和当前页面是否查询玩家座位信息变动的标识(目前两个,不知道一盒会如何,先这样做吧),
对于每个玩家的页面,需要知道后方其他玩家的数据变化(进入房间、离开房间或者变动位置,以后可能会具备任务的连天信息、表情之类的...还在考虑),因此页面需要监听数据变化,考虑了两种方案
1.页面创建定时器,隔一段时间查询当查询的间隔足够短,则可以“近乎”时时更新页面数据,但是其实问题很多。
2.使用消息队列,当其他玩家有数据变化时,触发消息接受更新数据,这可能要求页面具备响应式的变化,(比如,对面玩家打出吃张牌,你需要在你的界面显示他吃牌的动作、动画),对于我目前掌握的前端知识还不足以完成,最近看到Layabox,html5的游戏引擎,效果挺丰富的,考虑在简单实现后端逻辑后在对页面元素进行完善(先从自己会的来,不然可能会慢慢把兴趣磨灭掉,其实也是自己很懒吧),
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------
我用了页面定时器的方案,毕竟自己目前只会js、jquery,
那两种方式可以进入游戏房间,
创建房间:点击创建房间之后会跳转到,房间页面,此时在页面加载事件中,(initSearchInterval初始化定时器)定时器触发
在全局js中设定了初始化查询标志,默认为true,虽然定时器方案会一直发送请求,但是我还是不想让他每次都访问数据库,所以只有初始化标记为true是才发送异步请求,请求数据库数据,为true时执行的同样是一个定时器,只不过为true时才进行,此定时器中发送异步请求(嵌套的这个定时器来发送),请求后台会判断context中的玩家人数是否满了,满了则返回一个查询标识为false,否则返回true(同样将它设置在context中,毕竟玩家信息要共享),查询玩家的作为信息,封装在map中返回页面。
回调函数中会对坐位信息进行判断,将不同的玩家显示在相应的位置上,同时设置开始游戏按钮,
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------
(标识为false,则可以开始游戏,标识为true证明还需要进行查询玩家信息补全坐位,因此游戏按钮点击之后应提示玩家不足,这里给开始按钮棒冰了点击事件,使用【!查询标识】判断,这里考虑一个问题,因为是定时器发送请求,一时间可能会有很多请求,可是这种请求我观察到是同步式的,往往一个请求执行了一半另一个请求就又开始了,那么当一方玩家点击了开始游戏,可是此时有玩家离开了,那需要改变查询状态为可查询,但是这个状态为公共的,所有玩家都需要它来判断是否查询,可点击开始之后已经分牌了,这是考虑的问题,单简单测试的js代码并没有遇见冲突,纠结了一会,我觉得,既然已经游戏了,则不应该改变查询状态,这和玩家玩了一会但是没有结束就中途离开一样,想后期为开始点击也设置一个标识,要先判断当前游戏是否开始在更改查询状态,等当前游戏结束在更改,只可能需要细细的捋顺一下,目前还没有做到,可能会等到以后更改许多代码)
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------
刚才说道,返回标识为不可查(人够了),则改变全局的js变量查询标识,在初始化定时其中,默认
突然想到一个问题 还需要需改。。。。。。。。。。。(当人满了,再有人离开时,此时还没有开始游戏,需要据需监听人员变化了,但是定时器已经清除了,,现在想到设定两个标识,采用 || 的判断符号,如果本页面的初始化查询标识为true则查询或者查询得到的
情况:
第一,二、三个人将进入-------------------页面的初始化true+查询true。
第四个人进入————————————页面的初始化true+查询false。
已经四个人之后,回将初始化设置为false——————此时为页面的初始化flase+查询false(此时不进行查询)
此时第四个人又走了————————页面的初始化false+查询true(查询)
问题解决,看来写出来还是有效果的。)
进入房间:登录时创建玩家,会更新玩家的方位,并且更新房间的玩家信息(添加一位玩家)。
这几天在单位比较闲,不定时更新整理。
















