存档

‘电脑’ 分类的存档

开发计划

2009年10月26日 8 条评论

关于开发游戏的计划,恐怕又要虎头蛇尾了。

也许我应该考虑花几个月的时间,把所有的引擎全部过一遍。寻找到最合适的游戏引擎。不过随便定一个时间段,既没有科学性,也没有约束力,更不会产生动力。

我应该想一想,怎么弄。连需求和目标都是一团糟。

其实就当作一场华丽的冒险好了。其实我也没有能力做得多好多好。也没人期待能做到什么地步。唯一有所期待的人只有一个,就是我自己。而对于我来说,我也许欠缺很多东西,但是从来不缺少耐心。

又尝试了一个新的引擎:EasyWay,觉得它有点像PaLib的意思(都是封装中Sprite之类的样子);配置它花了一点时间,主要是因为库依赖的问题(唔,要是用Maven就不会怎么折腾了)。

与其设置一个限期,不如没过一阵子就递交一个调研报告。比如以两周到一个月为期。这个频率既能够让我有足够的时间来琢磨出点可以汇总的东西,又可以保证没有太大的压迫感。

搞了19寸的液晶回来,一直都觉得笔记本的14寸屏幕实在不方便。多了一个屏幕以后,以后会好很多。这个念头事实上也纠缠了我很久。需要一根VGA/S-VGA/DVI连接线。楼下小店有,5元,觉得有点贵。

事实上,就算是19寸的屏幕,对我而言,也不过刚刚够用而已。23寸的甚至更大才好。写代码的人没有人嫌自己的显示器大。而且这个显示器貌似还是宽屏的,宽屏更好。意味着我可以多留一点空间给侧边栏。

这个计划的第一步就是过一遍各种项目,包括各种游戏引擎,比较他们的优劣,适用场合;也包括各种小的游戏的实现,借此也找到灵感和目标,或者干脆站在巨人肩膀上。

这也是个好机会。以前有人跟我说,要看源码,要学习,看源码长功力;我都一个耳朵进一个耳朵出,归根结底,就是没动力。现在选择引擎了,女怕嫁错郎,男怕入错行;随便写个俄罗斯方块,乱涂乱画也结了;真正想做个白白净净的艺术品,唔,还得站在巨人肩膀上。

这一周就算了,我得先把波斯王子4和鬼泣4过关过掉再说。。。话说,这个波斯王子4真的是挺有趣的,简单,要完美又不简单,加上赏心悦目。唔。很不错。不过依然不到收藏的地步。。。真正能够让我收藏的东西,要么是可以联网的,要么是策略性极强的。。。反面教材就是Bioshock,虽然这游戏挺不错,但是没啥可重复性。。。估摸着波斯王子4和鬼泣4也是这种。。。

如果这样搞的话,计划看起来遥遥无期,但其实,只要坚持,结果迟早会来。

每两周或者每月汇总的结果会放到博客上,尽量避免把代码或者过于琐碎的东西放进去,也许做一个表格比较好。研究了哪些东西,有什么特长,哪些特性,喜欢哪些,不喜欢哪些。这样就够了。

这事情想来想去,只能一个人做,不可能找到合作的人。。。除非自己做出一点东西出来,然后找人一起移植到X360的C#上,这倒是有可能。不过过于遥远的东西,说得太多,就是吹牛了。

上周和ZY说,一起做个游戏吧;回答说,难道还有什么游戏需要自己写;我想了挺久,终于知道了这里面所隐含的观念的差异。。。你不能向一个从来没有没有过某种情结的人解释你的情结,因为你的这种举动本质上是非理性的,是的,我的目标其实不是创造,而是圆一个梦而已,这个梦想,是不能传递的,而是需要默契的。

所以,一个人上路吧。

原创的话痨如需转载请注明来源:http://blog.chenyi.me/blog/10746;转载的文章我会力所能及地注明来源如有疏漏请留言指正。

文章的脚注信息由WordPress的wp-posturl插件自动生成

分类: 编程, 电玩 标签:

梦想

2009年10月22日 没有评论

如果说写一个游戏是我的梦想,也对也不对。对,是因为我有过这样的念头。不对,是因为我没有给它梦想的待遇。

我很现实,我知道有两个困难,一个是吃饭问题,一个是能力问题。两个加上一起,我放弃了梦想。

俗话说得好,撒泡尿自己照照。我照过了,觉得自己不配有梦想。

问题是,我居然越来越接近自己的梦想了。

以前有个歌叫《三十以后》,“三十以后才明白,该来的迟早会来”。

