diff options
| author | Thomas Fitzsimmons <fitzsim@fitzsim.org> | 2020-11-29 17:24:11 -0500 |
|---|---|---|
| committer | Thomas Fitzsimmons <fitzsim@fitzsim.org> | 2020-11-29 17:30:25 -0500 |
| commit | eaebbd5d475fcf214c1e07657e02dced82744bf4 (patch) | |
| tree | e7a581bbabe4fcf07a487d93b461a46ccb4ee6e8 | |
| parent | f86863a53cbd716cf94a949743f48c624943dbea (diff) | |
slime-volleyball.el: Allow more experimental slime
* slime-volleyball.el (slime-volleyball-experimental-slime): New
variable.
(slime-volleyball-training-maximum-expected-value): Use new
variable.
| -rw-r--r-- | slime-volleyball.el | 68 |
1 files changed, 35 insertions, 33 deletions
diff --git a/slime-volleyball.el b/slime-volleyball.el index 150551e..788e0b5 100644 --- a/slime-volleyball.el +++ b/slime-volleyball.el @@ -273,6 +273,8 @@ (defvar slime-volleyball-endvar nil "Ending scene variable.") (defvar slime-volleyball-music-player-process nil "Object representing process playing music.") +(defvar slime-volleyball-experimental-slime nil + "Non-nil to make the slime being trained more experimental.") (cl-defstruct slime-volleyball-slime "A player in the game of slime volleyball" @@ -373,39 +375,39 @@ (let* ((max-val (max left right jump stop none)) (max-list nil) (rand-max nil) (index 0)) ;; Uncomment to make the learning slime more experimental. - ;; (if (eq (random 10) 3) - ;; (elt '((0 slime-volleyball-slime-left) - ;; (1 slime-volleyball-slime-right) - ;; (2 slime-volleyball-slime-jump) - ;; (3 slime-volleyball-slime-stop) - ;; (4 slime-volleyball-slime-none)) - ;; (random 3)) - (dolist (check (list left right jump stop none)) - (when (< (abs (- check max-val)) 0.001) - (push (list index - (elt (list 'slime-volleyball-slime-left - 'slime-volleyball-slime-right - 'slime-volleyball-slime-jump - 'slime-volleyball-slime-stop - 'slime-volleyball-slime-none) - index)) max-list)) - (setq index (1+ index))) - (when (> (length max-list) 1) - (setq rand-max (elt max-list (random (length max-list))))) - (cond - (rand-max rand-max) - ((< (abs (- left max-val)) 0.001) - '(0 slime-volleyball-slime-left)) - ((< (abs (- right max-val)) 0.001) - '(1 slime-volleyball-slime-right)) - ((< (abs (- jump max-val)) 0.001) - '(2 slime-volleyball-slime-jump)) - ((< (abs (- stop max-val)) 0.001) - '(3 slime-volleyball-slime-stop)) - ((< (abs (- none max-val)) 0.001) - '(4 slime-volleyball-slime-none))) - ;;) - )) + (if (and slime-volleyball-experimental-slime + (eq (random 10) 3)) + (elt '((0 slime-volleyball-slime-left) + (1 slime-volleyball-slime-right) + (2 slime-volleyball-slime-jump) + (3 slime-volleyball-slime-stop) + (4 slime-volleyball-slime-none)) + (random 3)) + (progn + (dolist (check (list left right jump stop none)) + (when (< (abs (- check max-val)) 0.001) + (push (list index + (elt (list 'slime-volleyball-slime-left + 'slime-volleyball-slime-right + 'slime-volleyball-slime-jump + 'slime-volleyball-slime-stop + 'slime-volleyball-slime-none) + index)) max-list)) + (setq index (1+ index))) + (when (> (length max-list) 1) + (setq rand-max (elt max-list (random (length max-list))))) + (cond + (rand-max rand-max) + ((< (abs (- left max-val)) 0.001) + '(0 slime-volleyball-slime-left)) + ((< (abs (- right max-val)) 0.001) + '(1 slime-volleyball-slime-right)) + ((< (abs (- jump max-val)) 0.001) + '(2 slime-volleyball-slime-jump)) + ((< (abs (- stop max-val)) 0.001) + '(3 slime-volleyball-slime-stop)) + ((< (abs (- none max-val)) 0.001) + '(4 slime-volleyball-slime-none))))))) ;; The following is from computer slime's perspective. ;; |
