2048: allow configuration via Customize

This commit is contained in:
MitchMarq42 2023-01-15 19:57:53 -09:00
parent 5bf12a119f
commit dcff4255f7

View File

@ -35,18 +35,33 @@
;;; Code: ;;; Code:
(require 'dash) (require 'dash)
(defvar 2048--cell-width 6
"Width of number cells for 2048. Should be at least 4 to fit \"2048\".")
(defvar 2048--board-size 4
"Number of tiles on the board for 2048. 4 is the default.")
(defvar 2048--vertical-sep-char ?│ (defgroup 2048 nil
"Character to use as a vertical border for 2048 cells.") "Play a game of 2048."
(defvar 2048--horizontal-sep-char ?─ :prefix "2048--"
"Character to use as a horizontal border for 2048 cells.") :group 'games)
(defvar 2048--corner-sep-char ?+ (defvar 2048--cell-width 6
"Character to use as the intersection between `2048--vertical-sep-char' "Width of number cells for 2048. Should be at least 4 to fit \"2048\".
and `2048--horizontal-sep-char'.")
Values other than 6 are not currently supported.")
(defcustom 2048--board-size 4
"Number of tiles on the board for 2048. 4 is the default. Can be any number."
:type 'integer
:group '2048)
(defcustom 2048--vertical-sep-char ?│ ; 9478
"Character to use as a vertical border for 2048 cells."
:type 'character
:group '2048)
(defcustom 2048--horizontal-sep-char ?─ ; 9472
"Character to use as a horizontal border for 2048 cells."
:type 'character
:group '2048)
(defcustom 2048--corner-sep-char ?+
;; ?╬ ; needlessly fancy version
"Intersection of `2048--vertical-sep-char'and `2048--horizontal-sep-char'."
:type 'character
:group '2048)
(defun 2048--make-sep-times (delimiter filler cells cellwidth) (defun 2048--make-sep-times (delimiter filler cells cellwidth)
"Return a string of CELLS number of cells, each with width CELLWIDTH. "Return a string of CELLS number of cells, each with width CELLWIDTH.
@ -58,11 +73,10 @@ The cells consist of FILLER and are separated by DELIMITER."
(concat (flatten-tree (list delimiter almost-done-list))))) (concat (flatten-tree (list delimiter almost-done-list)))))
;; (2048--make-sep-times ?> ?- 5 2) ;; (2048--make-sep-times ?> ?- 5 2)
(setq 2048-plus-sep (2048--make-sep-times (defvar 2048-plus-sep (2048--make-sep-times
2048--corner-sep-char 2048--horizontal-sep-char 2048--corner-sep-char 2048--horizontal-sep-char
;; ?╬ ?─ ; needlessly fancy version
2048--board-size 2048--cell-width)) 2048--board-size 2048--cell-width))
(setq 2048-space-sep (2048--make-sep-times (defvar 2048-space-sep (2048--make-sep-times
2048--vertical-sep-char (string-to-char " ") 2048--vertical-sep-char (string-to-char " ")
2048--board-size 2048--cell-width)) 2048--board-size 2048--cell-width))
(defun 2048--pad (number) (defun 2048--pad (number)