技术上我已经摸到门槛了,虽然还没有摸到门楣。

吃饭上我已经可以喂饱自己了,虽然还不能提前退休。

趁着自己还能够写得动程序,得赶快把这个梦想实现掉。等到老的时候,也可以拿出来吹牛。

时间会转瞬消逝,我一定也不怀疑。能不能做出一个像样的东西,我有60%的把握,对,就是及格的那个分数。

写游戏这件事,既不像老牛说的那样浅,也不像松鼠说的那样送;关键取决于自己的个头有多大。

至于是不是在浪费时间,哈哈,我就是在浪费时间,梦想,难道不就是为了浪费时间而设计出来的吗。

原创的话痨如需转载请注明来源:http://blog.chenyi.me/blog/10735;转载的文章我会力所能及地注明来源如有疏漏请留言指正。

文章的脚注信息由WordPress的wp-posturl插件自动生成

分类: 编程 标签:

写一个游戏玩

2009年10月21日 4 条评论

我有几个缺点:
1、懒
2、嘴笨
3、脑子慢
4、不够聪明
5、常虎头蛇尾

但我有一个梦想:写一个游戏。

知己知彼,百战不殆。我知道自己的缺点,因此我有准备做好持久战。

虽然我一直是个游戏爱好者,但是制作游戏的念头,几乎一直没有。

其实也有。我写过一个DOS字符版的扫雷。。。写过手机版的俄罗斯方块。。。但那些都是玩票性质。

难道这次我就不是玩票吗?

字符版的扫雷,花了我2天。手机版的俄罗斯方块,花了我大概10天,大概花了一周时间做出来以后,发现自己的思路就不对,耦合性太强,调试困难,从头再写,花了3天。发现手机性能的问题以后,又花了点时间折腾,最后无功而返。

这些其实只是我的知识储备的问题。

我只是一个工匠,远不是能工巧匠,因此我需要站在巨人的肩膀上才能做成一点小成就。

现在我找到了一个开发框架Loon,还有好几个相当纯熟的手机游戏源码可供借鉴;这些就是我巨人的肩膀。

此外,我在Innovit的工作教会了我怎么用脚本语言,教会了我一点一点解析和构建一个巨大的系统;只要慢慢学习,足够坚持,蚂蚁可以啃掉一座山。

我现在的年龄也刚刚好,足够我实现自己的梦想,又不算太衰。。。没错,程序员30而衰,33岁,按理说,已经废掉了,但是在这里没有国内那么浮躁,也不需要那么多加班,似乎大家都能平静地接受大龄程序员。。。这给我一种感觉,似乎我还有能力和精力做一个自己的东西出来。另一方面,如果现在不去做,也许过了几年,自己就会给自己找各种借口了。

这事情的其他优势是,它可以一个人去做,它只和我的梦想有关,因此对成品没什么太大要求,好坏不需要旁人评判,它的目标不是为了钱,因此也没有急于求成的打算。它需要的时间和精力并不太多。

我对这个项目的信心是,我一贯有着慢慢完善的作风。看看我的博客,三年前,它还是一个很垃圾的东西,充斥着毫无意义的东西和到处转贴的东西,更新的频率也是两天打鱼三天晒网;那时候我根本不知道还有专业建站的工具比如WordPress;但是经过不断的磨合,至少我现在已经对自己的博客相当满意。

因此我的目标就是,让自己满意。我也曾经折腾了很多项目,比如夭折的手机版《炎龙骑士团》,放弃的时候,连个雏形都算不上,但是那次尝试让我思考了很多细节的问题。而看到人家相当成熟的手机源码的时候,我很吃惊于那些架构和算法。如今,我既有对细节的思考,有实践,有现成的站在巨人肩膀的架构和算法,相信至少对我而言,真的应该不会太难了。

博客,这个毫无技术含量的东西,依然花了我三年时间去适应:选择平台,购买主机,选择写什么内容,选择域名。对了,选择域名这件事情也有意思,我选择了glad2u.com,选择了wanbulei.com,每次取名也是绞尽脑汁,过了一年依然没啥感情,最后取了一个chenyi1976.com才产生归属感。

因此,对于这个项目,我也觉得我最好还是去复刻自己特别特别喜欢过的游戏,复刻,而不是从头构思一个。。。从头构思一个,到了最后只会失去兴趣,失去毅力,不知道自己想要什么;而复刻,则是所有的细节都已经烂熟于心,我说到底并不是一个特别能创造的人,倒是一个特别能怀旧的人。

