在花园中睡了很久

在花园中睡了很久

        我睡了长长的一觉,不知道睡了多久,大概是久违的绿色森林的气息让我想起了泰达希尔——那个伴随着我出生,慢慢成长的地方。等我醒来时,发现自己竟然在不知不觉之间躺在草地上睡着了。

        看着这个在人类的城堡中的花园,自己仿佛进入了仙境一般,这里不仅有德鲁依德教师甚至还有我们精灵独有的月亮井。虽然这个月亮井似乎已经没有了魔力,不过对我们精灵来说却有更特别的意义。月亮井的存在就象征了我们精灵族的强盛的力量。每个精灵们生活的地方也都需要月亮井,这样才能有足够的力量与黑暗和混沌对抗。

        虽然是睡了很久,但不知道为什么还是觉得很困。我给一个远方的朋友写了封信,然后回到旅店,继续睡觉。

发布于5月31日 11:16 | 评论数(0) 阅读数(1054) | 我的文章

心情不好

心情不好

        真是非常糟糕的一个星期,周围一切都没有变,自己就莫名其妙的不爽起来,就如同被捏作一团塞到冰箱的冷藏柜里面。试着去想想原因,结果一无所获,只能用莫名其妙来形容。如果一定要说原因的话,大概是厌倦了。厌倦了早上起来到公司,晚上回家睡觉的生活,厌倦了整天看着代码的coding生活,厌倦了这些一点都没有创意的事情。也许这才是所谓的工作的本质吧,就像人们常挂在嘴边的“That's just job.”不过转念想想,世界上那么多人都是怎么生活过来的,每天都做着差不多的事情,人不发疯才怪。

        窗外刚下过雨,虽然是下午五点了,天还是比刚才亮了一些。音响里Broken Wings的声音少了刚才夹杂的雨声,变的动听了些。还是一如既往的无所事事,星期天的白天对于我这样的人来说是没什么意义的,坐在电脑前,写写东西也许是最合适不过的了,真是悠闲啊。

        又想起了QQ堂,不知怎么的,感觉比泡泡堂好的多。虽然他们从界面到游戏内容基本上都一样,不过它可以窗口模式运行就觉得做的不错。加上本身的风格比较轻松,作为休闲游戏应该能够做的不错的吧。想到了冒险岛,强制全屏还锁定鼠标,用窗口模式运行需要附加一个DLL。不过这个破解也真够强的,游戏程序调用d3d8.dll,于是有人就自己做了相同接口的一个DLL放到游戏目录下,于是游戏运行的时候先调用他做的DLL,然后通过这个DLL调用系统中的d3d8.dll,唯一改变的地方就是在初始化的地方强制改成了窗口……能想到这个方法的真是厉害。

        好久没上魔兽世界了,柯蕾思的旅程还很漫长啊,那些朋友们不知道都过的怎么样了。有的人为了玩游戏连高考都不管了,真不知道是怎么想的。这大概就是所谓的魔兽的魔性了,呵呵。他们等级都很高了,大概以后又不能一起去冒险了,不过去交些新的朋友也不是坏事情。其实魔兽是个适合慢慢玩的游戏,那些拼命练级的人大概不会明白的吧,我甚至怀疑他们为什么玩游戏都不清楚。应该说我们中国奇特的文化造就了那些练级狂吧,人总是喜欢自己被承认的,一旦在某个方面没有得到承认,逃避也是理所当然的。而中国几千年的儒家思想就在我们脑子甚至是DNA里面写下了“唯读书有用论”。所以那些在学业上没有被承认的人就在其他方面寻找让别人承认自己的途径。恰好,网络游戏的游戏规则就是这样:付出了时间精力就能得到承认。因为这条规则简单而且始终有效,再加上游戏世界的纯粹,就这样中国玩家庞大的队伍就出来了。

        这个星期又没好好睡觉,不知道心情糟糕是不是和睡眠有关,大概被人从梦里面拉会现实世界总有点遗憾。晚上看漫画的时候总是忘记了时间,看过头了。真的很少有像《五星物语》这样大气的作品,里面的故事都发生在一个大的背景之下,而主角们所做的事情虽然觉得很小,却把整个大的背景向前推进了一大步。真有种“创造历史”的感觉。《五星》里面故事的时间跨度不大,最多也就10年(相对于整个五星的历史来说是在是很短的时间),但是其中很恰当的嵌入了前后几千年甚至前后世代的事情,让人觉得他们整个宇宙的事情都涵盖在了这部漫画里面。而里面主角们的命运互相关联,每个人以及他们所做的事情都会或多或少的影响到其他人的故事情节,特别是他们身边那些伴随着他们一起渡过漫长岁月,经历过生死,甚至付出生命代价的Fatima们,更是把故事都串连了起来,把整个五星的故事编织成了魅力十足的珍珠项链。

 

