- 积分
- 9245409
- 威望
- 181
- 魅力
- 183
- 经验
- 9232198
- 热心度
- 17
- 注册时间
- 2005-11-5
- 最后登录
- 2024-11-20
- 主题
- 567
- 回帖
- 5774
- 精华
- 42
- 阅读权限
- 200
成长值: 30415 TA的每日心情 | 无聊 2020-5-27 00:09 |
---|
签到天数: 24 天 连续签到: 2 天 [LV.4]狂狼人
管理员
精灵奇侠
- 积分
- 9245409
|
发表于 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;
- }
复制代码 |
|