[Add-in][Lib]dOutput 模拟控制台
本帖最后由 diameter 于 2012-1-27 20:34 编辑你是否熟悉了在PC上编写CUI的C语言程序呢?你是否对printf函数恋恋不舍呢?昨天我试了wotof1996的iHacker,发现命令行界面实在是有点蛋疼...我想起了当年还在用RGSS写游戏脚本时写的Console,于是就付诸实践,把其移植到了9860上。
我使用了一个简单的链表,实现了伪标准输出(输出至屏幕终端),没什么新意,主要是实现了输出自动换行(此行不够了跳到下一行)和滚屏。
输入有两个函数,一个通过一个编辑框输入。函数原型
int dGetLineBox (char * s,int max,int width,int x,int y);
用户可以指定输入最大字符长度、输入框字符数(宽度)和其位置
另一个输入函数依赖伪标准输出dStdOut
int dGetLine (int max,char * s);
它会自动在dStdOut光标最后位置进行输入,输入内容不能换行,但是可以滚动(当然,输入内容不会被加入dStdOut,需要用户手动加入)
输出建议只使用dPrintf,与printf的使用方法完全一样
看下面代码,就实现了一个简单的consoleint dConsole ()
{
char buf;
*buf = '\0';
dPrintf ("Welcome to Console\n");
while (1)
{
dPrintf("\nC:\\>");
dStreamRedrawScreen (dStdOut);// in fact , you may also use dStdOutRefresh
dGetLine(128,buf);
dPrintf(buf);
buf = '\0';
}
}图:
至于清除屏幕,使用dStream中的函数dStreamDestory把dStdOut内容清空即可
注意!若想使用dStdOut,光把源文件添加进你的工程可不够,一定要在AddIn_Main里面初始化dStdOut(调用dStandardOutputInitialize函数即可)
另外想要将dStdOut的内容显示到屏幕,需调用dStdOutRefresh函数 顶一个,小饕又出新作了 不错 我那个命令行写的非常复杂的说,学习一下。
现在在ns的lua方面,ihacker推迟吧 不能输入加减乘除符号,也不能输入小数点。请问在程序中,如果要输入一个float,用什么函数?进一步如果要输入的是整数或字母呢? 顶一下……………… 再顶………………
页:
[1]