• 俄罗斯方块中的编程思想


    做了俄罗斯方块的小练习,总结一下其中用到的编程思想

    一.面向对象的思想
    1.封装
    抓住格子、方块、墙几个事物
    方块由四个格子组成
    墙由10*20的格子组成(定义为二维数组)
    墙中的格子开始是空的,方块落下去,又堆叠起来,墙上才有格子(给对应数组元素的赋值),符合生活中人们对事物的认识

    2.继承
    把方块的通用属性和方法抽象为方块的共同父类,不同类型的方块都继承这个类

    类图如下所示:

    二.化繁为简的思想
    1.把复杂的功能拆分一个一个的小功能:比如把action主流程细分为在游戏结束、游戏暂停、游戏进行中,
    每一种又继续细分对不同的按键做什么反应

    2.把整体的动作拆分为每一个部分的动作:
    比如,方块的移动拆分为组成方块的每个格子的移动

    3.先实现基础的功能,再逐步完善

    三.补偿的思想
    在对方块的移动过程中,营造一种方块碰到墙壁不能越界的效果
    采用了补偿的思想
    以向左移为例。先试着向左移,如果会造成越界或者重合,那就再向右移一次
    利用了计算机快速地运算速度,肉眼看起来就像方块碰到了墙壁或障碍物就无法移动了一样


    四.数学分析的思想
    在对方块做不同形式的转换的过程中,归纳每种方块有几种变化状态,及从一种状态到下一种状态的时候每个格子的坐标的变化规律
    再把状态变化封装成数组,在父类中只是定义状态数组,没有指定数组的长度,在子类中根据子类的变化个数,再确定数组的长度


    五.简单工厂的思想
    方块的父类有一个静态方法,用来随机创建不同的子类对象

     

    下图为游戏效果图:

  • 相关阅读:
    JavaScript的执行
    关于k阶裴波那契序列的两种解法
    科普 eclipse中的Java build
    [BZOJ 1037] 生日聚会Party
    [POJ 1185] 炮兵阵地
    [POJ 1935] Journey
    [POJ 2397] Spiderman
    [POJ 2373][BZOJ 1986] Dividing the Path
    [POJ 3378] Crazy Thairs
    [POJ 2329] Nearest number-2
  • 原文地址:https://www.cnblogs.com/wsw-tcsygrwfqd/p/9336796.html
Copyright © 2020-2023  润新知