Haskell:飞镖游戏

时间:2019-05-07 18:15:16

标签: list function haskell

我正在尝试在Haskell中实现飞镖游戏。我选择在不同层次的列表中代表每条腿的结果。内部列表的每个第一个元素都代表乘数(单,双,三倍),每个第二元素都代表要相乘的点的值。每个玩家的起始得分为501分。这些点数会随着玩家每回合射击的点数而减少。如果玩家达到0分,他将赢得整条腿。

这是一个随机腿的示例,其中起始玩家获胜:

          leg1 = [[[3,20],[3,20],[3,20]],[[3,20],[3,19],[2,25]],[[3,19], 
          [3,19],[3,19]],[[3,20],[3,19],[2,25]],[[2,25],[2,25],[2,25]]] 
          -- the outer list represents the full leg.
          -- the second layer of lists represents a full turn of a player. 
          -- the inner lists are composed of a pair of two elements
          -- and every pair represents one shot.

我的目标是编写一个函数,该函数将随机腿作为输入参数,并对不同的跟踪执行以下操作:

第1阶段:如果起始玩家赢得整条腿,则应该返回1。

阶段2:如果其他玩家获胜,则应该返回2。

第3步:如果内部的组合无效,则应返回0          一对列表元素(例如[3,0]无效,因为三元组0          游戏中不存在)。

示例:

      legWinner leg1 -- call of the function with parameter.
     -> 1            -- return value.

我不确定如何定义此函数。

0 个答案:

没有答案