Initial Revision
[ohcount] / test / expected_dir / lsp1.lsp / lisp / code
1 (DEFUN THROW-DIE ()
2 (+ (RANDOM 6) 1)          ;;; get a random number between 0 and 5 and then add 1
3 )
4 (DEFUN THROW-DICE ()       
5 (LIST (THROW-DIE) (THROW-DIE))              ;;; create a list with two random numbers
6 )
7 (DEFUN BOXCARS-P (A B)
8 (AND (EQUAL '6 A)                      
9 (EQUAL '6 B)
10 )
11 )
12 (DEFUN SNAKE-EYES-P (A B)
13 (AND (EQUAL '1 A)                       
14 (EQUAL '1 B)
15 )
16 )
17 (DEFUN INSTANT-WIN-P (A B)
18 (OR (EQUAL '7 (+ A B))                  
19 (EQUAL '11 (+ A B))
20 )
21 )
22 (DEFUN INSTANT-LOSS-P (A B)
23 (OR (EQUAL '2 (+ A B))
24 (EQUAL '3 (+ A B))
25 (EQUAL '12 (+ A B))
26 )
27 )
28 (DEFUN SAY-THROW (A B)
29 (COND ((BOXCARS-P A B) 'BOXCARS)                 ;;; make use of function BOXCARS_P
30 ((SNAKE-EYES-P A B) 'SNAKE-EYES)           ;;; make use of function SNAKE_EYES_P
31 )
32 )
33 (DEFUN CRAPS ()
34 (LET THROW (THROW-DICE))                        ;;; get initial roll of the dice
35 (COND ((INSTANT-WIN-P (FIRST THROW) (SECOND THROW)) 
36 (LIST 'THROW (FIRST THROW) 'AND (SECOND THROW) '-- (+ (FIRST THROW) (SECOND THROW)) '-- 'YOU 'WIN))
37 ((INSTANT-LOSS-P (FIRST THROW) (SECOND THROW))
38 (IF (EQUAL 'NIL (SAY-THROW (FIRST THROW) (SECOND THROW)))   ;;; if Nil then LIST appropriate output
39 (LIST 'THROW (FIRST THROW) 'AND (SECOND THROW) '-- (+ (FIRST THROW) (SECOND THROW)) '-- 'YOU 'LOSE)
40 (LIST 'THROW (FIRST THROW) 'AND (SECOND THROW) '-- (SAY-THROW (FIRST THROW) (SECOND THROW)) 
41 '-- 'YOU 'LOSE)))
42 (T (LIST 'THROW (FIRST THROW) 'AND (SECOND THROW) '-- 'YOUR 'POINT 'IS (+ (FIRST THROW) 
43 (SECOND THROW))))
44 )        ;;; end COND
45 )           ;;; end LET
46 )