发布于5月29日 20:11 | 评论数(0) 阅读数(1133) | 我的文章

One Sound : Broken Wings

One Sound : Broken Wings

I know this will not remain forever
However it's beautiful
Your eyes, hands and your warm smile
They're mey treasure
It's hard to forget
I wish there was a solution
Don't spend your time in confusion
I'll turn back now and spread

My broken wings still strong enough to cross the ocean with
My broken wings how far should I go drifting in the wind
Higher and higher in the light

My broken wings still strong enough to cross the ocean with
My broken wings how far should I go drifting in the wind
Across the sky,just keep on flying

空から落ちてくるのは あれは雨ではなくて……


折断的天使之翼   无法复原的伤痕
永远的烙印        无尽的悲伤
带着罪责           带着救赎

仅有的微弱的呼吸也被带走 留下血色的沧桑与荒芜
无法知道究竟还能前行多远 但至少可以飞过那片海洋……


发布于5月22日 0:00 | 评论数(2) 阅读数(1673) | 我的文章

遇到好人

         昨天去了赤脊山,因为那里有不少任务都没有做,而我的等级在不知不觉之间已经31了,所以打算先把几个25级的任务先Close掉。刚跑到赤脊山就被人加入了队伍,但是左跑右跑更本不知道去那里。开始也不说做什么任务,跑了半天倒矿洞才说“不是这里”。昏倒,我立马走人了。
        不过我还是比较走运的,来到石堡,里面好热闹,居然还有人和我一样是一个人来的,于是马上组了队伍。在刷BOSS的地方遇到了一个队伍,超级航母,那个可能是队长的人,他愿意帮我们打任务。
        回到城里交了任务的时候,有个之前组队做过任务的名字又长又难读的法师M我,问我愿不愿意帮她做任务。任务不难,就在石堡西边的一个塔里面,只是遇到了一伙人强了我们的任务,真是可气。而且做完任务二话没说走人了,害我们多等了好久。不过任务不难,只是为了帮那个人引开怪物自己死了一次,呵呵,西天说这是常有的事情,看来他也常干这样的傻事。
       之后又回到了石堡,做另外一个任务,居然又遇到了超级航母的队伍。他们的人都挺热心的,愿意帮我做任务,而他们的队伍里面只有2个人没有做这个任务。于是我们没做任务的组了一队,很快搞定。
       回旅馆的时候回想了一下,一天居然做了2个精英任务,呵呵,爽死。

发布于5月19日 0:00 | 评论数(1) 阅读数(1507) | 我的文章

通向天才之路 : 把模块塞到动态连接库里去


通向天才之路 : 把模块塞到动态连接库里去

Made in Coollen

    你还在用静态链接库生成一个巨大的EXE文件吗?过时了,换动态链接库吧。其中的好处被微软说了一大堆,我就不在这里废话了。说实话,这样做没什么好处,只是大家都这样做,我也跟着就这样做,仅仅如此。

    为此,在下特意看了一些资料,微软那帮人的资料虽然详细,但是实在是罗嗦。唉,不如拉个人来问问来的快,呵呵。

    说回正题,微软的DLL标准可真是麻烦,除了标准的C/C++外还有MFC DLL和扩展的MFC DLL,汗~~。不过我只对写标准C/C++的DLL感兴趣。其实这个接口也很简单,在DLL那边只需要在函数声明前加一个前缀,就可以在主程序中得到这个函数的入口地址了,之后想干什么都可以。具体的做法如下:

    // 输出函数的前缀
    #define  DLL_EXPORT   extern "C" __declspec( dllexport )

    DLL_EXPORT VOID Func()
    {
        ...
    }

    简单吧?这样DLL这边就搞定了,你还可以输出类和全局变量,但是我是不需要了。

