LoginSignup
1
1

More than 3 years have passed since last update.

モジュール 『トランプのカード』

Last updated at Posted at 2020-04-26

概要

トランプゲームなどのカード(山札)のモジュールです。

動作環境

Windows 10
DrRacket 7.6

内容

(require "./my-lib.rkt") に関しましては、こちらをご参照下さい。



#lang racket

(module cards racket
  (provide deck54
           deck52
           draw-card54
           draw-card52)

  (require racket/generator)

  (define (make-gen lst)  ; ジェネレータの生成
    (generator ()
               (let loop ([l lst])
                 (if (null? l) '()
                     (begin
                       (yield (car l))
                       (loop  (cdr l)) ) ) ) ) )


  (define (map-mark mark)
    (map (λ (n)(cons mark n))  ; '(マーク . 数字)
         (range 1 14) ) )  ; 1 ~ 13


  (define deck54  ;  山札
    (append '((j0 . 0) (j1 . 0))  ; ジョーカー
            (map-mark 's)  ; スペード
            (map-mark 'c)  ; クラブ
            (map-mark 'd)  ; ダイヤ
            (map-mark 'h) ) )  ; ハート


  (define draw-card54  ; 山札から1枚めくる
    (make-gen (shuffle deck54)) )


  (define deck52 (cddr deck54))  ;  山札(ジョーカー無し)  


  (define draw-card52  ; 山札から(ジョーカー無し)1枚めくる
    (make-gen (shuffle deck52)) )

  )  ; end module
; ----------------------------------------------------------------
(require racket/require 'cards)  ; モジュールの読込
(require "./my-lib.rkt")

; (do-times 60 (displayln (draw-card54)))
#|
;=>
(d . 4)
(d . 2)
(h . 6)
(s . 8)
(c . 3)
(c . 13)
(h . 3)
(j0 . 0)
(d . 5)
(s . 9)
(d . 8)
(j1 . 0)
(h . 10)
(c . 5)
(c . 2)
(d . 6)
(h . 13)
(d . 7)
(h . 9)
(s . 5)
(d . 12)
(c . 6)
(s . 6)
(d . 1)
(h . 1)
(c . 11)
(s . 10)
(c . 4)
(s . 3)
(s . 7)
(c . 9)
(c . 10)
(c . 7)
(d . 11)
(h . 2)
(s . 11)
(h . 5)
(d . 3)
(c . 12)
(s . 4)
(h . 8)
(h . 11)
(s . 12)
(c . 1)
(d . 13)
(d . 9)
(s . 2)
(s . 13)
(s . 1)
(h . 7)
(h . 12)
(c . 8)
(d . 10)
(h . 4)
()
()
()
()
()
()
()
|#

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1