Function: gomoku-cross-qtuple

gomoku-cross-qtuple is a byte-compiled function defined in gomoku.el.gz.

Signature

(gomoku-cross-qtuple SQUARE1 SQUARE2 DX DY)

Documentation

Cross every square between SQUARE1 and SQUARE2 in the DX, DY direction.

Source Code

;; Defined in /usr/src/emacs/lisp/play/gomoku.el.gz
(defun gomoku-cross-qtuple (square1 square2 dx dy)
  "Cross every square between SQUARE1 and SQUARE2 in the DX, DY direction."
  (save-excursion			; Not moving point from last square
    (let ((depl (gomoku-xy-to-index dx dy))
	  (inhibit-read-only t))
      ;; WARNING: this function assumes DEPL > 0 and SQUARE2 > SQUARE1
      (while (/= square1 square2)
	(gomoku-goto-square square1)
	(setq square1 (+ square1 depl))
	(cond
	  ((= dy 0)			; Horizontal
	   (forward-char 1)
	   (insert-char ?- (1- gomoku-square-width) t)
	   (delete-region (point) (progn
				    (skip-chars-forward " \t")
				    (point))))
	  ((= dx 0)			; Vertical
	   (let ((n 1)
		 (column (current-column)))
	     (while (< n gomoku-square-height)
	       (setq n (1+ n))
	       (forward-line 1)
	       (indent-to column)
	       (insert ?|))))
	  ((= dx -1)			; 1st Diagonal
	   (indent-to (prog1 (- (current-column) (/ gomoku-square-width 2))
			(forward-line (/ gomoku-square-height 2))))
	   (insert ?/))
	  (t				; 2nd Diagonal
	   (indent-to (prog1 (+ (current-column) (/ gomoku-square-width 2))
			(forward-line (/ gomoku-square-height 2))))
	   (insert ?\\))))))
  (sit-for 0))				; Display NOW