📄 ppgameview.cpp
字号:
// 重绘选择框
m_pBitmap[IDB_SELECT_INDEX]->Draw(m_tSelectPoint.ptNewScreenX, m_tSelectPoint.ptNewScreenY,
14, 14, 14 * m_nCurSelectIndex, 0);
// 画表情
m_pBitmap[IDB_BROW_INDEX]->Draw(100, 95, 25, 24, 25 * m_nBrowIndex, 0);
m_nBrowIndex = 2;
// 画得分
int nScore = m_pDoc->m_tGameScore.nScore;
int nCount = 0;
int nIndex = 0;
while (true)
{
int nTempData = nScore % 10;
nIndex = m_pDoc->GetDataIndex(nTempData);
Draw(m_pScreen[3], m_pbmDbd[3], 118 - nCount * 6 , 125, 6, 12, nIndex, 0);
nScore = nScore / 10;
nCount++;
if (nScore == 0)
break;
}
// 画级别
int nlevel = m_pDoc->m_tGameScore.nLevel;
nCount = 0;
nIndex = 0;
while (true)
{
int nTempData = nlevel % 10;
nIndex = m_pDoc->GetDataIndex(nTempData);
Draw(m_pScreen[3], m_pbmDbd[3], 118 - nCount * 6 , 39, 6, 12, nIndex, 0);
nlevel = nlevel / 10;
nCount++;
if (nlevel == 0)
break;
}
// 画剩余行数
int nLine = m_nLines[1];
nCount = 0;
nIndex = 0;
while (true)
{
int nTempData = nLine % 10;
nIndex = m_pDoc->GetDataIndex(nTempData);
Draw(m_pScreen[3], m_pbmDbd[3], 115 - nCount * 6 , 72, 6, 12, nIndex, 0);
nLine = nLine / 10;
nCount++;
if (nLine == 0)
break;
}
// 画新增钻石
for (nCol = 0; nCol < m_nCurCol; nCol++)
{
Draw(m_pScreen[1], m_pbmDbd[1], (nCol* 10) + 3, 120, 10, 10, m_nNewLine[nCol][1] * 10, 0);
switch (m_nNewLine[nCol][1])
{
case 4:
case 5:
case 7:
case 8:
case 10:
case 11:
case 13:
case 14:
case 16:
case 17:
m_nNewLine[nCol][1]++;
break;
case 6:
case 9:
case 12:
case 15:
case 18:
m_nNewLine[nCol][1] = m_nNewLine[nCol][1] - 2;
break;
default:
break;
}
}
SetTimeCount();
}
bool CPPGameView::SetTimer(int32 dwInterval, PFNNOTIFY pfnCallback)
{
CPPGameApp* pApp = NULL;
BEGIN_CHECK
{
// 取app指针
CHECK_NULL(pApp, (CPPGameApp*) GETAPPINSTANCE());
CHECK_ERROR(ISHELL_SetTimerEx(pApp->m_pIShell, dwInterval, &m_cbTimer));
}
CATCH_CHECK
{
return false;
}
END_CHECK
return true;
}
//void CPPGameView::SetGameViewStatus(bool bViewStatus)
//{
//}
void CPPGameView::InitDemoData()
{
int nPosX = 0; // 钻石对应的屏幕横坐标
int nPosY = 0; // 钻石对应的屏幕纵坐标
for (int row = 6; row < DIAMOND_ROW; row++)
{
for (int col = 0; col < DIAMOND_COL; col++)
{
m_nDiamond[row][col][0] = m_nDemoDiamondType[(row - 6) * DIAMOND_COL + col];
switch (m_nDiamond[row][col][0])
{
case 1:
case 2:
case 3:
case 4:
m_nDiamond[row][col][1] = m_nDiamond[row][col][0] - 1;
break;
case 5:
m_nDiamond[row][col][1] = 4;
break;
case 6:
m_nDiamond[row][col][1] = 7;
break;
case 7:
m_nDiamond[row][col][1] = 10;
break;
case 8:
m_nDiamond[row][col][1] = 13;
break;
case 9:
m_nDiamond[row][col][1] = 16;
break;
}
nPosX = GetXPosFromColDiamond(col);
nPosY = GetYPosFromRowDiamond(row);
Draw(m_pScreen[1], m_pbmDbd[1], nPosX,
nPosY, 10, 10, m_nDiamond[row][col][1] * 10, 0);
}
}
}
void CPPGameView::ExitView(int nViewID)
{
CPPGameApp* pApp = NULL;
pApp = (CPPGameApp*) GETAPPINSTANCE();
// 设置定时器结束标志
m_pDoc->SetExitTimer(true);
// 结束定时器
CALLBACK_Cancel(&m_cbTimer);
// 释放声音
// if (m_pISoundPlayer1)
// {
// ISOUNDPLAYER_Release(m_pISoundPlayer1);
// m_pISoundPlayer1 = NULL;
// }
// if (m_pISoundPlayer2)
// {
// ISOUNDPLAYER_Release(m_pISoundPlayer2);
// m_pISoundPlayer2 = NULL;
// }
if (m_pIMedia1)
{
IMEDIA_Release(m_pIMedia1);
m_pIMedia1 = NULL;
FREE(m_pSoundBuffer1);
}
if (m_pIMedia2)
{
IMEDIA_Release(m_pIMedia2);
m_pIMedia2 = NULL;
FREE(m_pSoundBuffer2);
}
//释放文件
if (m_pIFileMgr)
{
IFILEMGR_Release(m_pIFileMgr);
m_pIFileMgr = NULL;
}
if (m_pIFile)
{
IFILE_Release(m_pIFile);
m_pIFile = NULL;
}
// 释放位图资源
if (m_pBitmap[IDB_GAMEBACK_INDEX])
CUSTOM_RELEASE(m_pBitmap[IDB_GAMEBACK_INDEX]);
if (m_pBitmap[IDB_DIAMOND_INDEX])
CUSTOM_RELEASE(m_pBitmap[IDB_DIAMOND_INDEX]);
CUSTOM_RELEASE(m_pBitmap[IDB_BROW_INDEX]);
CUSTOM_RELEASE(m_pBitmap[IDB_SELECT_INDEX]);
if (m_pBitmap[IDB_BLAST_INDEX])
CUSTOM_RELEASE(m_pBitmap[IDB_BLAST_INDEX]);
if (m_pBitmap[IDB_DATA_INDEX])
CUSTOM_RELEASE(m_pBitmap[IDB_DATA_INDEX]);
CUSTOM_RELEASE(m_pGameMenuBitmap[IDB_GAMEMENUTEXT_INDEX]);
CUSTOM_RELEASE(m_pGameMenuBitmap[IDB_GAMEMENUBACK_INDEX]);
// 释放资源
for (int i = 0; i < 4; i++)
{
if (m_pbmDbd[i])
{
IBITMAP_Release(m_pbmDbd[i]);
m_pbmDbd[i] = NULL;
}
if (m_pScreen[i])
{
IBITMAP_Release(m_pScreen[i]);
m_pScreen[i] = NULL;
}
}
// if (nViewID != ID_VIEW_STOP)
m_pDoc->SwitchView(nViewID);
// else
// ISHELL_CloseApplet(pApp->m_pIShell, false);
}
int16 CPPGameView::GetSelectXPoint()
{
return m_tSelectPoint.ptx;
}
int16 CPPGameView::GetSelectYPoint()
{
return m_tSelectPoint.pty;
}
void CPPGameView::SetSelectYPoint(int nY)
{
m_tSelectPoint.pty = nY;
switch(nY)
{
case 0:
m_tSelectPoint.ptNewScreenX = 2;
break;
case 1:
m_tSelectPoint.ptNewScreenX = 12;
break;
case 2:
m_tSelectPoint.ptNewScreenX = 22;
break;
case 3:
m_tSelectPoint.ptNewScreenX = 32;
break;
case 4:
m_tSelectPoint.ptNewScreenX = 42;
break;
case 5:
m_tSelectPoint.ptNewScreenX = 52;
break;
case 6:
m_tSelectPoint.ptNewScreenX = 62;
break;
case 7:
m_tSelectPoint.ptNewScreenX = 72;
break;
case 8:
m_tSelectPoint.ptNewScreenX = 82;
break;
case 9:
m_tSelectPoint.ptNewScreenX = 92;
break;
default:
m_tSelectPoint.ptNewScreenX = 2;
break;
}
}
void CPPGameView::SetSelectXPoint(int nX)
{
m_tSelectPoint.ptx = nX;
switch(nX)
{
case 0:
m_tSelectPoint.ptNewScreenY = 15;
break;
case 1:
m_tSelectPoint.ptNewScreenY = 25;
break;
case 2:
m_tSelectPoint.ptNewScreenY = 35;
break;
case 3:
m_tSelectPoint.ptNewScreenY = 45;
break;
case 4:
m_tSelectPoint.ptNewScreenY = 55;
break;
case 5:
m_tSelectPoint.ptNewScreenY = 65;
break;
case 6:
m_tSelectPoint.ptNewScreenY = 75;
break;
case 7:
m_tSelectPoint.ptNewScreenY = 85;
break;
case 8:
m_tSelectPoint.ptNewScreenY = 95;
break;
case 9:
m_tSelectPoint.ptNewScreenY = 105;
break;
default:
m_tSelectPoint.ptNewScreenY = 15;
break;
}
}
void CPPGameView::GetCoordFromPoint(SELECTPOINT tSelectPoint)
{
}
void CPPGameView::SetSelectMoveSta(boolean bMove)
{
m_bMoveSelect = bMove;
}
//bool CPPGameView::GetGameViewStatus()
//{
// return false;
//}
void CPPGameView::InitDiamondData(boolean bDraw/* = true*/)
{
int nPosX = 0; // 钻石对应的屏幕横坐标
int nPosY = 0; // 钻石对应的屏幕纵坐标
int nLine = 0;
if (m_nlevel < 4)
nLine = 6 - (m_nlevel - 1);
else
nLine = 3;
for (int row = nLine; row < DIAMOND_ROW; row++)
{
for (int col = 0; col < DIAMOND_COL; col++)
{
int k = GetDiamondType();
m_nDiamond[row][col][0] = k; //将钻石类形存入数组
switch (k)
{
case 1:
case 2:
case 3:
case 4:
m_nDiamond[row][col][1] = k - 1;
break;
case 5:
m_nDiamond[row][col][1] = 4;
break;
case 6:
m_nDiamond[row][col][1] = 7;
break;
case 7:
m_nDiamond[row][col][1] = 10;
break;
case 8:
m_nDiamond[row][col][1] = 13;
break;
case 9:
m_nDiamond[row][col][1] = 16;
break;
}
nPosX = GetXPosFromColDiamond(col);
nPosY = GetYPosFromRowDiamond(row);
if (bDraw)
{
Draw(m_pScreen[1], m_pbmDbd[1], nPosX,
nPosY, 10, 10, m_nDiamond[row][col][1] * 10, 0);
}
}
}
}
int CPPGameView::GetDiamondType()
{
int i = 0;
int j = 0;
i = RandomData(1, 5);
j = RandomData(5, 20 * m_nlevel * 12);
// j = RandomData(5, 2 * m_nlevel * 12);
if (j == 5 || j == 6 || j == 7 || j == 8 || j == 9)
return j;
else
return i;
}
int CPPGameView::RandomData(unsigned int n1, unsigned int n2)
{
unsigned int n;
while (true)
{
GETRAND((byte* )&n, sizeof(int));
n = n % n2;
if (n >= n1 && n < n2)
return n;
}
}
int CPPGameView::GetXPosFromColDiamond(int nCol)
{
int nPosX = 0;;
switch(nCol)
{
case 0:
nPosX = 4;
break;
case 1:
nPosX = 14;
break;
case 2:
nPosX = 24;
break;
case 3:
nPosX = 34;
break;
case 4:
nPosX = 44;
break;
case 5:
nPosX = 54;
break;
case 6:
nPosX = 64;
break;
case 7:
nPosX = 74;
break;
case 8:
nPosX = 84;
break;
case 9:
nPosX = 94;
break;
default:
nPosX = 4;
break;
}
return nPosX;
}
int CPPGameView::GetYPosFromRowDiamond(int nRow)
{
int nPosY = 0;;
switch(nRow)
{
case 0:
nPosY = 17;
break;
case 1:
nPosY = 27;
break;
case 2:
nPosY = 37;
break;
case 3:
nPosY = 47;
break;
case 4:
nPosY = 57;
break;
case 5:
nPosY = 67;
break;
case 6:
nPosY = 77;
break;
case 7:
nPosY = 87;
break;
case 8:
nPosY = 97;
break;
case 9:
nPosY = 107;
break;
default:
nPosY = 17;
break;
}
return nPosY;
}
int CPPGameView::GetTimeCount()
{
return m_nGameTimeCount;
}
void CPPGameView::SetTimeCount()
{
if (m_nGameTimeCount == 8)
m_nGameTimeCount = 0;
else
m_nGameTimeCount++;
}
void CPPGameView::SetDiamondLine()
{
if (m_nLines[1] == 0)
{
// if (m_nLines[0] <= 7)
m_nLines[0] += 2;
m_nLines[1] += m_nLines[0];
}
else
m_nLines[1]--;
}
int CPPGameView::GetCurRemainLine()
{
return m_nLines[1];
}
void CPPGameView::AddLevel()
{
m_pDoc->m_tGameScore.nLevel++;
m_nlevel = m_pDoc->m_tGameScore.nLevel;
// 设置进入下一关声音
SetSoundStatus(NEXT_LEVEL);
PlaySound(NEXT_LEVEL);
// RegisterSound(true);
}
void CPPGameView::SetAllRedrawStatus(boolean bRedrawAll)
{
// m_bAllRedraw = bRedrawAll;
}
void CPPGameView::Draw(IBitmap* pIDest, IBitmap* pISrc, int nDestX, int nDestY,
int nWidth, int nHeight, int nSrcX, int nSrcY)
{
NativeColor color;
IBITMAP_GetPixel(pISrc, 0, 0, &color);
IBITMAP_SetTransparencyColor(pISrc,color);
IBITMAP_BltIn(pIDest, nDestX, nDestY, nWidth, nHeight, pISrc, nSrcX, nSrcY, AEE_RO_TRANSPARENT);
IDISPLAY_Update (((CPPGameApp*)GETAPPINSTANCE())->m_pIDisplay);
}
int CPPGameView::GetSelectRowFromX(int nX)
{
int nRow = 0;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -