三战卡OL开发日记【6】匹配对战
呃。。当然目前只做了“匹配”,没有做“对战”
讲真的用PHP做这种东西也真的是挺麻烦的......不过还是做出来了。原理是这样的:
当进入等待界面时,创建一条匹配记录,开始轮询(PHP只能轮询没办法),当发现匹配记录被其他人填上以后即表示进入对战。然后点击匹配按钮时,如果查询到可以匹配的对象,则填上对方的记录,如果查不到就自己开始等待。
所以说......这个功能其实还是比较简陋的,如果两个人同时开始匹配则可能出现信息锁的问题.......(但是对于PHP来说 能做到这样已经挺不错了嗯)
细节上,为了防止一些死锁,把部分SQL语句都直接合并成了UPDATE语句,比如说:
$q=$mysqli->prepare("UPDATE matching SET matched=? WHERE timestamp>? LIMIT 1"); ....... if ($mysqli->affected_rows>0){ blablabla; }
如果连续运行两句SQL的话,可能会导致一些死锁情况,所以合并成一条,可以避免这些情况。当然我确实不太清楚mysqli是否针对这些死锁做过什么优化,但是直接这样写还可以节约一次IO,岂不是更好= =
最后开始搞一些第二弹的蜀国:
(因为只有一弹的话卡池实在太浅了,没法玩啊)
诸葛亮:3费2500,枪,智魅
【看破】每当你需要使用一张无懈可击时,你可以视为使用了一张无懈可击
赵云:2费1500,枪,勇魅
【龙胆】限定技[2],阶段内,你可以使你受到的伤害降低1000,或使你造成的伤害增加500
(没办法,群赵云实在是太契合龙胆了。。。直接拿过来了233)
黄忠:4费3000,弓,勇
【穿杨】若你装备了特效属性为[弓]的武器,则当你战斗胜利时,你可以与下个出阵阶段造成相当于当前溢出伤害数值的兵力伤害
(把初版新黄忠改成4费,这样收益大一些也无可厚非)
孙尚香:2费1000,枪,魅援
【结姻】援军技[枪],若你的主将为男性,则额外提供1000支援兵力
关银屏:1费500,枪,勇魅,追击
【父魂】出阵时,你可以展示弃牌堆中的【关羽】【关平】【关兴】【关索】各一张,然后增加3000兵力
周仓:2费1000,枪,勇援,追击
【忠勇】援军技[勇],若你的主将为【关羽】或【关平】,则当其阵亡时,将你的援军翻面扣置在主将区,视为下回合出阵
马良:1费500,枪,智援
【危弈】援军技,出阵阶段,你可以弃置X张手牌(X为你的主将的费用减2且至少为0),然后令对方战斗胜利,并将你的主将收回手牌
刘禅:2费500,步
【享乐】锁定技,出阵阶段,对方须选择一项:弃置一张手牌,或令你本回合不受兵力伤害
王平:3费2000,枪
【坚守】锁定技,阶段内,你受到的伤害减少1000*X,X为对方配置的装备数量
严颜:2费1500,弓,勇援
【益壮】援军技,锁定技,出阵时,你的主将兵力上限+1000