⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ttt.l

📁 A very small LISP implementation with several packages and demo programs.
💻 L
字号:
# 15may07abu# (c) Software Lab. Alexander Burger# *Board(load "lib/simul.l")(de display ()   (for Y (3 2 1)      (prinl "   +---+---+---+")      (prin " " Y)      (for X (1 2 3)         (prin " | " (or (get *Board X Y) " ")) )      (prinl " |") )   (prinl "   +---+---+---+")   (prinl "     a   b   c") )(de find3 (P)   (find      '((X Y DX DY)         (do 3            (NIL (= P (get *Board X Y)))            (inc 'X DX)            (inc 'Y DY)            T ) )      (1 1 1 1 2 3 1 1)      (1 2 3 1 1 1 1 3)      (1 1 1 0 0 0 1 1)      (0 0 0 1 1 1 1 -1) ) )(de myMove ()   (when      (game NIL 8         '((Flg)     # Moves            (unless (find3 (or (not Flg) 0))               (make                  (for (X . L) *Board                     (for (Y . P) L                        (unless P                           (link                              (cons                                 (cons X Y (or Flg 0))                                 (list X Y) ) ) ) ) ) ) ) )         '((Mov) # Move            (set (nth *Board (car Mov) (cadr Mov)) (cddr Mov)) )         '((Flg)     # Cost            (if (find3 (or Flg 0)) -100 0) ) )      (let Mov (caadr @)         (set (nth *Board (car Mov) (cadr Mov)) 0) )      (display) ) )(de yourMove (X Y)   (and      (sym? X)      (>= 3 (setq X (- (char X) 96)) 1)      (num? Y)      (>= 3 Y 1)      (not (get *Board X Y))      (set (nth *Board X Y) T)      (display) ) )(de main ()   (setq *Board (make (do 3 (link (need 3)))))   (display) )(de go Args   (cond      ((not (yourMove (car Args) (cadr Args)))         "Illegal move!" )      ((find3 T) "Congratulation, you won!")      ((not (myMove)) "No moves")      ((find3 0) "Sorry, you lost!") ) )

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -