做了俄罗斯方块的小练习,总结一下其中用到的编程思想
一.面向对象的思想
1.封装:
抓住格子、方块、墙几个事物
方块由四个格子组成
墙由10*20的格子组成(定义为二维数组)
墙中的格子开始是空的,方块落下去,又堆叠起来,墙上才有格子(给对应数组元素的赋值),符合生活中人们对事物的认识
2.继承:
把方块的通用属性和方法抽象为方块的共同父类,不同类型的方块都继承这个类
类图如下所示:
二.化繁为简的思想
1.把复杂的功能拆分一个一个的小功能:比如把action主流程细分为在游戏结束、游戏暂停、游戏进行中,
每一种又继续细分对不同的按键做什么反应
2.把整体的动作拆分为每一个部分的动作:
比如,方块的移动拆分为组成方块的每个格子的移动
3.先实现基础的功能,再逐步完善
三.补偿的思想
在对方块的移动过程中,营造一种方块碰到墙壁不能越界的效果
采用了补偿的思想
以向左移为例。先试着向左移,如果会造成越界或者重合,那就再向右移一次
利用了计算机快速地运算速度,肉眼看起来就像方块碰到了墙壁或障碍物就无法移动了一样
四.数学分析的思想
在对方块做不同形式的转换的过程中,归纳每种方块有几种变化状态,及从一种状态到下一种状态的时候每个格子的坐标的变化规律
再把状态变化封装成数组,在父类中只是定义状态数组,没有指定数组的长度,在子类中根据子类的变化个数,再确定数组的长度
五.简单工厂的思想
方块的父类有一个静态方法,用来随机创建不同的子类对象
下图为游戏效果图: