我现在想设计一个关于三国杀类型的棋牌游戏,
游戏的模型层我的设计有
武将
卡牌
玩家
业务层设计的有
武将规则
卡牌规则
控制层设计的有
回合开始阶段触发武将技能,卡牌技能
判定阶段触发武将技能,卡牌技能
抹牌阶段触发武将技能,卡牌技能
弃牌阶段触发武将技能,卡牌技能
回合结束阶段触发武将技能,卡牌技能
关于业务层和控制层我的设计有什么问题,如果不合理正确的设计应该如何设计,控制层具体负责哪些功能,业务层具体负责哪些功能,各位大侠能解释下么?

解决方案 »

  1.   

    额 我是半调子,不过也插一嘴:
    MVC 应该是 Model, View 还有 Controller 三部分,
    (业务层是三层结构里的吧。。)
    这个是我对三国杀进行的模式设计:
    Model里应该是:
    游戏进行中的数据:
    1.玩家的生命值,武将名,玩家当前技能(和武将名应当没关系,考虑到武器技能,觉醒技,限定技能,以及左慈),附加状态(就三国杀来说 性别,攻击距离,特殊状态 比如武将牌翻面 等),判定区,当前手牌 等等。同时,考虑到扩展性,我们可以把手牌也作为技能的一种,即没回合根据玩家的手牌,赋予玩家该回合不同的技能。
    2.游戏的状态:主,忠,反,牌库等等。Controller控制器:
    主要负责改变数据模型
    1.处理游戏流程,胜利判定等等
    2.出于扩展性考虑,控制应该包括各种各样的效果:比如,伤害,弃牌,抓牌(偷牌可以是弃牌和抓牌的组合,判定,进入某阶段,跳过某阶段,武将牌翻面(可以看作跳过所有阶段)等等,我们可以通过各种各样的效果组合 来实现不同的控制效果。
    3.UI的移动,显示的信号控制View 视图:
    就是UI Layout了,通过各种手段把数据表现出来,受控于控制器。这方面经验尚浅,还希望各位大侠提点。
      

  2.   


    我现在的设计思路是这样的。
    Bean:武将,状态(回合开始,回合结束等),卡牌,类型(存储常量,武将ID,技能ID等),玩家,武将技能
    业务:
    玩家Service:调用卡牌Service,武器Service,武将Service
    武将Service:技能是否能发动技能 ,如果能调用技能Service
    技能Service:对应技能效果,判断技能在哪个阶段发生的,技能是否能够触发如果能产生对应的效果。
                        其中每个武将的每个技能对应一个技能SERVICE,比如张辽的突袭就有ThiefCardService,实现
                        突袭的效果。
    卡牌Service:对应各个卡牌的效果
    武器Service:对应各个武器的效果
    控制:只有一个Action类,有6个阶段,分别为回合开始,判定,摸牌,出牌,弃牌,回合结束View:负责信息的输入和显示
    但是这样的设计有一个问题,就是当我是张辽的时候,我必须要在VIEW输入,然后在Action判断是否此玩家有这个阶段可以进行,还用张辽的技能来说,我必须在VIEW里面设置张辽的信息来输入,我不知道如何设计控制和视图的联系,VIEW和控制里面应该如何设计功能呢。张辽突袭玩家的数据的获取应该放在哪个层次里面。
      

  3.   

    你这什么跟神马啊?MVC 是什么搞清楚了吗?
      

  4.   

    VIEW 和 CONTROLLER 在MVC里应该是没有任何联系的,只要接口相对应就可以了。
    所以,我觉得如果你要从MVC的角度来设计的话 所有对于数据的操作都是在COTROLLER里的,VIEW只是对数据状态的反映。另外,我觉得你的问题更多方面是程序架构的问题,不是设计模式的问题
      

  5.   


    我不是大虾,只是凑热闹的。。 对于J2EE我也是刚接触,不过我觉得楼主可以先做好OO的设计,想好都有什么类,什么方法,怎么产生这些类,怎么调用这些方法。然后再说架构的事情。不要为了用BEAN而用,看看哪里需要在决定怎么做。架构的作用只是为了让你写出维护性,可读性比较漂亮的程序。
      

  6.   

    CONTROLLER应该是负责转发请求及对请求进行处理
    VIEW应该是在图型介面设计
    其他所有的计算及实作都在MODEL(以上二项之外的都在这里)
      

  7.   


    那关于对张辽通过点击武将头像来获取玩家ID的操作应该放在,MODEL中么?
      

  8.   

    Controller 里, MODEL只负责和数据库进行交流
      

  9.   


    MVC是设计模式,去看GOF吧 《设计模式》第一章总览我记得就介绍了MVC
      

  10.   

    我现在发现,在开发程序中我不知道哪些功能放在M中,哪些放在V中,哪些放在C中。
      

  11.   


    花一天 做个简单的基于MVC框架的小程序 比如ruby on rails 就明白很多了
      

  12.   

    像一些比较简单我感觉我挺明白了,比如说什么管理系统之类的,OA之类的,但是如果把MVC放在游戏中,我就不知道哪些放在M中哪些放在V中了哪些放在C中了