offset=row*width+column
Since this is more suited to C++ than C:
Code:
class CMap
{
WORD *m_pMap;
WORD m_uWidth;
WORD m_uMaxOffset;
public:
CMap():m_pMap(NULL),m_uWidth(0),m_uMaxOffset(0) { }
virtual ~CMap(void) { delete [] m_pMap; }
bool Create(int iWidth,int iHeight)
{
m_uMaxOffset=iWidth*iHeight;
m_pMap=new WORD[m_uMaxOffset];
if (!m_pMap) return true;
m_iWidth=iWidth;
}
WORD GetValue(int iRow,int iCol,bool &bResult)
{
WORD uOffset=iRow*m_uWidth+iCol;
if (uOffset>m_uMaxOffset)
{
bResult=true;
return 0xFFFF;
}
bResult=false;
return m_pMap[uOffset];
}
bool SetValue(int iRow,int iCol,WORD uValue)
{
WORD uOffset=iRow*m_uWidth+iCol;
if (uOffset>m_uMaxOffset) return true;
m_pMap[uOffset]=uValue;
return false;
}
};
Convert to C and you have your map.