zoukankan      html  css  js  c++  java
  • HGE做的俄罗斯方块

    俄罗斯方块

    1.    简介

    俄罗斯方块(Tetris, 俄文:Тетрис)是一款风靡全球的电视游戏机和掌上游戏机游戏,它由俄罗斯人阿列克谢·帕基特诺夫发明,故得此名。俄罗斯方块的基本规则是移动、旋转和摆放游戏自动输出的各种方块,使之排列成完整的一行或多行并且消除得分。由于上手简单、老少皆宜,从而家喻户晓,风靡世界。

    2.    游戏设计

    1.    流程图

    俄罗斯方块的流程相对比较简单,游戏开始时,方块按照一定的时间间隔下落,然后要根据用户的操作发着改变,还要验证操作的合法性(判断越界),最后就是要消行计分了。其流程图如下所示:

    2-1流程图

     

     

    2.    设计思路

    1.盘的设计

    首先要解决的是显示问题。如何正确的在屏幕上显示俄罗斯方块呢?我们可以注意到其实每一种俄罗斯方块都是由小方块组成的,而要在屏幕上正确显示方块,就要在正确的位置画出小方块就好了。而要做的就是用一个二维数组来保存要显示的方块(如图2-2)。这样二维的格子中,哪一个格子被现有的方块占据了就把它标为非0,空的就为0.然后在画的时候判断格子状态,就可以实现方块的显示了

    2-2 显示方块的格子板

     

     

    2.方块的设计

    传统的俄罗斯方块主要包含七种方块。如图2-3所示。

    2-3 方块类型

    从图2-3我们可以看出,其实每个方块都是由四个小方块组成,这样我们就可以用4*2的数组来保存一种方块的位置,保存组成的四个小方块的行和列。再加一个变换的标志,用来保存当前类型的方块的变换形态。

    3.游戏逻辑

    初始化之后游戏开始,随机创建一个方块类型,计算它的边界,这个边界,包括它的左边界(用来检测是否有碰撞),右边界(用来检测是否右边是否有碰撞),下边界(用来检测下方是否有碰撞),并将其放置到网格盘上,设置方块的下落时间,这个时间就可以作为等级的标准了。每间隔一个时间,就让方块下落一格,这个就可以通过设置方块的4*2数组来实现了(每次让行数加一)。

    在下落过程中要检测按键输入,根据按键来进行方块的变形和移动,但这些操作都要检测其有效性,即是否操作完会有碰撞。最后当方块落地后,要检查是否可以消行,对方块所占的行进行检测,如果可消,就将此行消掉,然后将上面所有行下降一行并进行计分,最后将下一块的方块类型赋于当前方块,开始新的方块的下落。

    4. 

    3.    类图



     

    主要设计了四个类,一个是CGameEngine,用来封装一下HGE的一些函数,CListener的作用是具体实现了HGEFrameFuncRenderFuncCGameBoard就是主要发生游戏逻辑的地方了,一个描述俄罗斯方块所在的盘(估且这么叫)的类。CBlock就是方块的类了,总共包括了七个类弄的方块。

    3.    游戏效果


    第一版的游戏效果图

     

    4.    不足之处

    1.    界面太丑,且没有UI

    2.    没有声音和消行的效果

    3.    感觉类的设计还是有点耦合。


    下载地址:

    http://download.csdn.net/detail/sunstar1989/4095189

  • 相关阅读:
    每日一水 POJ8道水题
    编译和使用 MySQL C++ Connector
    j2ee model1模型完成分页逻辑的实现 详解!
    DB查询分析器访问EXCEL时,要在表名前后加上中括弧或双引号
    指向结构体变量的指针
    EOSS V3.0 企业运营支撑系统(基于RBAC原理的权限管理)
    MybatisGen1.0 Mybatis JavaBean Mapper生成工具
    The table name must be enclosed in double quotation marks or sqare bracket while accessing EXCEL by
    资源-Android:Android
    软件-开发软件:Android Studio
  • 原文地址:https://www.cnblogs.com/gameprogram/p/1986461.html
Copyright © 2011-2022 走看看