我在Lisp中编写一个简单的connect-4程序,理想情况下,每个玩家(红色,黑色)在显示游戏状态时都会有自己的颜色.有谁知道如何打印彩色ASCII字符?这一般是怎么做的?我正在使用emacs 23,因此解决方案可能特定于emacs本身.
无论如何,我已经检查了hyperspec,看看FORMAT是否可以做到但到目前为止还没有运气.提前致谢.
Emacs中文本的外观由面控制.可以通过叠加或文本属性更改面.以下是使用后者的示例:
;; Emacs-Lisp (insert (propertize "foo" 'font-lock-face '(:foreground "red")))
但是,如果游戏是在SBCL中实现的,那么您需要一种与SBCL程序中的Emacs通信的方法.因为看起来你正在使用Slime,使用Swank(它是Slime的一部分)可能是最方便的:
;; Common-Lisp (swank::eval-in-emacs '(with-current-buffer (slime-repl-buffer) (insert (propertize "foo" 'font-lock-face '(:foreground "red")))))
无耻的自插:您可能想尝试一下,它是在 Web 浏览器中运行的 Common Lisp 的图形终端。它使用 html 来打印内容,所以你可以这样做:
(gtfl-out (:p :style "color:red;" "some characters"))
Run Code Online (Sandbox Code Playgroud)