// 输出类的前缀
#define  DLL_CLASS_EXPORT   __declspec( dllexport )

// 输出全局变量的前缀
#define  DLL_GLOBAL_EXPORT   extern __declspec( dllexport )


    之后是EXE这边,虽然多了点东西,不过还是很简单的。第一件要做的事情是LoadLibrary,把要想要打开的DLL载入。

    HINSTANCE hInst = NULL;
    hInst = LoadLibrary("Render.dll");

    if (!hInst)
    {
        MessageBox(g_hWnd,"无法加载 Render.Dll ","Error",MB_OK);
    }

    还记得上面我声明的那个Func()函数吗?我不能直接得到那个函数,但是可以把那个函数的地址取出来。其实函数地址使用起来和函数是一样的。只不过,为了使用方便,需要定义一个函数指针的类型。如果要指向上面的那个Func(),则它的函数指针的类型定义如下:

    typedef void (CALLBACK* LPFUNC)(void)

    之后需要做的是声明一个指针,然后得到DLL中Func()的地址。GetProcAddress函数的第一个参数是之前得到的DLL的实例句柄,后面一个是DLL中那个函数的函数名。
      
    LPFUNC pFunc = NULL;
    LPFUNC pFunc = (LPFUNC)GetProcAddress(hInst, "Func");

    OK,到此为止已经差不多完成了,只欠最后一步调用那个函数:
   
    pFunc();


    以上的知识是基础中的基础,接下来才是技巧所在,所以一定要认真看哦!
-----------------------------------------------------------------------------

    你一定想过把整个渲染模块制作成一个对象,然后得到这个对象的指针后就可以任意渲染了。如果全部写成代码,那无疑是最快捷的,但是缺点是很会暴露细节给不要或者你不希望的人看到,甚至于拿到了整个渲染模块的代码,这是相当可怕的。当然你也可以制作成静态链接库(Lib),这无疑是个不错的想法,但是缺点也是非常明显的。你可能会发现在发布版本中想替换调其中一些部分是不可能的,而对开发者而言使用静态链接库则更苦:他不得不使用你所用得编译器或是相关的开发环境。哦~天哪,这对于我而言也是个不小的麻烦,我想用GCC编译我的主程序,因为我想试试我刚拿到的一个新的十分小巧的集成开发环境:Relo v0.99。而可恶的微软却只提供了VC编译器的Lib,迫使我不得不使用VC来开发图形渲染模块。所以我也就不得不做好写DLL的心里准备。

    于是我动手干了。我做了许多打算,最后发现最简单的方法是最好的方法。所以我按照我最原始的本能开始设计我的DLL。我做了一些限制:这样让程序看起来比较简单,条理也较为清楚。我规定每个DLL引擎对象都需要有一个ID来标识,以及DLL中唯一的接口函数:GetEngineObject。它的作用就是向主EXE程序返回一个DLL中与所给ID相对应的对象的地址。只要你愿意,你可以通过这个函数得到所有在那个DLL中的对象的地址。我想,这样的限制应该不过分吧。

    对于主EXE来说,要做的事情就是像上面的那些代码一样,得到GetEngineObject函数的地址,然后导出全部EXE需要的引擎对象。对于DLL来说,则需要解决一个如何让GetEngineObject得到引擎对象地址的问题。这个问题其实也不难解决,只要在引擎对象中声明一个全局的队列,当创建了一个需要暴露给EXE的引擎对象的时候,把它的地址和相对应的ID写到这个全局的队列中。而当主EXE调用GetEngineObject的时候,GetEngineObject就到这个全局队列中查找给它的ID,并返回对应的地址。实现一个队列我想对各位看官来说并不难吧,呵呵。

    OK,你的程序现在已经可以得到DLL中的对象了,现在你可以放心的把你的DLL交给需要它的人了。

发布于5月16日 12:47 | 评论数(0) 阅读数(942) | 我的文章

通向天才之路 : 游戏引擎的误区

 

通向天才之路 : 游戏引擎的误区

