RPG能感动你吗?

RPG游戏与感动
作者通过回忆多款经典RPG游戏如《秋之回忆》、《天使小夜曲》等,表达了对简单快乐游戏时光的怀念及现代游戏复杂性的无奈。文中提到因年龄增长和心境变化,对游戏的感受也随之改变。

在天涯看到一个谈RPG和感动的帖子,印象比较深,收藏一下:

>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

很多人说我得了心理强迫症,我一直不信,最近才逐渐相信了。例如我总是喜欢自己虚构出一个观点,然后再虚构另一个观点,对比两个观点哪个更正确,这个过程经常令我的胃部分泌不正常。两年多以前,我在飞机上遇到一个医生,她看了我一眼就说:“你的脾胃不好啊!”我心想:“多半是半夜胡思乱想害的。”
  
又比如说我总是喜欢拿着RPG游戏的说明书或攻略,看着那些婉转动人的剧情CG,默默抑制泪水。我没有夸张。刚才我欣赏了一下《秋之回忆》系列的 CG,差不多四年之前我曾经目睹主角跟彼方在咖啡馆里的重逢,后来主角还在地摊上碰到了一个迷路的女孩子,那以后我没有玩下去,所以就不记得了。然后就是《天使小夜曲》,我非常喜欢站在药店柜台里的那个纱丽雅,比精心打造的13岁的女主角更讨人怜爱。《樱花大战》是一个非常出色的系列,尤其是在巴黎的3代,我不止一次完成主角和库莉希奴的结局,却又不得不承认艾莉卡是一个非常失败的角色——我的电脑里现在还有《巴黎在燃烧吗》的片头曲和库莉希奴的主题曲。
  
《交响乐之雨》是我喜欢的类型,1年多之前我买了正版,但竟然没有玩下去。《轩辕剑》系列的外传总是做的比正传更好,《天之痕》的悲剧结局极其震撼人心,而《苍之涛》则在各个方面都达到了中文RPG的最高水准。我总是那么喜欢RPG, 但《轩辕剑5》已经不是我的风格了,我受不了过于缓慢的游戏节奏和过于频繁的战斗。我想看剧情,很多很多感人的剧情,生活化的剧情,平凡而神圣的剧情,让我事后可以反复热泪盈眶的剧情。差点忘了说,《新神奇传说3》虽然画面很差,却是我回忆最多的RPG之一,我永远忘不了主角和瓦妮缇初次相遇的那张CG。当然,我还必须指出,《心跳回忆》是一个弱智的游戏,虽然我曾经沉浸在其中数十个小时,但我实在想不起来什么感人的剧情。
  
每当我打开游戏信息网站,或者在游戏软件店里看货架,就发现自己已经落后于时代。现在的人们喜欢全3D的绚丽视觉效果,动辄几百兆的大型动画,令人眩晕的战斗系统,永远也看不懂的名词术语解释,无论如何也掌握不了的操作方法……再也找不到《秋之回忆》《天使小夜曲》那种简单的快乐,让时间流逝、情节自然出现的快乐;也不会有《新神奇传说》那种拙朴和精巧混合的奇妙乐趣;至于《樱花大战3》和《苍之涛》的天才,在它们的后辈身上仿佛已经绝种了。
  
我曾经是一个非常容易被感动的人。任何稍微有水平的RPG剧情都能让我魂绕梦牵许多夜晚,甚至许多年。我会在潜意识里想象如果自己处在那个舞台上会怎么做,主角在剧情结束后过着怎样的生活,为什么我们的世界如此平庸,不能像RPG的剧情那样精彩绝伦。RPG的剧情给人带来的乐趣,永远是在回忆里—— 在玩游戏时,偶尔会感到枯燥乏味,甚至希望故事早点结束。但是一旦故事结束,就化为永恒,赚取大量眼泪。现在无论花多少钱和时间,都买不到那内心深处的快乐了。
  
这个时代如同车轮飞驰,呼啸而过,把我这落后时代的老朽之人扔在后面,深陷在回忆的泥淖中不能自拔。无论在虚构的剧情中,还是在真实生活的剧情中,我都从来不曾走出回忆。过去的事情就像一张幕布,把我包裹,我安静地站在黑暗中,眼底浮现出无数场景或者CG. 我曾为之落泪的、感人肺腑的剧情,已经不知道被扔在哪个角落,只有深夜才会被开启;我曾为之落泪并且惹其落泪的那几个人,有的消失了一年,有的消失了若干年,只留下我这孤单的一个人。过去有人指着我的鼻子说:“你已经老了,认命吧,这时代不属于你。”从某种意义上讲,这话是正确的,因为我相信一生再也不会有过去的感动。人的心灵会随着岁月流逝、经历累积而麻木,现在我离麻木只差一步之遥,很快就要变成毫无色彩的人了。

<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

文章中说的《秋之回忆》、《天使小夜曲》、《樱花大战》,我都没有玩过。《秋之回忆》、《天使小夜曲》这两个名字还是第一次看到。《天之痕》、《苍之涛》倒是玩过。《苍之涛》给我的印象比较差,感觉故事比较压抑,只是还记得故事中清秀的小姑娘和巨大的机关狐。我印象最深的游戏应该是《轩辕剑三——云和山的彼端》和《天之痕》了。故事也快忘了,但还记得李靖仇和小雪、玉儿在鲸鱼背上的画面,弹琵琶的玉儿和银色白发的小雪。还有一个很喜欢的游戏叫《炼金术士艾莉》。总是打不出好结局,只好看了攻略。这个游戏可能不算RPG。