那选择什么作为开始呢?

Loon框架里面并没有提供SLG的例子,而《炎龙骑士团》和《魔法门英雄无敌》无疑属于SLG。如果可以把《韦诺之战》的源码改造成Java就好了,但是我不觉得把C++转化成Java是容易的事情。

AVG我从来就没有特别喜欢的游戏。提到AVG,特别是Loon框架的那个实例,我最容易想到的是日本人早期做的OOXX游戏,有趣是有趣,但是我不想做不能拿出来展示的东西。《心跳回忆》也算AVG吧,蛮好玩的,不过还不至于好到复刻它的地步。其他的比如《美少女梦工厂》,我有一阵子生病的时候把他通关了,同样的,蛮有趣,但是还不够好到复刻它。其他还有《明星志愿》,也许是我玩的第一个AVG。其实这种游戏都类似于心理测验题,选了一堆选项以后(中途还可以看指标),重点在于最后的答案。它不像SLG,SLG的乐趣在于拍兵布阵的过程而不是最终的结果(反正肯定会赢),AVG的乐趣在于调整指标赢取结果,当然OOXX的AVG的乐趣就不在结果了,而是在于过程。

大部分构思良好的小说,如果想作为游戏脚本,都有一个致命的缺点,单线程单结局。

如果做成《Descent》那样倒是不错。但那是桌游,要求有一个界面,有旗子,有技能。

如果做成MUD类型的探索型游戏呢。打怪,捡取装备,升级,满地图乱转,击败魔王。那样就是一个全新的游戏了。

桌面游戏是我很喜欢的类型,问题是这一领域,没有特别爱不释手的,俄罗斯方块,大家来找茬,扫雷,推箱子,拼图,etc,都是很轻度不沉迷的游戏。。。也许我可以试试复刻《卡卡颂》,说实话,XBOXArcade版本的卡卡颂做得很让人失望,PC版其实还不错;但是我对这东西的兴趣也是一般(要说兴趣,我有兴趣做一个算法机器人出来,然后用它上X360联网对战,用电脑对抗人脑);顺便所收

我还得仔细想一想。或者再研究一下Loon,看看用它来做SLG的可能性。

当年我有着无穷的热情和时间去制作游戏,但是却没有能力没有技术。现在可能是我最好的时机,去尝试一个10年前不能完成的梦想。

也许可以试试复刻魔法门5的平面版?不过貌似要求太高了。其实复刻早期作品更好,因为更容易,系统更简单。比如《Heroes of Might and Magic》,1代只有4个种族,每个种族只有7种兵,建筑也少,地图更是小的可怜,战斗没有地形。(当年还有一款类似的跟风的作品,我也试玩了一把,怎么都觉得别扭,如果是现在的我,一定会总结出哪里失败了,哪里有进步;当年我只是简单地放弃了。现在回忆起来,只剩很模糊的印象了。)

其实,开发游戏只是程序员的一个分支而已。不管你喜欢不喜欢,玩过或者没有玩过俄罗斯方块,做为一个合格的程序员,你都能写出俄罗斯方块出来,这更像是一个四级上机考试题,而不是一个游戏开发。

换言之,能开发是一回事,想开发是另一回事,为了得到愿意付出多少是另外一回事。所谓的付出,是指时间,精力,甚至是经济上的付出。最慢的跑到最后。。。也许那些跑得最快的家伙早就意识到做程序员没前途。所以只剩下我,慢慢跑。跑到最后,还自我感觉良好,其实傻得要死,但是人家也说难得糊涂。

经过一天的时间的思索以后,我认识到这种事情难度太大,虎头蛇尾的可能性为80%,因为我干脆连虎头都不要了。

决定做一个卡卡颂的算法程序出来。我在联机XBOX Live的卡卡颂的时候,总是想,我要是自己搞一个程序出来,算法做得好,肯定玩得比我好,如果算法足够牛,胜率一定大得很。

这事情促使我上网找了一下有没有现成的项目,结果发现了3个Java的。

一个在GoogleCode上;一个在Java.net上;最后一个的完成度最高,也最牛B,可惜不是开源项目。

在玩了一把界面以后,我选择了最后一个,闭源不要紧,关键是作者没有加混淆器,所以用java.decompiler直接反编译。出来的代码经过我几个小时的修改(主要是1,Label有问题,2,Enum有问题,3,有些参数丢失或者出错),终于可以编译了,而且可读性还不错。放到了这里:http://chenyi1976.com/code/JCarcassonne.zip