Made in Coollen


        在这个代码泛滥的年代,我在网络上搜索着,突然就发现了一个称为“××引擎”的东西。现在,我们身边的类似的“引擎”我已经看到了很多,大部分都是开放源码的。我并不是说开放源码不对,而是这些“引擎”是否是一个真正可用的引擎?

        不知大家是否知道引擎的来源?最早的引擎只是游戏的一些通用代码,之后随着软件工业的发展慢慢完善起来的。一个引擎,哪怕只是其中一个模块,也可以说是一个广义的“引擎”,但这并不是我们想要的。在现代的软件工程中,引擎作为一个产品而言,必须是好用的,稳定的软件。其中包括游戏主程序,引擎的编辑器,说明文档(教程)和DEMO。现在的游戏的引擎必须是这样一种完整的系统。
 
        然而我们的现状是,一般的开源的引擎都是属于个人作品(或者是几个同人的作品),这种引擎一般是程序员自己写着做研究用的试验品,很少有完善的引擎。大公司可以有能力自己研发或者购买一个成熟的引擎,而小公司为了成本考虑却只好在这些不可靠的引擎底层上做再次开发。非常危险!!

        我看到过这样的一个故事:一个不错的创意和一帮还可以的美术凑一起打算开发游戏,但是却没有程序的人才。之后就找一个自认为很NB的程序,找了一个开源的引擎……。当然我也不能说这种情况就一定不能开发出好的游戏。但是,我最不愿意看到的就是一个游戏的的开发因为程序的原因而中止。

        引擎的优劣,直接关系到游戏的好坏。在目前的这种盲目的参与游戏开发的热浪之中,必须清楚的认识到这点。

        如何才能算是好的引擎?关系一个引擎好坏的无非就是“稳定性”,“效率”,“易用性”。

        稳定性是对引擎底层的一个要求,一般来说错误大多会出现在底层。如果没有达到稳定性要求的引擎底层,绝对是一个失败的作品。稳定性是引擎最起码的要求,你认为玩家会买一个BUG百出的游戏吗?除非是忠实的FANS,不然就只有白痴了。(其实这2种人都差不多)

        效率。一个稳定的底层,如果运行效率低下,也是不可接受的。这也是考验程序员水平的一个标准。有丰富经验的程序员可以把代码写的很高效,还可以改进一些算法上效率,如果感觉效率跟不上还会想办法优化以达到要求。(强人就是强人啊)

        易用性的东西涉及的是最广泛的,它直接影响了游戏的开发难度和开发时间。编辑器的设计是和游戏策划非常有关系的,现在网上也有一些现成的东西可以参考,对于3D游戏而言,各家开发的场景编辑器都具有相似的地方,反而2D游戏的编辑器要多样一些,毕竟2D游戏的种类比较多,表现形式也很多样。

        程序接口的易用性是我最关注的问题,因为这是和程序的开发密切相关的。用户如何最简洁的使用引擎来编程是一个很复杂的问题。程序接口精简到什么程度?程序封装到什么程度?是否使用脚本语言?如何使用脚本语言?这一串的问题都是非常值得研究的。以下是我见过的几种设计:

        一,使用Python对接口进行连接,执行Python脚本,通过Python脚本来控制游戏的逻辑和流程,以此驱动整个游戏。这样做最大的好处就是编写Python脚本的程序员和引擎的设计师们可以方便的区分开来,可以保证引擎代码的不外泄,而写脚本的程序员和不用管底层的实现。缺点是明显的,Python脚本的效率是一个问题,在写脚本的的时候需要考虑一些效率上的问题。另外接口的连接工作也占一定的工作量,一旦接口修改,损失会很大。目前网易的2D游戏就是这样开发的。

        二,只使用简单的脚本,主要游戏逻辑由程序完成。这种方式常见于传统RPG,这类脚本可以说是配置文件。游戏由程序来驱动,通过读取配置文件中的信息来绘制或者触发事件。一个游戏可能有很多种不同功能,不同格式的配置文件。配置文件又可能有配置文件来管理,构成一个互相依赖的关系。


