woodmelon 发表于 2006-3-21 13:13:45

ERM事件生成器【老帖关闭】

由fallening提供的源代码,我自己随便作成的
一运行就知道怎么用了,记得生成文件时要加上后缀txt
该程序不完美,不会自己判断输入正确与否,但稍懂VC的都应该会改
希望fallening能继续完善
不过对中文版的SoD地图,是很方便的
yunings马上用来测试一下吧.附上源文件

我的电脑没装VC,是在公司生成EXE后上传上来的

[ 本帖最后由 sea9413 于 2009-4-7 19:10 编辑 ]

yunings 发表于 2006-3-21 13:20:39

唔,下来测试一下,咔咔

yunings 发表于 2006-3-21 13:33:00

唔……

晕菜了,这个.exe文件无法支持中文输入啊,只能输入英文字符……

提几个建议(偶不懂VB……):

1、事件描述不支持回车换行功能,能否改进?

2、为了完美显示事件剧情,最好能加上每行的字符限制,限定在31个字符以内,超过的话自动换行,就不用手动换行了。另外,每个剧情处理不能超过255个字符,超过的话提示再开启一个相同语法的事件继续。

3、生成的文件可否自带.ERM的后缀?

不过话说回来,要是真的完善这个小程序,还真是会轻松不少,很多人都可以加入汉化剧情的队伍了。

fallening加油啊,完善了偶给你颁发勋章!

woodmelon 发表于 2006-3-21 15:20:25

找fallening吧,上次让他生成EXE上传上来,好几天了,都没反应
最后竟然是我自己来生成的,还要到公司才能搞
VC不太懂,但C还是懂一些的,估计要实现yunigs要的功能并不会太难
yunings还是联系他吧...最好让他做成可视界面的

zjcadd 发表于 2006-3-21 19:56:10

强烈抗议 加 强烈敬佩

强烈抗议 为什么不放在 ERM讨论里呢!

lysfox 发表于 2006-3-22 16:51:09

算法给我,我帮大家制作成用VB编写的exe程序,让它在windows下运行

yunings 发表于 2006-3-22 17:08:47

源代码如下:


#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;   
}

woodmelon 发表于 2006-3-22 17:28:10

水哥加油啊...
我现在上班时间在VC
因为暂时不忙
还打算自己学了即写,估计不难
VB应该容易多

junjun5211314 发表于 2007-8-16 03:53:09

水哥做好了吗?怎么没后文了。。
页: [1]
查看完整版本: ERM事件生成器【老帖关闭】

捐赠