今天花了点时间好好地读了一下,感觉稍微有点眉目了;顺便学了不少小东西。看下来的感觉就是写一个卡卡颂要比写一个俄罗斯方块难很多。

一个小但是很恼火的问题是,Socket连接不能成功。。。查了半天也不知道为什么。。。

JCarcassone使用了GridBagLayout和JLabel来实现界面的绘制,所以就避免了自己绘制界面的复杂性,但是也让界面很难看,扩展性也不好,有时间应该用Loon的框架重新写一遍界面绘制的部分。

法律上当然有问题啦。反编译人家的非开源的代码,很不道德。不过我也没有打算牟利。我打算继续完善它。唔。。。貌似这个理由也不对,劫富济贫也是劫。。。不管了。

最后,看别人的代码真的对提高自己的水平很有帮助。我不是那种自己能够发明创造的天才,所以拿来主义对我而言,更为重要;学习了,搬到自己的程序里。虽然起步晚,但是玩得蛮开心。现在想到大学没有报计算机专业真的是太失策了。

还是挺怀疑自己到底能做到什么样的程度。不过动手了就好。

原创的话痨如需转载请注明来源:http://blog.chenyi.me/blog/10730;转载的文章我会力所能及地注明来源如有疏漏请留言指正。

文章的脚注信息由WordPress的wp-posturl插件自动生成

分类: 编程, 电玩 标签:

角色扮演游戏脚本

2009年10月19日 3 条评论

找到一个超级棒的游戏开发引擎,Java做的,代码不难懂。。。作者的博客在这里

支持“推箱子”这种桌面游戏(当然逻辑要自己实现,比自己从头搞,工作量只低了一点点);支持对话加选项式的AVG(比如樱花大战、很多日本人做的OOXX游戏);支持RPG(还没有仔细看)

看了一圈,花了不少时间读懂代码,觉得这东西满有前途;代码结构很漂亮,有脚本解析,甚至还支持LUA脚本语言;开源意味着什么都可以定制,比如把Groovy和Jython弄进去应该也不难。

但是想一想,觉得自己写代码难度有点大,特别是自己虎头蛇尾得很。

为了不虎头蛇尾,不如只弄脚本和美工,不到迫不得已(比如要增加道具之类)不去修改代码。

脚本最容易了,也是最有变化的东西,如果写得好,完全可以比得上几千行代码,所以。。。贴一段作者自带的脚本。。。希望看到的同学能够出出点子,一起弄个好玩的脚本出来?

不知道这次会不会又一次虎头蛇尾。

/*
   这是一个随Java版AVG游戏开发入门示例发布的脚本文件,用于演示脚本引擎开发的基本原理及应用
*/

set bgImage = “image/avg/backgroud/hospital.jpg”
set heroName = “三石.圣光.丁”
set cg0Image = “image/avg/friend/ding/ding0.png”
set cg1Image = “image/avg/friend/ding/ding1.png”
set cg2Image = “image/avg/friend/ding/ding2.png”
set cg3Image = “image/avg/friend/ding/ding3.png”
set roleName = “那厮为金网瘾集中营女医师—上岛床子”
set ecg0Image = “image/avg/enemy/shang/shang0.png”
set ecg1Image = “image/avg/enemy/shang/shang1.png”
set ecg2Image = “image/avg/enemy/shang/shang2.png”
set ecg3Image = “image/avg/enemy/shang/shang3.png”
set content = “”
set mount = 0

gb print(bgImage)

    //显示三石.圣光.丁惊讶画面到画面x坐标200
    cg print(cg1Image) 200
mes {print(heroName)}你说我有网瘾?!但我已不摸电脑好多年,我,我现在只是个养猪的……

    //三石移动到30
    cg print(cg1Image) 30
    //上岛床子乱入……250位置
    cg print(ecg0Image) 250

mes {print(roleName)}哼哼哼哼哼,别狡辩了,根据我们伟大的[<o那厮为金网瘾集中营/>]<r文明用语/>的推断。你的,良民的不是,网瘾的,大大的有!

    //变更cg0为cg1
    cg print(cg1Image) to print(cg2Image)
mes  {print(heroName)}<o那厮为金网瘾集中营/>的<r文明用语/>?!是什么鬼东西?

    //变更ecg0为ecg1
    cg print(ecg0Image) to print(ecg1Image)

mes {print(roleName)}放肆!你竟敢说我们尊贵的<r文明用语/>是东西?!

    //变更cg2为cg1
    cg print(cg2Image) to print(cg1Image)