(以上是正文)
—————————————————————————————————————————
(以下是废话)

        引擎的开发是很吃力的事情,绝对不要自己一个人尝试,至少要拉个人陪你受罪,特别是目前还在研究阶段的人。这是忠告!!
        研究用的或者是实验性的引擎千万不要想用来开发商业游戏,这样做还不如自己重新开发。这是忠告!!
        自己写的引擎,觉得写的不好,一定要重写,这样对提高水平帮助很大。而将来也会成为你的重大资本。这也是忠告!!
        本天才的话一定要听,不然会吃亏的。这是忠告!!

发布于5月16日 12:46 | 评论数(0) 阅读数(983) | 我的文章

通向天才之路 : 2D引擎图底层图形模块分析

 

通向天才之路 : 2D引擎图底层图形模块分析

Made in Coollen

 

        我记得从看灌蓝高手开始,我就喜欢上了樱木花道这个角色.这个四肢发达头脑简单的单细胞动物身上有种说不清楚的可爱,特别是那种练习时候的认真努力和在别人面前炫耀时候大声笑着说:"我果然是天才".试想一下,CSDN之中有几人做的到如此率真.

        许多人认为程序员应该谦虚,应该低调一点.但是这种想法是在是让我觉得很好笑呢,那些人有没有想过为什么?即使我在网上被人踢出讨论群,即使被一大堆人说三道四,我依然要大声的说:"我是天才!!" 因为即使我现在不是,将来总有一天会是的.


以上是废话
——————————————————————————————
以下是正文


        想当年,当我开始研究DirectDraw的时候,网上的资料实在是太有限了,在那个没有google的年代里面找到适合自己的文章真的像是在捞针一样.而当我找到了合适的资料,写出了第一个控制图片元素在屏幕上移动的时候,我不禁想到了这样一个问题:如果游戏中每一个元素都需要自己写代码把BMP或者JPG文件载入页面,然后再手工BLT到主页面上去,那么把一个游戏全部载入内存显示出来就足够把你累的半死了.

        而当我思考如何解决这个问题的时候,我已经没有时间了,我不得不整理我的行装到大学军训去了.不过这个问题一直遗留了下来.如何管理图形资源才可以够方便,而且可以把更多的心思放在游戏设计上面.
 
        起初我想到的是一个功能复杂的图片类,在需要使用图片的时候生成一个然后载入图片,并且在适当的时候渲染它自己.我本以为这个是一个不错的方法,一直到写LAZYMAN2.0的2D部分的时候,我不得不考虑这样的问题,图片的半透明效果怎么办?因为考虑到效率的原因,我必须先渲染没有半透明效果的图片,之后再渲染有半透明效果的图片.而如果不这样做,渲染的结果就有可能会出错,而这点是绝对不允许的.

        唯一的办法只有把图片都统一集中管理,并且把图片分类,半透明的和不透明的.维持一个显示列表.这起初让我觉得很麻烦,因为集中管理的结果就是读取图片必须通过这个管理的类(之后我将这个类称为管理器).而设置图片的属性,比如在屏幕上的位置啊什么的,也都必须通过管理器.而后来我发现这样的结果是让代码变的规范了,在写代码的时候就考虑了结构上的一些问题,代码看起来好看了不少.

        2D图片管理器实现了集中化管理,而使用句柄作为外部对图片的唯一标识,也使得看起来更像专业的代码.这里的句柄其实只是为了标识出全局唯一一个图片的作用,最简单而有效的办法是把管理器里面的那个图片元素的地址赋值给句柄.


———————————————————————————————
以下的是OniEngine中的部分代码
(我之后会拿OniEngine或者Lazyman做为例子,
OniEngine只是我作为例子写的,Lazyman是一个可以用的底层)


class OniEngine2D 
{
public:
        OniEngine2D();
        virtual ~OniEngine2D();
        
        // 初始化函数,参数列表里面相关的参数省略了

        bool Init(...);    
        // 外部调用的渲染循环                                            
        bool Render();    
        // 释放所有资源
        bool Release();                                                    
        ......

        // 载入图片
        HPIC LoadPicture(const char* file);
        // 设置图片显示位置            
        bool SetPos(HPIC hPic, int x, int y);            
        ......

        // 显示图片
        bool Show(HPIC hPic);                              
        // 隐藏图片
        bool Hide(HPIC hPic);                               

        // 还有很多其他函数,不一一列举了,看实际情况添加
};

 

