cnCalc计算器论坛

 找回密码
 注册
搜索
查看: 5568|回复: 6

[fx-9860/9750系列] [Add-in][Lib]dOutput 模拟控制台

[复制链接]
发表于 2012-1-27 20:24:23 | 显示全部楼层 |阅读模式
计算器程序
程序名称: dOutput 模拟控制台
平台: fx-9860GII fx-9860G & Slim fx-9750GII 
系统/软件要求: 暂无
版本号: 1.01
类型: 其他 
作者: Anderain Lovelace (diameter)
大小(K): 129
更新日期: 2012-01-27
描述: 详见贴
已知缺陷: 暂无
源代码: 开源/部分开源
本帖最后由 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的使用方法完全一样
看下面代码,就实现了一个简单的console
  1. int dConsole ()
  2. {
  3.     char buf[128];

  4.     *buf = '\0';

  5.     dPrintf ("Welcome to Console\n");

  6.     while (1)
  7.     {
  8.         dPrintf("\nC:\\>");
  9.         dStreamRedrawScreen (dStdOut);// in fact , you may also use dStdOutRefresh
  10.         dGetLine(128,buf);
  11.         dPrintf(buf);
  12.         buf = '\0';
  13.     }
  14. }
复制代码
图: test.bmp

至于清除屏幕,使用dStream中的函数dStreamDestory把dStdOut内容清空即可

注意!若想使用dStdOut,光把源文件添加进你的工程可不够,一定要在AddIn_Main里面初始化dStdOut(调用dStandardOutputInitialize函数即可)
另外想要将dStdOut的内容显示到屏幕,需调用dStdOutRefresh函数

dOutput.zip

129.16 KB, 下载次数: 72, 下载积分: 金钱 -1

评分

参与人数 2金钱 +5 收起 理由
GWHBOB + 2 优秀文章
zhengran14 + 3 欢迎探讨

查看全部评分

发表于 2012-1-27 20:28:13 | 显示全部楼层
顶一个,小饕又出新作了
发表于 2012-1-27 21:16:56 | 显示全部楼层
不错
发表于 2012-1-29 16:43:30 | 显示全部楼层
我那个命令行写的非常复杂的说,学习一下。
现在在ns的lua方面,ihacker推迟吧
发表于 2013-1-27 21:34:54 | 显示全部楼层
不能输入加减乘除符号,也不能输入小数点。请问在程序中,如果要输入一个float,用什么函数?进一步如果要输入的是整数或字母呢?
发表于 2014-12-15 18:14:45 | 显示全部楼层
顶一下………………
发表于 2014-12-15 18:14:59 | 显示全部楼层
再顶………………
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|cnCalc计算器论坛

GMT+8, 2024-12-4 00:41 , Processed in 0.064909 second(s), 27 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表