把地图指定点开始的一屏内容绘制到屏幕上

来源:互联网 发布:网络女主播电影的歌曲 编辑:程序博客网 时间:2024/06/01 12:19

    /** 地图最大的行数 */

    #define mapRow 20  

    /** 地图最大的列数 */

    #define mapCol 20

    /** tile的个数 */

    #define ImageNum 100

 

    int mapArray[mapRow][mapCol];    /** 地图tile的索引 */

    Image cellImage[ImageNum];       /** 所有的tile的图片 */

 

    int cellsize; /** cellsize为地图tile的宽和高 */

 

    int ScreenWidth;   /** 屏幕的宽 */

    int ScreenHeight;  /** 屏幕的高 */

 

    /**

        leftTopX:地图X方向的位置

        leftTopY:地图Y方向的位置

        将地图上,点(leftTopX, leftTopY)开始的区域绘制到屏幕上

    */   

    void DrawAScreen(int leftTopX, int leftTopY)

    {  

             /* 计算单元格起始位置下标 */

             int iStart = leftTopY / cellSize;      /** 起始行 */

             int jStart = leftTopX / cellSize;      /** 起始列 */

    

             //计算单元格绘制宽度和高度

             int iNum = ScreenWidth / cellSize + 1;  

             int jNum= ScreenWidth / cellSize + 1;   

    

             //防止下标越界

             if (iStart + iNum >= mapRow)

                          iNum = mapRow - 1 - iStart;

    

             if (jStart + jNum >= mapCol)

                          jNum = mapCol - 1 - jStart;

 

             int i, j;

             for (i = iStart; i < iNum; i++) 

             {

                          for (j = jStart; j < jNum; j++)

                          { 

                                     /** 将一个tile绘制到屏幕上 */

                                   if (mapArray[i][j]>0)

                                              drawImage(cellImage[mapArray[i][j] - 1], j * cellSize - leftTopX, i * cellSize - leftTopY);

                          }

             }

    }

原创粉丝点击