Hra Ruleta ve Scheme

Program generuje náhodná čísla od 0 do 36. Hráči sázejí na jednotlivá čísla nebo skupiny podle evropské verze rulety. Program vyhodnotí tipy hráčů, určí zda-li vyhráli a případně vypíše i výhru.

Sázení je možné na: čísla, sudá a lichá čísla, červenou a černou barvu, sloupce, řady (program si poradí i když číslo nebude začátkem řady), sousední páry, čtverce sousedních čísel, šestice čísel v podobě dvou sousedních řad (program požaduje počáteční číslo šestice). Padne-li nula nebo neuhodne-li hráč daný tah, propadá výhra do Banku. Vyhraje-li hráč, vrací se mu sázka + násobek sázky z Banku.


#| --------------------------------- Evropska verze rulety ------------------------------ |#
(define cisla_cerna '(15 4 2 17 6 13 11 8 10 24 33 20 31 22 29 28 35 26))
(define cisla_cervena '(32 19 21 25 34 27 36 30 23 5 16 1 14 9 18 7 12 3))
(define sl1 '(0 1 4 7 10 13 16 19 22 25 28 31 34))
(define sl2 '(0 2 5 8 11 14 17 20 23 26 29 32 35))
(define sl3 '(0 3 6 9 12 15 18 21 24 27 30 33 36))
(define RND (random 37))
(define cislo
  (lambda (c)
    (cond
      ((= RND 0) (display "   Prohra! Padlo cislo: "))
      ((= RND c) (display "Vyhra! (Vklad+ *35) Padlo cislo: "))
      ((= RND 0) (display "   Prohra! Padlo cislo: "))
      (else (display "   Prohra! Padlo cislo: "))
      )(+ RND 0)))
(define suda
  (lambda ()
    (cond
      ((= RND 0) (display "   Prohra! Padlo cislo: "))
      ((even? RND) (display "Vyhra! (Vklad+ *1) Padlo cislo: "))
      (else (display "   Prohra! Padlo cislo: "))
      )(+ RND 0)))
(define licha
  (lambda ()
    (cond
      ((= RND 0) (display "   Prohra! Padlo cislo: "))
      ((odd? RND) (display "Vyhra! (Vklad+ *1) Padlo cislo: "))
      (else (display "   Prohra! Padlo cislo: "))
      )(+ RND 0)))
(define cerna
  (lambda ()
    (cond
      ((= RND 0) (display "   Prohra! Padlo cislo: "))
      ((memq RND cisla_cerna) (display "Vyhra! (Vklad+ *1) Padlo cislo: "))
      (else (display "   Prohra! Padlo cislo: "))
      )(+ RND 0)))
(define cervena
  (lambda ()
    (cond
      ((= RND 0) (display "   Prohra! Padlo cislo: "))
      ((memq RND cisla_cervena) (display "Vyhra! (Vklad+ *1) Padlo cislo: "))
      (else (display "   Prohra! Padlo cislo: "))
      )(+ RND 0)))
(define 1az12
  (lambda ()
    (cond
      ((= RND 0) (display "   Prohra! Padlo cislo: "))
      ((<= RND 12) (display "Vyhra! (Vklad+ *2) Padlo cislo: "))
      (else (display "   Prohra! Padlo cislo: "))
      )(+ RND 0)))
(define 13az24
  (lambda ()
    (cond
      ((= RND 0) (display "   Prohra! Padlo cislo: "))
      ((and (> RND 12)(<= RND 24)) (display "Vyhra! (Vklad+ *2) Padlo cislo: "))
      (else (display "   Prohra! Padlo cislo: "))
      )(+ RND 0)))
(define 25az36
  (lambda ()
    (cond
      ((= RND 0) (display "   Prohra! Padlo cislo: "))
      ((>= RND 25) (display "Vyhra! (Vklad+ *2) Padlo cislo: "))
      (else (display "   Prohra! Padlo cislo: "))
      )(+ RND 0)))
(define 1az18
  (lambda ()
    (cond
      ((= RND 0) (display "   Prohra! Padlo cislo: "))
      ((<= RND 18) (display "Vyhra! (Vklad+ *1) Padlo cislo: "))
      (else (display "   Prohra! Padlo cislo: "))
      )(+ RND 0)))
(define 19az36
  (lambda ()
    (cond
      ((= RND 0) (display "   Prohra! Padlo cislo: "))
      ((>= RND 19) (display "Vyhra! (Vklad+ *1) Padlo cislo: "))
      (else (display "   Prohra! Padlo cislo: "))
      )(+ RND 0)))
(define sloupec1
  (lambda ()
    (cond
      ((= RND 0) (display "   Prohra! Padlo cislo: "))
      ((= (modulo RND 3) 1) (display "Vyhra! (Vklad+ *2) Padlo cislo: "))
      (else (display "   Prohra! Padlo cislo: "))
      )(+ RND 0)))
(define sloupec2
  (lambda ()
    (cond
      ((= RND 0) (display "   Prohra! Padlo cislo: "))
      ((= (modulo RND 3) 2) (display "Vyhra! (Vklad+ *2) Padlo cislo: "))
      (else (display "   Prohra! Padlo cislo: "))
      )(+ RND 0)))
 
(define sloupec3
  (lambda ()
    (cond
      ((= RND 0) (display "   Prohra! Padlo cislo: "))
      ((= (modulo RND 3) 0) (display "Vyhra! (Vklad+ *2) Padlo cislo: "))
      (else (display "   Prohra! Padlo cislo: "))
      )(+ RND 0)))
(define rada
  (lambda (r)
    (cond
        ((= RND 0) (display "   Prohra! Padlo cislo: "))
        ((= (modulo RND 3) 1)
         (if (or (= (list-ref sl1 (/ (+ RND 2) 3)) (+ r 0))
                 (= (list-ref sl1 (/ (+ RND 2) 3)) (- r 1))
                 (= (list-ref sl1 (/ (+ RND 2) 3)) (- r 2)))
            (display "Vyhra! (Vklad+ *11) Padlo cislo: ")
            (display "   Prohra! Padlo cislo: ")))
        ((= (modulo RND 3) 2)
         (if (or (= (list-ref sl2 (/ (+ RND 1) 3)) (+ r 0))
                 (= (list-ref sl2 (/ (+ RND 1) 3)) (- r 1))
                 (= (list-ref sl2 (/ (+ RND 1) 3)) (+ r 1)))
            (display "Vyhra! (Vklad+ *11) Padlo cislo: ")
            (display "   Prohra! Padlo cislo: ")))
        ((= (modulo RND 3) 0)
         (if (or (= (list-ref sl2 (/ (+ RND 0) 3)) (+ r 0))
                 (= (list-ref sl2 (/ (+ RND 0) 3)) (+ r 1))
                 (= (list-ref sl2 (/ (+ RND 0) 3)) (+ r 2)))
            (display "Vyhra! (Vklad+ *11) Padlo cislo: ")
            (display "   Prohra! Padlo cislo: ")))
        (else (display "   Prohra! Padlo cislo: ")))(+ RND 0)))
(define par
  (lambda (d1 d2)
    (cond
      ((= RND 0) (display "   Prohra! Padlo cislo: "))
      ((or (= RND d1) (= RND d2)) (display "Vyhra! (Vklad+ *17) Padlo cislo: "))
      (else (display "   Prohra! Padlo cislo: "))
      )(+ RND 0)))
(define ctverec
  (lambda (c1 c2 c3 c4)
    (cond
      ((= RND 0) (display "   Prohra! Padlo cislo: "))
      ((or (= RND c1) (= RND c2) (= RND c3) (= RND c4)) (display "Vyhra! (Vklad+ *8) Padlo cislo: "))
      (else (display "   Prohra! Padlo cislo: "))
      )(+ RND 0)))
(define sestice
  (lambda (s1)
    (cond
       ((= RND 0) (display "   Prohra! Padlo cislo: "))
        ((> RND 0)
          (if (memq RND (build-list (+ 6)
                          (lambda (i)
                             (* (+ i s1) 1))))
              (display "Vyhra! (Vklad+ *5) Padlo cislo: ")
              (display "   Prohra! Padlo cislo: "))
          )) (+ RND 0)))
#| --------------------------------- Ukazky sazek ---------------------------------------|#
; (cislo 3) (suda) (licha) (cerna) (cervena) (1az12) (13az24) (25az36)
; (1az18) (19az36) (sloupec1) (sloupec2) (sloupec3) (rada 16) (rada 29)
; (par 16 19) (par 10 11) (ctverec 8 9 11 12) (sestice7) (sestice 25)
 
#| ----------------------------------- Tipy hracu ---------------------------------------|#
(cislo 17)
(cislo 29)
(suda)
(13az24)
(rada 27)
(rada 9)
(par 19 20)
(sestice 7)
(sestice 28) 

ruleta1

ruleta2


 

ruleta