发布于5月16日 12:45 | 评论数(0) 阅读数(923) | 我的文章

通向天才之路 : 前言

通向天才之路 : 前言


 

        我本来想以这样的方式开头:"我是无辜的,是沈崴逼我写的."但是我想了想还是放弃了.作为一个有文化的人,作为一个有品味的人,作为一个将来要成为天才的人,我怎么可以用这种周星星式的无哩头对白来写这样一个学术性的东西?我应该用史上最有内涵,最幽默,也最具有说服力的台词:

        "写引擎需要理由吗?"
        "不需要吗?"
        "需要吗?"
        "不需要吗?"
    ......

        正如前文所说的,"我们只是探讨一下,何必那么认真呢?"引擎这个东西是给人用的,做出来的引擎,管它黑的还是白的,只要好用,就是好引擎.这个正是本文的观点.所有引擎都是做给人用的,并不是功能越多越细,用起来越灵活越好.而是从"为了使用方便"的角度出发,来定制接口,设计底层.而在后面的一系列的文章里面,我的重点也是在如何定制功能,设计出好用的接口上面.

        你知道我最崇拜的一个人是谁吗?是唐僧,不是西游记里面的那个,是会唱"Only You"的那个.要说我最佩服他什么,那就是他的"婆婆妈妈唧唧歪歪"的废话,因为我始终想不出多少文字来填充以下的这些空白,我只能靠着在脑袋里的仅存的一点的幽默像挤牙膏一样挤出一段一段的文字.虽然如此,我还是要说出一个简单的至理名言:学习编程的最快的方法就是——看代码.

        现在天上下着雨,(如果没有你可以想象一下),还打着雷,你应该回家收衣服去了.

发布于5月16日 12:43 | 评论数(0) 阅读数(939) | 我的文章

Frist Image, Sunshine & the Ghost


Frist Image, Sunshine & the Ghost

 

第一映象.

 

 黑色细丝边眼镜框.
 从早上起来第一刻开始到再度回到梦乡之前,黑色细丝边镜框就一直跟随着我,把我的真正的眼神全部包含在了那薄薄的透明的镜片后面,别人看到的仅仅是一个虚像,一个不真实的或者说一成不变的眼神.

 笑.
 人应该要笑的.快乐的时候应该笑,悲伤的时候更应该笑.我总是不停的笑着,或微笑,或傻笑.当你总是笑着的时候别人无法看到你真正的心情.抑或喜,抑或悲,笑着的时候,自己只有一种感觉,那就是自己是一个真正的白痴.

 沉默.
 会说话的人不一定喜欢谈笑,而我是一个喜欢谈笑但是不爱说话的人.沉默不是我的过错,而是上帝给了我的忠告,叫我想说话之前先思考一个问题:我要说的话是不是废话.

 


阳光.

 

 天才.
 我始终坚信自己是一个天才.我始终坚信,只要我相信自己是个天才自己就一定会是个天才.我也始终坚信,天才是通过每一天积累的天赋,每一天积累的对自己是一个天才的信心,以及每一天积累的从大大小小的事情上面得到的一点一滴的人品值才慢慢形成的.
 
 个性.
 人本来是没有个性的,我也一样,我是因为想让自己变的有个性而变的有个性的.然而有的候我还是没有个性的,就像一只肥肥的大猫,慵懒的躺在窝里享受阳光,看着周围的环境快速的变化着,让人以为我是一个没有才能不讨人喜欢的没人尊重的只会上网和睡觉的可怜虫.

 笨小孩.
 我什么都不懂的,和周围的人比起来我有太多的不懂.不懂什么恩爱情愁,不懂什么人情事故,不懂什么尔虞我诈,不懂什么"六道轮回",不懂什么"获得永生",不懂什么"夫复何求",不懂什么"逝者如斯".我仅仅明白我自己是个笨小孩,简单不复杂,天真不幼稚,身体里面都是活力和热情.

 


