/** 地图最大的行数 */
#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);
}
}
}