Qt实现贪吃蛇(四)

2017-11-28 22:14:33  阅读 276 次 评论 1 条

    上一篇把主角蛇这个类说完了。接下来说说第二个类CSnakeGame,也就是在第二篇中提到的f_game的类,它控制着游戏的逻辑。具有以下成员变量:

    int             f_AreaRows; //区域行数
    int             f_AreaCols; //区域列数
    int             f_foodRow;  //食物坐标
    int             f_foodCol;  //食物坐标
    CSnake*         f_pSnake;   //蛇
    bool            f_isOver;   //是否结束

  可以看出包括游戏区域、食物、蛇以及结束标志(如果需要扩展的话游戏区域和食物也可以封装成类)。针对这些成员提供相应的方法:

    CSnake* getSnake();  //获取蛇对象
    bool goAhead();      //前进一步
    
    int getAreaRows();  //获取游戏区域行数
    int getAreaCols();  //获取游戏区域列数
    bool outOfRange(int bx, int by); //是否超出范围

    void randFood();  //随机食物
    int getFoodRow(); //获取食物行
    int getFoodCol(); //获取食物列

    void setIsOver(bool bOver); //设置是否结束
    bool isOver();  //是否结束

    这些方法都很容易理解,除此之外还提供了一个start方法初始化游戏信息:

void CSnakeGame::start()
{
    if(f_pSnake != NULL){
        delete f_pSnake;
        f_pSnake = NULL;
    }

    f_AreaRows = 20;
    f_AreaCols = 18;

    f_pSnake = new CSnake(this,10,10);
    f_foodRow = -1;
    f_foodCol = -1;
    f_isOver = false;

    srand((unsigned)time(NULL));
}

    由于要实现的规则非常简单,因此这个类也没有什么内容。如需要更丰富的玩法,可以扩展该类。


Qt实现贪吃蛇(五)

本文地址:http://fearlazy.com/index.php/post/49.html
版权声明:本文为原创文章,版权归 fearlazy 所有,欢迎分享本文,转载请保留出处!

发表评论


表情

评论列表

  1. fearlazy
    fearlazy  @回复

    face_02