跳去內容

遊戲描述語言

出自維基百科,自由嘅百科全書
一盤國際象棋;家陣黑色嘅國王俾白色嘅皇后將死,所以白色贏-人能夠靠聽遊戲規則想像遊戲嘅可能狀態。

遊戲描述語言Game Description Language,簡稱「GDL」)係一種理論上可以用嚟描述任何遊戲嘅規則嘅形式化語言[1][2]

要枚舉嘅嘢

[編輯]

喺最抽象嘅層面嚟講,遊戲描述語言第一步做嘅通常都係枚舉(enumerate)以下嘅嘢[1]

  • 遊戲入面嘅物件(object),例如係象棋入面嘅每一隻棋同棋盤上嘅每一格,白色嘅國王叫 wk(white king)、棋盤上嘅第五行第三格叫 square (e,3)... 等等;
  • 遊戲嘅玩家(player),例如象棋有兩個玩家,role(player 1)role(player 2)
  • 每個玩家有乜嘢可能嘅行動(action),每個行動會點樣影響遊戲入面嘅物件嘅狀態同埋第啲玩家,例如 move 表示郁某一隻棋,move(e1,e2) 表示將某隻棋由 e1 移去 e2
  • 命題(proposition)喺遊戲每一個可能狀態下一係「真」(true)一係「假」(false)嘅,例如「白色國王喺 e1 嗰格」(句法:true(p),當中 p 係評估緊佢係咪真嗰句命題)呢一句嘢喺每一個遊戲可能狀態下一係一係真一係假,而呢句嘢係咪真會影響邊一啲可能行動係啱規矩-如果「白色國王喺 e1 嗰格」呢句嘢係真,噉 wk, move(e5,e6) 唔會係一個可能行動;
  • 初時狀態,即係遊戲開始嗰陣狀態係點,例如喺國際象棋遊戲開始嗰陣,雙方嘅棋都係喺某個特定位置,個程式會有一柞 init(p),當中 p 係一句喺遊戲開始嗰陣係真嘅命題;
  • 遊戲喺乜嘢情況下結束同點定輸贏;

... 等等。例如井字過三關可以用以下噉嘅碼表達[註 1][1]

 ...
 role(x) # 遊戲有 X 同 O 兩個玩家
 role(o)
 ...
 input(R,mark(M,N)) :- role(R) & index(M) & index(N) #一個可能行動係「玩家 R 填 M, N 嗰格」
 input(R,noop) :- role(R)
 ...
 base(cell(M,N,x)) :- index(M) & index(N) # 命題類型 1:「M,N 嗰格俾 X 填咗」
 base(cell(M,N,o)) :- index(M) & index(N) # 命題類型 2:「M,N 嗰格俾 O 填咗」
 base(cell(M,N,b)) :- index(M) & index(N) # 命題類型 3:「M,N 嗰格係空嘅」
 base(control(x)) # 命題類型 4:「而家到 X 行」
 base(control(o)) # 命題類型 4:「而家到 O 行」
 ...
 init(cell(1,1,b)) # 遊戲原始狀態:1,1 嗰格係空嘅
 init(cell(1,2,b)) # 遊戲原始狀態:1,2 嗰格係空嘅
 ... # ... 如此類推
 legal(W,mark(X,Y)) :- # 啱規則嘅嘢之一:要喺「X,Y 嗰格係空嘅」同「到 W 行」呢兩句命題都係真嗰陣,「玩家 W 填 X, Y 嗰格」先至有可能發生。
   true(cell(X,Y,b)) &
   true(control(W))
 ...

註釋

[編輯]
  1. 為咗方便起見,以下嘅碼有某啲部份省略咗。

睇埋

[編輯]

[編輯]
  1. 1.0 1.1 1.2 Game Definition Language 互聯網檔案館歸檔,歸檔日期2021年10月17號,..
  2. Tagiew, Rustam (2011). Averkin, Alexey N.; Ignatov, Dmitry I.; Mitra, Sushmita; Poelmans, Jonas (eds.). "Beyond Analytical Modeling, Gathering Data to Predict Real Agents' Strategic Interaction" Soft Computing Applications and Knowledge Discovery. CEUR Workshop Proceedings. Moscow, Russia. Vol-758: 113--124.