mes  {print(heroName)}难道<r文明用语/>还不是东西吗?!

    //变更ecg1为ecg2
    cg print(ecg1Image) to print(ecg2Image)

    //变更cg1为cg0
    cg print(cg1Image) to print(cg0Image)
mes {print(roleName)}真是傻孩子!<r文明用语/>怎么可能是东西,<r文明用语/>当然不是东西!更何况是我们营长这个<r文明用语/>,那就更加更加的不是东西!

      //变更cg0为cg1
    cg print(cg0Image) to print(cg1Image)
mes  {print(heroName)}营长?!你是说,你讲的<r文明用语/>是指你们的营长?!

mes {print(roleName)}蠢话!不是我们营长这样身份高贵的人,怎么可能用<r文明用语/>作为尊称呢?<r文明用语/>当然就是指我们杨营长!

    //变更cg1为cg3
    cg print(cg1Image) to print(cg3Image)
mes  {print(heroName)}姓杨?!我想起来了,莫非是传说中的杨~<r哔/>~<r哔/>~?!

mes {print(roleName)}孺子可教也,想不到你年纪轻轻竟也知道他这种身份的大人,要用[<r文明用语/>]、[<r哔/>]、[<r不雅词汇/>]这些[<o象征高贵的辞藻/>]来加以尊称。
    //变更cg3为cg2
    cg print(cg3Image) to print(cg2Image)
mes  {print(heroName)}你,你想怎么样?……(可恶,如果是战斗力媲美十大神兽的十二生肖兽之一——[<o羊叫兽/>]亲自介入,就算是我恐怕也劫数难逃了|||)

mes {print(roleName)}不想怎么样——毕竟我们也不都是虐待狂,如果我们的网瘾测试你能顺利通过,还是有免于被抓的机会的(哼哼,做梦)。

mes {print(heroName)}见鬼!好,谁怕谁啊,放马过来吧!

    //变更ecg2为ecg0
    cg print(ecg2Image) to print(ecg0Image)
mes {print(roleName)}接招吧!

cg del

cg print(ecg2Image) 20

//显示题目用函数(因为这仅是一个演示用的脚本引擎,故未做传参功能,请自行改进添加)
begin issue
    mes {print(roleName)}print(content)
    in
      A.完全没有
      B.很少
      C.偶尔
      D.经常
      E.总是
    out
end

//题目1
set content = “你多少次发现你在网上逗留的时间比你原来打算的时间要长?”
call issue
set mount = SELECT + mount + 1

//题目2
set content = “你有多少次忽视了你的家务而把更多时间花在网上?”
call issue
set mount = SELECT + mount + 1

//题目3
set content = “你有多少次更喜欢因特网的刺激而不是与你配偶之间的亲密?”
call issue
set mount = SELECT + mount + 1

//题目4
set content = “你有多少次与网友形成新的朋友关系?”
call issue
set mount = SELECT + mount + 1

//题目5
set content = “你生活中的其他人有多少次向你抱怨你在网上所花的时间太长?”
call issue
set mount = SELECT + mount + 1

//题目6
set content = “在你需要做其他事情之前,你有多少次去检查你的电子邮件?”
call issue
set mount = SELECT + mount + 1

//题目7
set content = “由于因特网的存在,你的工作表现或生产效率有多少次受到影响?”
call issue
set mount = SELECT + mount + 1

//题目8
set content = “你认为脱离互联网便无法正常工作吗?”
call issue
set mount = SELECT + mount + 1

//题目9
set content = “当有人问你在网上干些什么时,你有多少次变得好为自己辩护或者变得遮遮掩掩?”
call issue
set mount = SELECT + mount + 1

//题目10
set content = “你有多少次用因特网的安慰想象来排遣关于你生活的那些烦人考虑?”
call issue
set mount = SELECT + mount + 1

//题目11
set content = “你有多少次发现你自己期待着再一次上网的时间?”
call issue
set mount = SELECT + mount + 1

//题目12
set content = “你有多少次担心没有了因特网,生活将会变得烦闷,空虚和无趣?”
call issue
set mount = SELECT + mount + 1

//题目13
set content = “如果有人在你上网时打扰你,你有多少次厉声说话,叫喊或者表示愤怒?”
call issue
set mount = SELECT + mount + 1

//题目14
set content = “你有多少次因为深夜上网而睡眠不足?”
call issue
set mount = SELECT + mount + 1

//题目15
set content = “你有多少次在下网时为因特网而出神,或者幻想自己在网上?”
call issue
set mount = SELECT + mount + 1

