The   game of Pig   is a multiplayer game played with a single six-sided die.   The
object of the game is to reach   100   points or more.  
Play is taken in turns.   On each person's turn that person has the option of either:

 Rolling the dice:   where a roll of two to six is added to their score for that turn and the player's turn continues as the player is given the same choice again;   or a roll of   1   loses the player's total points   for that turn   and their turn finishes with play passing to the next player.
 Holding:   the player's score for that round is added to their total and becomes safe from the effects of throwing a   1   (one).   The player's turn finishes with play passing to the next player.


Task

Create a program to score for, and simulate dice throws for, a two-person game.



Related task

   Pig the dice game/Player


(defconstant +max-score+ 100)
(defconstant +n-of-players+ 2)
 
(let ((scores (make-list +n-of-players+ :initial-element 0))
      (current-player 0)
      (round-score 0))
  (loop
     (format t "Player ~d: (~d, ~d). Rolling? (Y)"
             current-player
             (nth current-player scores)
             round-score)
     (if (member (read-line) '("y" "yes" "") :test #'string=)
         (let ((roll (1+ (random 6))))
           (format t "~tRolled ~d~%" roll)
           (if (= roll 1)
               (progn
                 (format t
                         "~tBust! you lose ~d but still keep your previous ~d~%"
                         round-score (nth current-player scores))
                 (setf round-score 0)
                 (setf current-player
                       (mod (1+ current-player) +n-of-players+)))
               (incf round-score roll)))
         (progn
           (incf (nth current-player scores) round-score)
           (setf round-score 0)
           (when (>= (apply #'max scores) 100)
             (return))
           (format t "~tSticking with ~d~%" (nth current-player scores))
           (setf current-player (mod (1+ current-player) +n-of-players+)))))
  (format t "~%Player ~d wins with a score of ~d~%" current-player
          (nth current-player scores)))