Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feature request: briefly flash newly guessed word in different color #1

Open
oantolin opened this issue Jan 9, 2015 · 1 comment
Open

Comments

@oantolin
Copy link

oantolin commented Jan 9, 2015

Great game, thanks for writing it!

When playing with a large list of words, I have a hard time telling if I've guessed a new word or simply retyped I word I already had. It would help to have a newly guessed word appear in a different color. I guess strictly speaking knowing I really got a new word is unnecessary, but it's reassuring.

Here's a very hacky way to implement the change: when a correct guess is made, instead of putting (word t) in the data structure, mark it differently, say as (word new), then when drawing that entry use a different face and change the symbol new to t so on the next redrawing it will appear in jlr-correct-face. Here's a diff:

diff -c your-jumblr.el modified-jumblr.el
*** your-jumblr.el      2015-01-09 11:15:37.899773390 -0500
--- modified-jumblr.el  2015-01-09 11:00:49.907370068 -0500
***************
*** 130,135 ****
--- 130,136 ----
  ;;; faces
  (make-face 'jlr-scrable-face)
  (make-face 'jlr-correct-face)
+ (make-face 'jlr-flash-face)
  (make-face 'jlr-cheat-face)
  (make-face 'jlr-blank-face)
  (make-face 'jlr-guess-face)
***************
*** 140,145 ****
--- 141,152 ----
                      :foreground "#859900"
                      :height 1.5)

+ (set-face-attribute 'jlr-flash-face nil
+                     :inherit 'fixed-pitch
+                     :weight 'bold
+                     :foreground "#008599"
+                     :height 1.5)
+ 
  (set-face-attribute 'jlr-blank-face nil
                      :inherit 'fixed-pitch
                      :height 1.5)
***************
*** 375,380 ****
--- 382,390 ----
        (cond
         ((equal -1 status)
          (propertize output 'face 'jlr-cheat-face))
+        ((equal 'new status)
+         (setcdr elt '(t))
+         (propertize output 'face 'jlr-flash-face))
         (status
          (propertize output 'face 'jlr-correct-face))
         (t
***************
*** 428,434 ****
      (when (-contains? data try)
        (let ((ind (-elem-index try data)))
          (setq data (remove try data))
!         (setq data (-insert-at ind (list word t) data))))
      (setq jlr-game-data
            (list (list (jlr-scramble-word scr) "")
                  data))))
--- 438,444 ----
      (when (-contains? data try)
        (let ((ind (-elem-index try data)))
          (setq data (remove try data))
!         (setq data (-insert-at ind (list word 'new) data))))
      (setq jlr-game-data
            (list (list (jlr-scramble-word scr) "")
                  data))))

Diff finished.  Fri Jan  9 11:16:45 2015

This seems very undisciplined and I'm sure if you wanted to implement this feature you'd find a better way to do it.

@mkmcc
Copy link
Owner

mkmcc commented Feb 2, 2015

hi! thanks so much for writing, and I apologize for my slow response.
this is a great idea!

i unfortunately don't have time to implement it at the moment... if you
submit your patch as a pull request, though, I'd be happy to try it out and
merge it in if it works.

thanks again!
Mike

On Fri, Jan 9, 2015 at 11:23 AM, oantolin notifications@github.com wrote:

Great game, thanks for writing it!

When playing with a large list of words, I have a hard time telling if
I've guessed a new word or simply retyped I word I already had. It would
help to have a newly guessed word appear in a different color. I guess
strictly speaking knowing I really got a new word is unnecessary, but it's
reassuring.

Here's a very hacky way to implement the change: when a correct guess is
made, instead of putting (word t) in the data structure, mark it
differently, say as (word new), then when drawing that entry use a
different face and change the symbol new to t so on the next redrawing
it will appear in jlr-correct-face. Here's a diff:

diff -c your-jumblr.el modified-jumblr.el
*** your-jumblr.el 2015-01-09 11:15:37.899773390 -0500
--- modified-jumblr.el 2015-01-09 11:00:49.907370068 -0500


*** 130,135 ****
--- 130,136 ----
;;; faces
(make-face 'jlr-scrable-face)
(make-face 'jlr-correct-face)

  • (make-face 'jlr-flash-face)
    (make-face 'jlr-cheat-face)
    (make-face 'jlr-blank-face)
    (make-face 'jlr-guess-face)


    *** 140,145 ****
    --- 141,152 ----
    :foreground "#859900"
    :height 1.5)

  • (set-face-attribute 'jlr-flash-face nil

  •                 :inherit 'fixed-pitch
    
  •                 :weight 'bold
    
  •                 :foreground "#008599"
    
  •                 :height 1.5)
    

    (set-face-attribute 'jlr-blank-face nil
    :inherit 'fixed-pitch
    :height 1.5)


    *** 375,380 ****
    --- 382,390 ----
    (cond
    ((equal -1 status)
    (propertize output 'face 'jlr-cheat-face))

  •    ((equal 'new status)
    
  •     (setcdr elt '(t))
    
  •     (propertize output 'face 'jlr-flash-face))
     (status
      (propertize output 'face 'jlr-correct-face))
     (t
    

    *** 428,434 ****
    (when (-contains? data try)
    (let ((ind (-elem-index try data)))
    (setq data (remove try data))
    ! (setq data (-insert-at ind (list word t) data))))
    (setq jlr-game-data
    (list (list (jlr-scramble-word scr) "")
    data))))
    --- 438,444 ----
    (when (-contains? data try)
    (let ((ind (-elem-index try data)))
    (setq data (remove try data))
    ! (setq data (-insert-at ind (list word 'new) data))))
    (setq jlr-game-data
    (list (list (jlr-scramble-word scr) "")
    data))))

Diff finished. Fri Jan 9 11:16:45 2015

This seems very undisciplined and I'm sure if you wanted to implement this
feature you'd find a better way to do it.


Reply to this email directly or view it on GitHub
#1.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants