mud的颜色

转载 2007年09月14日 13:35:00

    总所周知,ES2类的LPMUD是一个只有文字的世界,因为没有任何图像,所以正
是因为有16种ANSI颜色,才使得我们这个世界变得丰富多彩,更有吸引力。出于一
名巫师和一名网页制作者的考虑,目前的巫师在使用NSI颜色时,常常不是惜墨如
金一点都不用就是不分场合到处乱用,这样对于一个MUD的表现力而言都是不好的
。所以我今天有空就想随便说说有关ANSI COLOR的一些使用方法,给大家参考。

    我们先从源头说起,之所以加了ANSI标示符的字符就可以显示不同的颜色,是
因为通过客户端像zMUD这样的软件,能够从Winsock控件的DataArrival事件中传回
的数据中识别出ANSI标示符,将其后面的字符转换成指定的颜色,在RichTextbox
中显示出来。这涉及一些简单的Windows网络编程,就不多谈了。至于tintin+这些
,虽然在Linux下使用的控件和Windows不同,但原理还是一样的。

    一般来说,要在一个程序中使用ANSI颜色,人人都知道要在头上#include 
<ansi.h>,那么,这个“ansi.h”文件你打开看过了没有呢?在一些welcome文件
中那些初学者看来非常深奥的什么[1;37m这样的字符你明白了它的意思没有呢?让
我们打开/include/ansi.h这个文件看一看吧:

// File : /include/ansi.h
// 这是MUDLIB的标准颜色设置,由Jjgod汉化
#define ESC "
?define CSI ESC + "["
/* 前景色 */
#define BLK ESC+"[30m" /* 黑色 */
#define RED ESC+"[31m" /* 红色 */
#define GRN ESC+"[32m" /* 绿色 */
#define YEL ESC+"[33m" /* 黄色 */
#define BLU ESC+"[34m" /* 蓝色 */
#define MAG ESC+"[35m" /* 紫色 */
#define CYN ESC+"[36m" /* 青色 */
#define WHT ESC+"[37m" /* 白色 */
/* 加强前景色 */
#define HIR ESC+"[1;31m" /* 亮红 */
#define HIG ESC+"[1;32m" /* 亮绿 */
#define HIY ESC+"[1;33m" /* 亮黄 */
#define HIB ESC+"[1;34m" /* 亮蓝 */
#define HIM ESC+"[1;35m" /* 亮紫 */
#define HIC ESC+"[1;36m" /* 亮青 */
#define HIW ESC+"[1;37m" /* 亮白 */
/* 加强背景色 */
#define HBRED ESC+"[41;1m" /* 亮红 */
#define HBGRN ESC+"[42;1m" /* 亮绿 */
#define HBYEL ESC+"[43;1m" /* 亮黄 */
#define HBBLU ESC+"[44;1m" /* 亮蓝 */
#define HBMAG ESC+"[45;1m" /* 亮紫 */
#define HBCYN ESC+"[46;1m" /* 亮青 */
#define HBWHT ESC+"[47;1m" /* 亮白 */
/* 背景色 */
#define BBLK ESC+"[40m" /*黑色 */
#define BRED ESC+"[41m" /*红色 */
#define BGRN ESC+"[42m" /*绿色 */
#define BYEL ESC+"[43m" /* 黄色 */
#define BBLU ESC+"[44m" /*蓝色 */
#define BMAG ESC+"[45m" /*紫色 */
#define BCYN ESC+"[46m" /*青色 */
// #define BWHT ESC+"[47m" /* 白色 */
#define NOR ESC+"[2;37;0m" /* 返回原色 */
/* 新增的Ansi颜色定义字符。由 Gothic april 23,1993 */
/* 注意:这些操作符是为VT100终端设计的。 */
/* 在MUD中,它们可能不一定全部都能正常使用。 */
#define BOLD ESC+"[1m" /* 打开粗体 */
#define CLR ESC+"[2J" /* 清屏 */
#define HOME ESC+"[H" /* 发送光标到原处 */
#define REF CLR+HOME /* 清屏和清除光标 */
#define BIGTOP ESC+"#3" /* Dbl height characters, top half */
#define BIGBOT ESC+"#4" /* Dbl height characters, bottem half */
#define SAVEC ESC+"[s" /* Save cursor position */
#define REST ESC+"[u" /* Restore cursor to saved position */
//#define REVINDEX ESC+"M" /* Scroll screen in opposite direction */
#define SINGW ESC+"#5" /* Normal, single-width characters */
#define DBL ESC+"#6" /* Creates double-width characters */
#define FRTOP ESC+"[2;25r" /* 冻结首行 */
#define FRBOT ESC+"[1;24r" /* 冻结底部一行 */
#define UNFR ESC+"[r" /* 首行和底部一行解冻 */
#define BLINK ESC+"[5m" /* 不断闪亮模式 */
#define U ESC+"[4m" /* 下划线模式 */
#define REV ESC+"[7m" /* 打开反白模式 */
#define HIREV ESC+"[1,7m" /* 亮色彩反白显示 */

       上面就是经过我汉化的的ansi.h文件了,其中有些实在太难译,所以我只
好把原来的留了下来。认真看过上面的这些,就应该基本明白常用的ANSI颜色怎么
用了,所以说,如果不#include <ansi.h>,照样也可以用彩色,你只需要在用的
前面加上;33m这样就行了,这些都很简单,我就不赘述了。这篇文章要谈的重点,
其实是一个ANSICOLOR于zMUD的协调问题。

      基本上绝大多数的MUD玩家都是使用zMUD为客户端软件的,所以你的程序在
zMUD中的显示效果就尤为重要了。问题其实是出现在了在ANSI颜色的使用上,
zMUD和标准的ANSI定义出现了分歧,这种分歧是在zMUD 4.62汉化版后产生的,
zMUD的4.62英文版都应该尚无此问题,但正是因为以前没有问题后来才出现了问题
。你听到这里是不是越来越不明白?那好,我们还是从源头说起吧。下面的“原先
”,就是指zMUD 4.62 英文版及以前的。

     看过上面的定义就应该清楚;xxm这样的定义,也就是HIX这样的定义中,那个
"1;"或者"HI"什么的,是表示粗体的意思,原先的注释中说得清清楚楚的,而原先
的YEL,也就是3m,大概是这种亮度,而倘若变成了HIY或者说;33m的话,就应该是
这样了,这才是标准的用法,而zMUD对中文字体的支持还是不大完善,一般来说就
是使用宋体,假如出现了粗体,也会在屏幕上划得斑驳陆离,本来是这一行的字,
滑到了下面几行去,非常的有碍观瞻。所以以zMUD4.62英文版为预览工具来写的程
序一般是不用HIY而是就用YEL的,因为这样颜色也够亮,显示也没有问题,一切都
很好。

     但到了4.62汉化版以后,就破坏了这个格局。在这个版本以后的所有zMUD,
基本上都是将[1;也就是HI默认解释为高亮,而原来的YEL什么的,就变得很是暗淡
了,比如此版本以后的YEL,显示出来是这样,而HIY呢,就是这样了,因为始终不
出现粗体,所以自然也没有显示的问题。而在原来的那种环境下开发出来的
程序可就惨了,像我的模拟华附,整个MUD的颜色都显得十分暗淡,自然很不具亲
和力了。

     本身问题是很容易解决的,只要调整一下zMUD的设置就可以了,但问题在于
有关颜色的zMUD设置由特别难调整(差不多每个版本我的试过),造成了本身正常
的设置还要迁就不正常的设置了,绝大部分的玩家都不会去调整。因此的你的MUD
如果要使用Ansi颜色就要考虑这个兼容性问题了。

      所以呢,因为绝大部分的MUD玩家使用的都是zMUD 4.62中文版以上的,我建
议还是统一使用“HIX”这种好一点,玩家看起来颜色比较鲜亮,同时也没有粗体
显示不清的问题。低亮度的颜色就少用一些吧,当然,假如你已经全部使用了低亮
度或者高亮度,想转换的话,也可以通过改ansi.h来实现,这比较简单,就
不用我说了吧。

      其实ansi.h还是有很多没有普遍使用的妙处的,这就有待各位自己去发现了

mud的颜色

    总所周知,ES2类的LPMUD是一个只有文字的世界,因为没有任何图像,所以正是因为有16种ANSI颜色,才使得我们这个世界变得丰富多彩,更有吸引力。出于一名巫师和一名网页制作者的考虑,目前的巫...
  • linsanhua
  • linsanhua
  • 2007年09月14日 13:35
  • 1372

hjr教程-MUD游戏(三):android原生游戏编写

wifi调试 手机数据线插电脑上,用android studio做IDE,手机和电脑连接到同一个wifi。 下面的xxx.xxx.x.xxx是手机ip,一般在wifi设置里就能看到。termina...
  • hjrcrj
  • hjrcrj
  • 2018年02月03日 14:58
  • 27

zMUD里的颜色触发

zMUD的trigger允许在pattern中加入ANSI颜色代码,这样,引起触发不仅需要与从MUD中获得的文本匹配,而且也需要颜色一致。这一特性在防止错误触发时非常有用。例如:通常我们会在trigg...
  • woolenhy
  • woolenhy
  • 2004年12月27日 09:55
  • 3396

基于java的mud游戏CoffeeMud(1)--- 安装

先说下安装环境:    1. windows xp sp3中文版    2. mysql5.0    3. CoffeeMud_5_5_2    4. zmud 4.6.2中文版 一、 解压Coffe...
  • lifxue
  • lifxue
  • 2009年11月19日 15:37
  • 2938

武林MUD客户端Zmud

  • 2014年01月04日 19:00
  • 552KB
  • 下载

NetTerm 使用简介

NetTerm 使用教程 凡是 BBS 上的常客,恐怕没有不听说过 NetTerm 的。不错,NetTerm 是一个使用方便,功能强大的终端仿真软件,它可以帮我们将普通的 PC 机仿真成为一...
  • Galdys
  • Galdys
  • 2012年09月27日 14:02
  • 6648

MUD游戏编程 Socket API

Socket API 头文件 #include “winsock.h” #include “ws2tcpip.h”   初始化API 下面列出了初始化和关闭函数: int WSAStartup( WO...
  • sinat_24229853
  • sinat_24229853
  • 2015年04月16日 23:46
  • 686

【转的】MUDLIB各个目录

MUDLIB各个目录现在大部分中文MUD都是在东方故事(esII)基础上发展起来的,其目录结构基本一样,也有个别MUD为了标新立异对个别目录换了个名字以示不同,但其实质没有什么变化。这个做的最可恶的是...
  • zfcbss
  • zfcbss
  • 2011年05月24日 17:33
  • 590

hjr教程-MUD游戏(二):HTML5-APP客户端编写

搭建 方案一用多个HTML页面 方案二用一个iframe改变src 方案三每个页面放到一个DIV中然后js控制displaynoneblock 服务器数据解析 布局 样式 弹窗 数据的接收设计搭建用H...
  • hjrcrj
  • hjrcrj
  • 2016年12月12日 22:20
  • 676

hjr教程-MUD游戏(一):Evennia框架建立一个MUD游戏与游戏基本组成

Evennia 需要环境 安装 具体玩法 游戏主要组成 Evennia一个基于Python的MUD框架,支持tennet和http通信,即可以用经典的MUD客户端访问默认localhost:4000,...
  • hjrcrj
  • hjrcrj
  • 2016年10月13日 19:28
  • 2121
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:mud的颜色
举报原因:
原因补充:

(最多只允许输入30个字)