+2002-01-23 Richard M. Stallman <rms@gnu.org>
+
+ * play/tetris.el: (tetris): New defgroup.
+ (tetris-use-glyphs, tetris-use-color, tetris-draw-border-with-glyphs)
+ (tetris-default-tick-period): Convert to defcustom.
+ Added * in docstring to indicate user variable.
+ (tetris-update-speed-function, tetris-mode-hook, tetris-tty-colors)
+ (tetris-x-colors, tetris-buffer-name, tetris-buffer-width)
+ (tetris-buffer-height, tetris-width, tetris-height)
+ (tetris-top-left-x, tetris-top-left-y): Convert to defcustom.
+
2002-01-22 Richard M. Stallman <rms@gnu.org>
* bindings.el (mode-line-copied-mode-name): New variable.
;; ;;;;;;;;;;;;; customization variables ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-(defvar tetris-use-glyphs t
- "Non-nil means use glyphs when available.")
-
-(defvar tetris-use-color t
- "Non-nil means use color when available.")
-
-(defvar tetris-draw-border-with-glyphs t
- "Non-nil means draw a border even when using glyphs.")
-
-(defvar tetris-default-tick-period 0.3
- "The default time taken for a shape to drop one row.")
-
-(defvar tetris-update-speed-function
+(defgroup tetris nil
+ "Play a game of tetris."
+ :prefix "tetris-"
+ :group 'games)
+
+(defcustom tetris-use-glyphs t
+ "*Non-nil means use glyphs when available."
+ :group 'tetris
+ :type 'boolean)
+
+(defcustom tetris-use-color t
+ "*Non-nil means use color when available."
+ :group 'tetris
+ :type 'boolean)
+
+(defcustom tetris-draw-border-with-glyphs t
+ "*Non-nil means draw a border even when using glyphs."
+ :group 'tetris
+ :type 'boolean)
+
+(defcustom tetris-default-tick-period 0.3
+ "*The default time taken for a shape to drop one row."
+ :group 'tetris
+ :type 'number)
+
+(defcustom tetris-update-speed-function
'tetris-default-update-speed-function
"Function run whenever the Tetris score changes
Called with two arguments: (SHAPES ROWS)
SHAPES is the number of shapes which have been dropped
ROWS is the number of rows which have been completed
-If the return value is a number, it is used as the timer period.")
+If the return value is a number, it is used as the timer period."
+ :group 'tetris
+ :type 'function)
-(defvar tetris-mode-hook nil
- "Hook run upon starting Tetris.")
+(defcustom tetris-mode-hook nil
+ "Hook run upon starting Tetris."
+ :group 'tetris
+ :type 'hook)
-(defvar tetris-tty-colors
+(defcustom tetris-tty-colors
[nil "blue" "white" "yellow" "magenta" "cyan" "green" "red"]
"Vector of colors of the various shapes in text mode
-Element 0 is ignored.")
-
-(defvar tetris-x-colors
+Element 0 is ignored."
+ :group 'tetris
+ :type (let ((names `("Shape 1" "Shape 2" "Shape 3"
+ "Shape 4" "Shape 5" "Shape 6" "Shape 7"))
+ (result `(vector (const nil))))
+ (while names
+ (add-to-list 'result
+ (cons 'choice
+ (cons :tag
+ (cons (car names)
+ (mapcar (lambda (color)
+ (list 'const color))
+ (defined-colors)))))
+ t)
+ (setq names (cdr names)))
+ result))
+
+(defcustom tetris-x-colors
[nil [0 0 1] [0.7 0 1] [1 1 0] [1 0 1] [0 1 1] [0 1 0] [1 0 0]]
"Vector of colors of the various shapes
-Element 0 is ignored.")
-
-(defvar tetris-buffer-name "*Tetris*"
- "Name used for Tetris buffer.")
-
-(defvar tetris-buffer-width 30
- "Width of used portion of buffer.")
-
-(defvar tetris-buffer-height 22
- "Height of used portion of buffer.")
-
-(defvar tetris-width 10
- "Width of playing area.")
-
-(defvar tetris-height 20
- "Height of playing area.")
-
-(defvar tetris-top-left-x 3
- "X position of top left of playing area.")
-
-(defvar tetris-top-left-y 1
- "Y position of top left of playing area.")
+Element 0 is ignored."
+ :group 'tetris
+ :type 'sexp)
+
+(defcustom tetris-buffer-name "*Tetris*"
+ "Name used for Tetris buffer."
+ :group 'tetris
+ :type 'string)
+
+(defcustom tetris-buffer-width 30
+ "Width of used portion of buffer."
+ :group 'tetris
+ :type 'number)
+
+(defcustom tetris-buffer-height 22
+ "Height of used portion of buffer."
+ :group 'tetris
+ :type 'number)
+
+(defcustom tetris-width 10
+ "Width of playing area."
+ :group 'tetris
+ :type 'number)
+
+(defcustom tetris-height 20
+ "Height of playing area."
+ :group 'tetris
+ :type 'number)
+
+(defcustom tetris-top-left-x 3
+ "X position of top left of playing area."
+ :group 'tetris
+ :type 'number)
+
+(defcustom tetris-top-left-y 1
+ "Y position of top left of playing area."
+ :group 'tetris
+ :type 'number)
(defvar tetris-next-x (+ (* 2 tetris-top-left-x) tetris-width)
"X position of next shape.")