FreeKill/docs/diy/event/gameflow.rst

37 lines
945 B
ReStructuredText

.. SPDX-License-Identifier: GFDL-1.3-or-later
与游戏流程有关的事件
====================
先来看游戏流程本身。以下节选自lua/server/gamelogic.lua
.. code:: lua
function GameLogic:action()
self:trigger(fk.GameStart)
local room = self.room
for _, p in ipairs(room.alive_players) do
self:trigger(fk.DrawInitialCards, p, { num = 4 })
end
local function checkNoHuman()
-- 如果房里已经没有人类玩家了就结束游戏
end
while true do
self:trigger(fk.TurnStart, room.current)
if room.game_finished then break end
room.current = room.current:getNextAlive()
if checkNoHuman() then
room:gameOver("")
end
end
end
以上这段代码,述说的就是整个游戏流程的核心。首先开始游戏、摸初始手牌,然后按照座位顺序每人依次执行回合直到游戏结束。
--------------
TODO