ERM事件生成器【老帖关闭】
由fallening提供的源代码,我自己随便作成的一运行就知道怎么用了,记得生成文件时要加上后缀txt
该程序不完美,不会自己判断输入正确与否,但稍懂VC的都应该会改
希望fallening能继续完善
不过对中文版的SoD地图,是很方便的
yunings马上用来测试一下吧.附上源文件
我的电脑没装VC,是在公司生成EXE后上传上来的
[ 本帖最后由 sea9413 于 2009-4-7 19:10 编辑 ] 唔,下来测试一下,咔咔 唔……
晕菜了,这个.exe文件无法支持中文输入啊,只能输入英文字符……
提几个建议(偶不懂VB……):
1、事件描述不支持回车换行功能,能否改进?
2、为了完美显示事件剧情,最好能加上每行的字符限制,限定在31个字符以内,超过的话自动换行,就不用手动换行了。另外,每个剧情处理不能超过255个字符,超过的话提示再开启一个相同语法的事件继续。
3、生成的文件可否自带.ERM的后缀?
不过话说回来,要是真的完善这个小程序,还真是会轻松不少,很多人都可以加入汉化剧情的队伍了。
fallening加油啊,完善了偶给你颁发勋章! 找fallening吧,上次让他生成EXE上传上来,好几天了,都没反应
最后竟然是我自己来生成的,还要到公司才能搞
VC不太懂,但C还是懂一些的,估计要实现yunigs要的功能并不会太难
yunings还是联系他吧...最好让他做成可视界面的 强烈抗议 加 强烈敬佩
强烈抗议 为什么不放在 ERM讨论里呢! 算法给我,我帮大家制作成用VB编写的exe程序,让它在windows下运行 源代码如下:
#include <iostream>
#include <string>
#include <fstream>
using namespace std;
//全局变量,放置输出的Erm
string Export;
//放置要翻译的事件的数量
const int NUMBER = 1000;
//存放事件描述的字符个数
const int BUFFERSIZE = 10000;
////////////////////////////////////////////////////////////////////////////////
//作用:将坐标(x,y,level)处的事件Discription转换到erm
//输入:事件的坐标(x,y,level)
// 事件的描述 buffer
//输出:
//附注: 发现第三个输入变量为string类型时候,直接在空格处分割字符串,调试未果
// 改用*char类型替换(不解)
////////////////////////////////////////////////////////////////////////////////
string to_erm( const string X, const string Y, const string Level, const char *Buffer )
{
string Out;
//事件注释
Out = "\n//在(" + X + ", " + Y + ", " + Level +" )处的事件" + "\n";
//事件的位置erm
Out += "!?LE" + X + "/" + Y + "/" + Level + ";\n" ;
//事件的描述erm
Out += "!!VRz10:S^\n";
Out += Buffer;
Out += "\n^;\n";
Out += "!!IF:D5/10;\n";
Out += "!!IF:E1/5;\n";
return Out;
}
////////////////////////////////////////////////////////////////////////////////
//作用: 清空输入缓冲区,很重要,调试了半天
////////////////////////////////////////////////////////////////////////////////
void clear_cache()
{
while ( cin.get() != '\n' )
{}
}
////////////////////////////////////////////////////////////////////////////////
//作用:将转换好的erm储存成文件
//输入:全局变量Export
//输出:在当前目录下生成一个文本文件
////////////////////////////////////////////////////////////////////////////////
void to_file()
{
string FileName;
cout << endl << "请输入要输出的文件名称:" << endl;
cin >> FileName;
if ( !cin.good())
{
cout << "错误的文件名称,请重新输入--" << endl;
to_file();
}
if ( cin.good () )
{
ofstream outfile ( FileName.c_str() );
outfile << Export;
cout << "接受输入的文件名----" << endl;
cout << "输出文件完成:)" << endl << endl;
}
}
int main()
{
Export = "\nZVSE\n\n";
//坐标(x,y,level),描述
string x,y,level,discription;
for ( int i = 0; i < NUMBER; ++i )
{
cout << "程序说明:" << endl;
cout << "依照提示输入,注意事件的描述,如果用粘贴的话,确保粘贴的内容里边"
<< endl;
cout << "不包含多个回车----"
<< endl;
cout << "按回车键开始:)" << endl;
clear_cache();
//基本输入部分
cout << endl << "请输入事件的x坐标( 0 - 143 ):" <<endl;
cin >> x;
clear_cache();
cout << endl << "请输入事件的y坐标( 0 - 143 ):" << endl;
cin >> y;
clear_cache();
cout << endl << "事件发生在地上/地下?(0/1)" << endl;
cin >> level;
clear_cache();
cout << endl << "请输入事件的描述" << endl;
char buffer[ BUFFERSIZE ];
cin.get( buffer, BUFFERSIZE, '\n' );
Export += to_erm( x, y, level, buffer );
//询问是否处理下一个事件
cout << endl << "该事件处理完毕\n" << endl;
cout << "继续处理下一个事件?(y/n)" << endl;
clear_cache();
//再清空一次,不放心:)
cin.clear();
char c;
cin.get( c );
if ( ( 'n' == c ) || ( 'N' == c ))
{
break;
}
system ( "cls" );
//用linux的兄弟,把这句改成
//system ( "clear" );
}
//输出到文件
to_file();
system( "pause" );
return 0;
}
水哥加油啊...
我现在上班时间在VC
因为暂时不忙
还打算自己学了即写,估计不难
VB应该容易多 水哥做好了吗?怎么没后文了。。
页:
[1]