瀏覽代碼

sort ouvert cards and properly compare types in sort render

master
flavis 5 年之前
父節點
當前提交
4a89eddc24
共有 2 個文件被更改,包括 6 次插入2 次删除
  1. +2
    -1
      src/Skat/AI/Online.hs
  2. +4
    -1
      src/Skat/Card.hs

+ 2
- 1
src/Skat/AI/Online.hs 查看文件

@@ -119,7 +119,8 @@ choose :: (HasCard b, HasCard a) => (Communicator c, MonadPlayer m) => [CardS Pl
choose table mayOuvert hand' = do
gm <- game
let hand = sortRender (getTrump gm) $ map toCard hand'
query (BS.unpack $ encode $ ChooseQuery hand table $ fmap (map toCard) mayOuvert)
ouvertCards = fmap (sortRender (getTrump gm) . map toCard) mayOuvert
query (BS.unpack $ encode $ ChooseQuery hand table ouvertCards)
r <- response
case decode (BS.pack r) of
Just (ChosenResponse card) -> do


+ 4
- 1
src/Skat/Card.hs 查看文件

@@ -177,7 +177,7 @@ compareRender trump c1@(Card tp1 col1) c2@(Card tp2 col2) =
EQ -> compare col1 col2
v -> v
(False, False) -> case compare col1 col2 of
EQ -> compare tp1 tp2
EQ -> compareTypes trump tp1 tp2
v -> v
_ -> compare trp1 trp2
where trp1 = isTrump trump c1
@@ -198,12 +198,15 @@ compareTypes None tp1 tp2 = compare (toNullType tp1) (toNullType tp2)
toNullType Ace = NAce
compareTypes _ tp1 tp2 = compare tp1 tp2

-- | ascending sort of cards, depending on turn colour
sortCards :: HasCard c => Trump -> Maybe TurnColour -> [c] -> [c]
sortCards trump turnCol cs = sortBy f cs
where f c1 c2 = compareCards trump turnCol (toCard c1) (toCard c2)

-- | descending sort of cards, independent of turn colour
sortRender :: HasCard c => Trump -> [c] -> [c]
sortRender trump cs = sortBy f cs
-- note: reversed order of c1 and c2 to get a descending sort
where f c1 c2 = compareRender trump (toCard c2) (toCard c1)

highestCard :: HasCard c => Trump -> Maybe TurnColour -> [c] -> c


Loading…
取消
儲存