魂.

 

 半杯水.
 也许你不相信,我在性格测试中选了"只有半杯水".我本质上的悲观决定了我本质上的胆小怯懦没自信,但是我相信这种缺陷可以被一种叫BT的东西或者精神所克服,当你觉得自己做的事情够超出自己的想象范围,够BT的时候,自己就会大胆的放开的去做.然后我变的很张扬,觉得自己很BT,自己感觉真好.

 宿命.
 你总觉得自己的命运好像被谁操纵了一样.其实世界就是一个巨大的随机概率模型,今天和谁交了朋友,明天遇到了老同学,这些都是这个随机系统里面的概率函数的结果.没有人能够抗拒,也没有人能够改变.这就是宿命.我所能做的,就是在一个可以确定概率函数结果的集合里面选择一个进行下去,到了一定的时候再列出一个集合再选择一个.然而结果是否真的是你想要的,只有上帝知道.因为概率函数只能估计结果的范围,谁都不知道真正的结果是什么样子.

 活着.
 有人问上帝,人为什么活着.别做梦了,他不会说的.有人问佛祖,人为什么活着.别做梦了,他也不会说的.我问我自己,人为什么活着.我只想告诉自己,人不为什么而活着.人活着本来是没有意义的,想要自杀随时都可以.不过我不能死那么早,我还有一个梦想没有完成,一个让原本没有意义的人生变的有意义的梦想.

 

发布于5月16日 12:39 | 评论数(1) 阅读数(1455) | 我的文章

遥远的回忆 — 最初的艰辛


遥远的回忆 — 最初的艰辛

 

        记得有人问我,我的第一行代码是什么?我的第一段编译的程序是什么?我很费力的想,却怎么也想不起来了.对于我人生来说非常有意义的事情,我居然什么都不记得了.5年的时间把我的记忆刷洗的一塌糊涂,我真的很难清楚的想像当时的我是在什么状态下写下的我的第一行代码的.留在我的脑海里的只有这样几个东西:深夜,台灯,被窝里面,一本QBasic教程,以及初中升高中的升学考的压力.

        你大概很难想象,最初的我买QBasic教程的时候,连QBasic在哪里可以找到都不知道.然而我又是一个喜欢乱翻东西的人,很幸运的,我在硬盘的某个地方找到了它.至于它是怎么存在在那里的,我真的什么都不清楚.就这样,一个伟大的时刻诞生了,那台花了一万块钱的联想电脑对我来说终于有了除玩游戏之外的一个用处.

        而当我觉得自己幸运万分的时候,却发现我不知道自己能用QBasic编出什么样的游戏.不过这个问题很快就被求知的快乐所取代,我可以说是慢慢的自然的就学会了很多东西.考试后的暑假帮了我的很大的忙,我有足够的时间玩游戏和学东西,而不用再为没时间而发愁了.

        暑假里面参加了一个学习班,就在我就读的高中里面.在那里认识了将来教我们计算机的老师.可惜的是,我是在完全想不起当初教的课程是什么样的内容,但是那幅老学究样子般的计算机老师的样子却十分深刻的印在我头脑里,有着最早那一代程序员的木讷式的幽默.

        在高中结交了死党,一起学习程序.当时我们研究VB,在完全没有人指导的情况下,只有靠着用零花钱买的书籍学习.看着一本本价格不低的教程平躺在书店的书架上,着实感觉到一种诱惑.现在回头看起来VB实在是很简洁而又方便的东西,不过在当时的我们来说,真的有够复杂,书中的概念我理解了好久,不明白个所以然.后来干脆不管,照着书本用起来就是,知道这样写可行便行.好在学习VB并不花太多时间,而且我们有足够的时间一边学编程,一边玩游戏.而在我看来,我就喜欢这样的自由,没人逼着你学,和学习课本完全不同的感觉.我而最不喜欢的事情就是"被人逼着".

        如果一开始就知道写游戏的艰辛,我怕自己真的会放弃从头选择,或是仅仅当成业余消遣.然而万幸的是,当时的我不知道!是的,我不知道,这真的太好了!对当时的我们来说,幻想着用VB的那一堆控件写一个游戏真的好像是在为着梦想努力一样.(虽然我不否认这个从技术角度来说是可以实现的.)我们设想过我们自己的世界,设想过在那个世界中我们几个人不同的角色,设想过在那个世界中生活中的细节以及好多小说电影中才有的情感经历...然后,现实中的压力让我们不得不远离我们得梦想.渐渐的,大家也忘记了这个,开始了更多的对现实世界的尝试.

        升大学的暑假,我是真的学了点有用的东西.我买了一本讲DirectX 7的书,语言是VC的,而且用的是MFC.这是我第一次感觉到学习编程的困难.而在这之前的学习,似乎都是十分的顺利,顺利到只需要看看书就自然而然的会了的程度.现在的我看来,觉得遇上这样的困难必然的.让一个连C的语法都不清楚,连指针概念都没有的人学DX+MFC,那简直是下地狱.如果当初就有个指导的人,大概就不会这样了.(其实是有的,可惜我那时的习惯就是自己研究,觉得这样有乐趣.)

        另外一个最大的问题是,我不习惯长时间看屏幕.要知道,在那之前我在电脑上看大段的文字就已经很累了,何况要看代码要更集中注意力,眼睛要盯的更累一些.还好老天没有让我患上更深的近视,这似乎是上天的安排,即使是那个最难熬的暑假,我的眼睛还是经受住了考验,一直到现在都没有换眼镜.

        最初的一段时间很郁闷,搞了一段时间的VC,就连那个界面就已经搞的我头大了,我只能按照书本上的一点一点的做,然而我并不知道那本书的深度,以至于后面的章节中没有一步一步的详细说明,我就根本写不下去了.就在我快要放弃的时候,我翻出了DirectX 7的SDK,里面竟然有我熟悉的VB如何使用DX的例子.老天真是对我太好了!很快我就研究了起来.

        然而我还是不幸的发现自己的重大问题,我没有阅读长代码的能力.我发现之前我学VB只是像拼图游戏中看图片一样,仅仅是知道语法和一些概念,至于如何组合写成一个完整图片,我就一点经验都没有了.我甚至没有写过超过100行的程序!然而靠着每天凌晨3点钟之后的那一段绝对安静的时间,我看代码时候的那种急躁慢慢的少了.

        一边看SDK中FOR VB的例子,一边看那本用VC语言的书,我写出了一个控制屏幕上一个飞机移动的演示后,就到了大学开学的日子.然而,暑假中的那段日子,是我觉得过的最充实的一段时光.为了学到更多更多,我每天都在努力挣扎,克服自己的一个一个困难.每天呼吸着凌晨四五点钟的清凉的空气,每天看着东边渐渐变亮的天空,每天在妈妈烧的午饭的香味中起床,吃着那顿对我来说是早饭的午餐,每天在有空调的房间里面自由自在的做自己觉得有趣而且有意义的事情...也许那个时候的我根本没有想到之后会发生的事情,只是把整个世界看成了电脑机箱那样大小的存在,在机械的电子信号的世界里面保持着一份纯真的心态,觉得世界其实可以很单纯很单纯.

   

