单一职责原则

解释:就一个类而言,仅有一个引起它变化的原因,

我们在编程过程中,会想要给一个类加各种各样的功能,但是如果有别的需求进来,我们都需要去修改这个类,这就导致这个类并不能被复用,也缺乏灵活性,一个类承担的职责越多,就等于是把这些职责耦合在一起,一个职责的变化可能会削弱或者抑制这个类完成其他职责的能力。

举例:方块游戏的设计-俄罗斯方块

  • 如何设计?

  • 要考虑的问题?

我们设计这个游戏,需要考虑到方块下落的原理通过方块的绘出和擦掉形成动画,所以一定要有画和擦方块的代码,然后考虑左右键的移动,下键实现加速,上键实现旋转,左右键移动还要考虑到碰撞的问题,下移需要考虑到堆积和消层的问题。

  • 怎么实现单一职责原则?

下落、旋转、碰撞判断、移动、堆积,这些都是和游戏有关的逻辑,和界面是没有关系的,我们可以将界面和游戏逻辑进行分离,将程序分为两个类,一个是游戏逻辑的类,一个是WinForm窗体的类,当有一天需要改变界面的时候,就只是对窗体类进行修改,实现游戏逻辑的复用。

界面的变化是和游戏本身没有关系的,界面是容易变化的,而游戏逻辑是不太容易变化的,将它们分离开有利于界面的改动。

游戏逻辑就是数组的值的变化,下落,旋转、碰撞判断、移动、堆积都是在对数组值进行变化。

界面显示逻辑,根据数组的数据进行绘出和擦除

  • 游戏逻辑?

设计一个二维数组用来表示坐标int[] arraySquare = new int[10,20]

    • 左右键的移动:假设原方块在arraySquare【3,5】,下移就是arraySquare【3,6】,左移就是

      【2,6】

    • 数组的值就是是否存在方块的标志,存在即为1,不存在就是0

    • 碰撞:就是判断arraySquare【x,y】x-1是否小于0,否则就是撞墙,或者arraySquare【x-1,y】是否等于1,否则说明左侧有堆积的方块

    • 堆积:就是判断arraySquare【x,y+1】是否等于1,是就将自己的arraySquare【x,y】改为1

    • 消层:就是arraySquare【x,y】中循环x从0到9,判断arraySquare【x,y】是否都等于1,是就数据清零,并将上方数组值遍历下移一位。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值