其实喜欢哪几个游戏与我们玩游戏时的年龄和心境有关。当然游戏的质量不能太差。除此之外,在我们怀念游戏的背后,其实更怀念的是玩这些游戏时的年华,那种容易感动的心境。

这个帖子的作者如果还能被RPG游戏感动,就和老朽挨不上边了。我虽然曾经喜欢RPG,但从多年前打《幻想三国志》打睡着了后,就不玩了。我觉得自己不再会被游戏感动,这说明我已经走过亮丽多彩的时代而进入冗长、乏味的成人队伍。不过,我保留了一个梦想,像天空之城。

city.jpg
<think>好的,我现在需要处理用户的问题:在AS400(现在称为IBM i)中,C程序如何调用RPG程序,以及这种方法的可行性。首先,我得回忆一下AS400平台上的编程环境。AS400使用集成式数据库和独特的操作系统,支持多种编程语言,包括RPG、C、COBOL等。用户想知道C程序调用RPG程序是否可行以及具体方法。 首先,可行性方面。根据我的知识,IBM i系统支持不同语言编写的程序之间的调用,只要遵循正确的参数传递和接口规范。RPG和C都可以编译成可执行模块,因此理论上C调用RPG是可行的。不过,需要确认参数传递的方式是否兼容,比如参数的类型、传递顺序、值传递还是引用传递等。 接下来是具体方法。可能需要使用原型声明(prototype)在C程序中定义RPG程序的接口,确保参数类型和调用约定匹配。RPG程序通常使用参数列表,而C程序则需要正确声明这些参数的结构。此外,可能需要使用特定的编译器指令或绑定目录(binding directory)来链接两个程序。 另外,引用[1]提到勤达睿的工具可以分析包括RPG和C在内的源代码,这可能涉及到程序间的接口分析,说明在IBM i环境中不同语言的程序协同工作是常见的,进一步支持了可行性。 关于参数传递,RPG程序可能有不同的调用规范,比如使用*ENTRY PLIST来定义参数列表,而C程序则需要使用extern关键字声明外部函数,并确保参数的数据类型对应。例如,RPG中的字符字段可能需要对应C中的字符数组,并注意字符串的结束符问题。 还需要考虑程序调用的动态链接还是静态链接。在IBM i中,通常使用动态调用,即CALL命令,但需要确保被调用的RPG程序已经存在且在正确的库中。此外,程序间可能需要通过服务程序(service program)或模块化方式组织,方便调用。 可能遇到的问题包括参数类型不匹配、内存对齐问题、调用规范不一致等。例如,RPG默认使用大写参数名,而C区分大小写,需要注意命名一致。另外,数值类型的精度和格式也需要对应,如RPG的压缩十进制与C的整型或浮点型的转换。 总结步骤可能包括:1. 在RPG程序中定义清晰的接口和参数列表;2. 在C程序中声明RPG程序的原型;3. 使用适当的编译器选项确保兼容性;4. 测试调用并处理可能的参数转换问题。 还需要参考IBM的官方文档,确认具体的编译器支持和调用规范,确保方法的正确性。例如,使用#pragma linkage指令指定调用约定,或者使用ILE(集成语言环境)来绑定不同语言编写的模块。 最后,生成相关问题时要考虑用户可能的后续疑问,如参数传递的示例、错误处理、性能影响等。</think>在IBM i(原AS400)系统中,C程序调用RPG程序是完全可行的。以下是具体实现方法和注意事项: ### 一、技术可行性 1. **系统架构支持**:IBM i的集成语言环境(ILE)允许不同编程语言模块互相调用,支持C与RPG/LE(现代RPG)的程序级交互[^1] 2. **参数兼容性**:通过明确定义参数结构和调用规范,可解决数据类型差异(如RPG的压缩十进制与C的数值类型转换) ### 二、实现方法 **步骤1:RPG程序准备** ```rpgle ctl-opt main(main_rpg) export; dcl-proc main_rpg export; dcl-pi *n; numIn packed(5:0); charIn char(10); charOut char(20); end-pi; charOut = 'RPG处理结果:' + charIn; return; end-proc; ``` **步骤2:C程序调用声明** ```c #pragma linkage(RPGPROC, OS) void RPGPROC(int *numIn, char charIn[10], char charOut[20]); int main() { int num = 100; char input[10] = "测试输入"; char output[20]; RPGPROC(&num, input, output); printf("输出结果: %s\n", output); return 0; } ``` **步骤3:编译绑定** 1. 使用`CRTRPGMOD`编译RPG模块 2. 使用`CRTCMOD`编译C模块 3. 通过`CRTPGM`创建最终程序: ``` CRTPGM PGM(MYLIB/MYPROG) MODULE(MYLIB/RPGMOD MYLIB/CMOD) ``` ### 三、关键注意事项 1. **参数对齐**: - RPG默认4字节对齐,C需使用`#pragma pack指令`保持对齐一致 - 结构体参数需确保内存布局匹配 2. **数据类型映射**: | RPG类型 | C类型 | 转换方法 | |------------------|-----------------|------------------------| | Packed Decimal | long long | 使用`%DEC`函数转换 | | Character | char[] | 注意字符集编码一致性 | | Indicator | short | 0/1对应false/true | 3. **错误处理**: ```c #pragma exception_handler(RPGERROR) void RPGERROR(_INPTR struct _EXCP *excpt) { printf("错误代码: %08X\n", excpt->data_excp.excp_id); } ``` ### 四、性能优化建议 1. 使用服务程序(Service Program)封装常用RPG功能 2. 对高频调用场景采用程序指针调用方式: ```rpgle dcl-pr extProc extproc(*dclcase); parm1 packed(15:5); end-pr; ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值