————————————————————————————————
写在最后:

高中的日子总是过的飞快,在学风严谨(意思就是不能谈恋爱)的学校里面,即使没有女朋友可以谈,也不会让我觉得有什么空虚.我不仅有一帮朋友聚集在身边,他们都是死党,平时在学校也不会觉得无聊,而且2个计算机老师虽然对编程不是很懂,不过对我们还是非常不错的.叛逆而沉静的性格让我有很多亮点之外不会显得过于偏激.在逃过了最后一次高中运动会之后,我几乎就没有怎么运动过了.少了晚饭后和死党之一漫步在空旷的运动场上,夕阳也变的没有了气氛.想起和分手的女友在进高中的时候自由选择位置,互相选择了对方,总有点感伤.从PS崛起的时候就紧紧让灵魂追随游戏的自己竟然现在连台游戏机都没有,是否又有些可笑.让平时成绩和我差不多的一个女生落到了第4批的那段高考的非常时期,我每天的煎熬为的仅仅是给父母的一个宽慰.

灵魂的外壁有多坚强,内心而又是多脆弱.在被打击了无数次,并且在将来还要被打击无数次的我看来,内心也将会慢慢的变的坚强吧.在我看过了更多的人情世故之后,现在的我是否又会被将来的我认为是白痴呢?


 

发布于5月16日 12:38 | 评论数(0) 阅读数(915) | 我的文章

总共2页 第页 下一页

版权所有 © 2008 Ci123.com 育儿博客 向育儿网举报 网络110报警服务