Chinaunix

标题: 软件重在设计,一起来面向对象 [打印本页]

作者: __BlueGuy__    时间: 2012-10-20 22:52
标题: 软件重在设计,一起来面向对象
本帖最后由 __BlueGuy__ 于 2012-10-20 23:09 编辑

这个设计有什么优缺点, 你会怎么设计? 怎么重写... ?


这是我从某手机游戏里 copy出来的代码? 大家评论一下,
这些都属于机密文件,很有价值的,我都是冒着商业风险拿出来讨论的...

  1. public class FSprite implements GameData
  2. {

  3.     Image[] images;
  4.     short[][] modules;
  5.     short[][] attrectdata, beattrectdata;
  6.     short[][][] frames;
  7.     byte[][][] actions,
  8.          attackdata, //攻击数据
  9.          effectdata; //特效数据
  10.     GameCanvas canvas;
  11.     boolean isdrawsprite;
  12.     byte actionstate, actionIndex, actionFrameindex, frameDelay;
  13.     byte faceto;
  14.     short spritex, spritey, spritez; //角色位置
  15.     short xspeed, axspeed, yspeed, ayspeed, zspeed, azspeed;
  16.     byte hdirection, vdirection;
  17.     byte alivestate;
  18.     byte spritePRI;
  19.     byte spriteType;
  20.     byte spriteboxindex;
  21.     byte spritename;
  22.     boolean isactionover;
  23.     byte attackindex, attacklevel, attackareaz;
  24.     byte attackstate, attacktype, attackefftype, attackhitnum, attackdebufindex, hittype;
  25.     short attackhurtpercent;
  26.     byte hitEnemyIndex;
  27.     byte hurtstate;
  28.     short appendhurt;
  29.     boolean isheavyhurt;
  30.     byte debuff;
  31.     Role user, actonrole;
  32.     byte attackdelay;
复制代码

  1. public class Role extends FSprite implements GameData
  2. {
  3.     HeadPopUp[] hpp = new HeadPopUp[5];

  4.     short[] baseshengming = new short[2],//生命
  5.     shengming = new short[2],
  6.    
  7.     basefali = new short[2],//法力
  8.     fali = new short[2],
  9.    
  10.     baseminjie = new short[2],//敏捷
  11.     minjie = new short[2],
  12.    
  13.     basefangyu = new short[2],//防御
  14.     fangyu = new short[2],
  15.    
  16.     basewugong = new short[2],//物攻
  17.     wugong = new short[2],
  18.    
  19.     basefagong = new short[2],//法攻
  20.     fagong = new short[2],
  21.    
  22.     basebaoji = new short[2],//爆击
  23.     baoji = new short[2];
  24.    
  25.     short currenthmovespeed;
  26.     byte aiType, aiLoop;
  27.     byte wuditime;
  28.     boolean aiLeft;
  29.     Vector behurtinfo;
  30.     short roleh;
  31.     short[][] aidata;
  32.     short alivetime;
  33.     short[] attackcd;
  34.     byte attackholdtime; //普通攻击按键时间
  35.     byte batistate;//是否霸体
  36.     byte walkxspeed, walkzspeed;
  37.     byte level;
  38.     boolean isFlushed;
  39. }
复制代码

  1. public class Effect extends FSprite
  2. {

  3.     byte alivetype, alivetime, xstate, ystate, zstate;
  4. }
复制代码

作者: 群雄逐鹿中原    时间: 2012-10-20 22:54
这里是面向过程板块
作者: starwing83    时间: 2012-10-20 23:11
这种东西也叫机密?我都看到过五六份了……

说技术价值什么的,还不如里面那个GameCanvas……
作者: __BlueGuy__    时间: 2012-10-20 23:18
回复 3# starwing83

这个对象类我就写不好...   
作者: linux_c_py_php    时间: 2012-10-20 23:21
这个帖子毫无意义, 你不如提问个具体的东西, 让大家贴贴自己的代码.
作者: __BlueGuy__    时间: 2012-10-20 23:24
linux_c_py_php 发表于 2012-10-20 23:21
这个帖子毫无意义, 你不如提问个具体的东西, 让大家贴贴自己的代码.


这还不具体吗?
作者: __BlueGuy__    时间: 2012-10-20 23:31
starwing83 发表于 2012-10-20 23:11
这种东西也叫机密?我都看到过五六份了……

说技术价值什么的,还不如里面那个GameCanvas……


我真正不会的就是这个最简单的...
里面那些算法什么的我一点都没纠结过.
作者: starwing83    时间: 2012-10-21 04:23
回复 7# __BlueGuy__


    哦?你写个vector stroking算法我看看?我最近正在苦恼这个呢………………

Java没有技术含量的,因为真正重要的算法都被C给实现过了,Java只是用个壳儿而已……
作者: linux_c_py_php    时间: 2012-10-21 10:22
应该说所有语言都是壳, 人脑才是最重要的...

starwing83 发表于 2012-10-21 04:23
回复 7# __BlueGuy__

作者: __BlueGuy__    时间: 2012-10-21 11:22
本帖最后由 __BlueGuy__ 于 2012-10-21 11:23 编辑

我发现问题不是出在面向对象上, 而是出在数据结构上...

程序 = 算法 + 数据结构  真是亘古不变的真理
作者: liuspring6    时间: 2012-10-21 11:48
其实做开发么,一开始必然都不会接触到框架级的东西,问题在于你会不会学习

在我看来,如果能在使用过程中逐步理解类似GameCanvas这种东西是如何按照需求而设计,从而最终自己山寨出一个时,就证明你前面的东西没有白写,你Level Up了


作者: __BlueGuy__    时间: 2012-10-21 11:53

                        
作者: liuspring6    时间: 2012-10-21 11:53
另外补充一下,我个人尤其鄙视那种一上来就嚷嚷要做框架,做SDK的人,连使用者的需求、使用方式、编码习惯都不理解,做得好真是怪了,顶多做个自己给自己玩的玩具罢了,从基础做起绝对没有错
作者: starwing83    时间: 2012-10-21 12:36
回复 9# linux_c_py_php


    问题是有些壳儿还能做事儿,直接连着大脑,有些壳儿完全不管事,只会当传声筒把需求传递给下层的壳儿,这种东西有技术含量么= =
作者: gtkmm    时间: 2012-10-21 15:32
__BlueGuy__ 发表于 2012-10-21 11:22
我发现问题不是出在面向对象上, 而是出在数据结构上...

程序 = 算法 + 数据结构  真是亘古不变的真理


语言是思考的方式, 算法是思考的结果, 数据结构是算法用到的符号.
语言很重要.
作者: huxk_cu    时间: 2012-10-21 17:24

我的语言就是我的边界。




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2