//题目16
set content = “当你在网上时,你有多少次发现你自己在说’就再玩几分钟’?”
call issue
set mount = SELECT + mount + 1

//题目17
set content = “你有多少次试图减少你花在网上的时间但却失败了?”
call issue
set mount = SELECT + mount + 1

//题目18
set content = “你有多少次试图隐瞒你在网上所花的时间?”
call issue
set mount = SELECT + mount + 1

//题目19
set content = “你有多少次选择把更多的时间花在网上而不是和其他人一起外出?”
call issue
set mount = SELECT + mount + 1

//题目20
set content = “当下网时,你感到沮丧,忧郁或者神经质,而这些情绪一旦回到网上就会无影无踪?”
call issue
set mount = SELECT + mount + 1

if mount<40
     mes 你有时候可能会在网上花较长的时间”冲浪”,但尚能控制你对网络的使用,因此你属于[<l轻度网瘾患者/>](切,才仅仅这样嘛,不过不要紧,等我来慢慢玩弄他(=‵′=))。
    else if mount<70
     mes 由于因特网的存在,你正越来越频繁地遇到各种各样的问题,你应当认真考虑它们对你生活的全部影响,因此你属于[<y中度网瘾患者/>](真遗憾,只能使用抑郁性药物,过两天才能电刑……)。
    else if mount<100
     cg print(ecg2Image) to print(ecg3Image)
     mes 你的因特网使用正在给你的生活造成许多严重的问题,你需要现在就去解决它们,因此你属于[<r重度网瘾患者/>]!(哈哈哈哈,能电了,能电了,我要玩死这小子!)。
    else if mount==100
     cg print(ecg2Image) to print(ecg3Image)
     mes 来人啊!快把我的整套SM道具……不,是整套抢救用具拿来!我要立刻[<r挽救/>]这个可爱的小家伙!!!
endif

flash 255,255,255

    mes  {print(roleName)}你是我的了!
    shake 20
    cg del
    cg print(cg1Image)
    mes  {print(heroName)}救命啊!<r不要啊/>!!!!

flash 241,26,26

cg del
mes  {路人H}由于这是一个示例,并没有真正完成这个游戏,暂时到此为止。想继续请自己动手丰衣足食……想添加过场特校、按钮、物品栏等组件可以给我blog留言,偶可以抽空帮忙,其余的自己解决……

run title

原创的话痨如需转载请注明来源:http://blog.chenyi.me/blog/10728;转载的文章我会力所能及地注明来源如有疏漏请留言指正。

文章的脚注信息由WordPress的wp-posturl插件自动生成

分类: 编程, 电玩 标签:

IntelliJ开源免费了。

2009年10月16日 2 条评论

IntelliJ IDEA开源免费了。

下午收到同事DUC的邮件,才知道这个消息,爽。

当然它并不是彻底的免费,商业版依然存在,一些很强大的功能并不免费,主要集中在企业级开发上。官网上有一个功能对照配置表,列出了商业版和免费版的区别。

为什么我怎么高兴,因为这个工具是我见过的最强大的东西,好不夸张。

我用过JBuilder5年,试过NetBeans和Eclipse,最后用IntelliJ IDEA。我毫不夸张地说,在快捷键的支持和功能的人性化上,IntelliJ绝对无以匹敌,一枝独秀。

最简单的一点,它可以让你放弃鼠标,全部用快捷键。虽然听起来记忆快捷键是一项巨大的工程,但是我可以保证,一切都是值得的。

从其他工具迁移到IntelliJ的感觉,类似于从windows自带的资源管理器切换到TotalCommander,从写字板切换VIM,从全拼输入法切换到谷歌/酷狗输入法。

这个比喻就够了,我想不到其他的方法来说明这个工具的优秀。它唯一的缺点是没有内置的Swing设计器,刚开始的时候让习惯了JBuilder的我有点不爽。

我一度考虑购买一个单人版,虽然那个也不便宜。貌似要200多美元。能够让我动心到自己掏200多美元的东西。而开源免费扫清了我使用和推广它的唯一障碍。

加以时日,也许以后的源码包里面,都能像带有Eclipse工程文件一样带有IntelliJ的工程文件。

可惜PHP支持并不包含在免费版里面。

原创的话痨如需转载请注明来源:http://blog.chenyi.me/blog/10720;转载的文章我会力所能及地注明来源如有疏漏请留言指正。

文章的脚注信息由WordPress的wp-posturl插件自动生成

分类: 编程 标签: