나는 느릅 나무에 대한 독립적 인 연구를하고있어, 나는 다시 한번 프로그램을 배우는 것 같아! 언어 학습 프로젝트로서, 나는 쉽게 블랙 잭을 켜고 실행하려고 노력하지만, 일단 시작하면 아직 얼마나 많이 파악하지 못했는지 깨달았습니다. 나는 갑판에서 카드를 뽑아서 목록에 추가 할 수 있습니다.느릅 나무 초급 : 블랙 잭 쓰기 시도
import Random
import Mouse
import Array
--Build the deck
faces = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13]
suits = ['H', 'D', 'C', 'S']
allCards faces suits =
case suits of
x :: xs -> family faces x ++ allCards faces xs
_ -> []
family faces suit =
case faces of
x :: xs -> (,) x suit :: family xs suit
_ -> []
deck = allCards faces suits
rand : Signal Int
rand = Random.range 0 (length deck-1) Mouse.clicks
pickCard n = head <| drop n deck
nextCard = lift pickCard rand
yourHand = foldp (::) [] nextCard
main = lift asText yourHand
내 질문은 대부분 어떻게 계속해야하는지에 관한 것입니다. 완성 된 느릅 나무 프로젝트를 보는 것은 조금 도움이되지만, 많은 사람들이 나를 초보자로 파싱하기가 어렵습니다. 모든 종류의 방향이 도움이됩니다! 나는 그들이이 목록에서 그려진 카드를 필터링 할 수 dropCard deck card = filter (\card /= nextCard) deck
같은 것을 사용하여 그려하고 한 번 갑판에서 카드를 제거하는 방법을 알아 내려고 노력하고 있었다 첫 번째 문제의
하나. 그러나 느릅 나무에 대한 나의 이해는 신호가 변할 때마다 프로그램이 다시 평가된다는 것입니다. 즉, 카드가 그려 질 때마다 데크가 완전히 재생성된다는 의미입니다. 원래 갑판도
foldp
해야합니까?한 목록에서 요소를 제거하고 기능 프로그래밍에서 다른 요소를 추가하는 적절한 방법은 무엇입니까? 기능 구성, 예 :
toHand . dropCard card
?승패를 결정하기 위해 카드 얼굴을 추가 할 때 목록에서 정수 값을 얻는 방법을 모르겠습니다. 나는
fst (head deck)
을 시도했지만, 유형 오류가 발생했습니다. 아마도 갑판 자체가 어떤 종류의 신호이기 때문입니다. 내가 보지 못하는 것이 있습니까?
그렇다고해서 지금까지 엘름을 정말 좋아했습니다!
감사합니다. 죄송합니다. 늦게 접수 한 것으로 표시하고 있지만 귀하의 답변은 매우 도움이되었습니다. 이 패러다임은 너무 달랐지 만 도전을 정말로 즐기고 있습니다. – Tinstar