📄 hfloorcontainer.cpp
字号:
iOffScreenBitmapGc->BitBlt(TPoint(0, wallcnti * 16 + wallposy), imgWall);
iOffScreenBitmapGc->BitBlt(TPoint(BACKWIDTH - 8, wallcnti * 16 + wallposy), imgWall);
}
}
void CHFloorContainer::DrawFps()
{
iOffScreenBitmapGc->UseFont(iCoeEnv->NormalFont());
iOffScreenBitmapGc->SetPenColor(TRgb(0, 0, 0));
iOffScreenBitmapGc->DrawText( _L("FPS:"), TPoint(1, 11));
iOffScreenBitmapGc->SetPenColor(TRgb(255, 255, 0));
iOffScreenBitmapGc->DrawText( _L("FPS:"), TPoint(2, 12));
}
void CHFloorContainer::DrawBoarder()
{
iOffScreenBitmapGc->BitBlt(TPoint(0, BACKHEIGHT - 32), imgBoarder);
}
TInt CHFloorContainer::ConvertGB(TDes8 &sString, TDes16 &sRet) const
{
CCnvCharacterSetConverter* converter = CCnvCharacterSetConverter::NewLC();
if (converter->PrepareToConvertToOrFromL(KCharacterSetIdentifierGbk,
iCoeEnv->FsSession()) != CCnvCharacterSetConverter::EAvailable)
{
User::Leave(KErrNotSupported);
return 0;
}
TInt state = CCnvCharacterSetConverter::KStateDefault;
if (CCnvCharacterSetConverter::EErrorIllFormedInput == converter->ConvertToUnicode(sRet, sString, state))
{
User::Leave(KErrArgument);
return 0;
}
CleanupStack::PopAndDestroy();
return 1;
}
void CHFloorContainer::DrawFloor()
{
for (TInt i = 0; i <= FLOORCNT; i++)
{
switch (bfloortype[i])
{
case 1:
{
iOffScreenBitmapGc->BitBlt(TPoint(arrfloor[i].iX, arrfloor[i].iY - 7), imgFloor2);
iOffScreenBitmapGc->BitBlt(arrfloor[i], imgFloor5);
break;
}
case 2:
{
if ((bJump==0)||(bJump>2))
iOffScreenBitmapGc->BitBlt(TPoint(arrfloor[i].iX, arrfloor[i].iY), imgFloor3);
else if (iCurFloorID==i)
iOffScreenBitmapGc->BitBlt(TPoint(arrfloor[i].iX, arrfloor[i].iY - 4), imgFloor4);
else
iOffScreenBitmapGc->BitBlt(TPoint(arrfloor[i].iX, arrfloor[i].iY), imgFloor3);
break;
}
case 3:
{
iOffScreenBitmapGc->BitBlt(arrfloor[i], imgFloor6);
if (i == iCurFloorID)
{
switch (bfloordown)
{
case 1:
case 2:
{
iOffScreenBitmapGc->BitBlt(arrfloor[iCurFloorID], imgFloor7);
bfloordown ++;
break;
}
case 3:
case 4:
{
playerPosY += 3;
iOffScreenBitmapGc->BitBlt(arrfloor[iCurFloorID], imgFloor8);
bfloordown ++;
break;
}
case 5:
case 6:
{
iOffScreenBitmapGc->BitBlt(arrfloor[iCurFloorID], imgFloor9);
bfloordown ++;
break;
}
case 7:
case 8:
{
iOffScreenBitmapGc->BitBlt(arrfloor[iCurFloorID], imgFloor8);
bfloordown ++;
break;
}
case 9:
case 10:
{
iOffScreenBitmapGc->BitBlt(arrfloor[iCurFloorID], imgFloor7);
bfloordown ++;
break;
}
default:{
iOffScreenBitmapGc->BitBlt(arrfloor[iCurFloorID], imgFloor6);
bfloordown = 0;
break;
}
}
}
break;
}
case 4:
{
iOffScreenBitmapGc->BitBlt(arrfloor[i], imgFloor10);
if (bfloorscroll[i] > 0)
{
if (iCurFloorID == i)
playerPosX += 2;
bfloorscroll[i] ++;
if (bfloorscroll[i] == 4)
bfloorscroll[i] = 1;
switch (bfloorscroll[i])
{
case 1: {
iOffScreenBitmapGc->BitBlt(arrfloor[i], imgFloor10);
break;
}
case 2: {
iOffScreenBitmapGc->BitBlt(arrfloor[i], imgFloor11);
break;
}
case 3: {
iOffScreenBitmapGc->BitBlt(arrfloor[i], imgFloor12);
break;
}
}
}else{
if (iCurFloorID ==i)
playerPosX -= 2;
bfloorscroll[i] --;
if (bfloorscroll[i] == -4)
bfloorscroll[i] = -1;
switch (bfloorscroll[i])
{
case -1: {
iOffScreenBitmapGc->BitBlt(arrfloor[i], imgFloor12);
break;
}
case -2: {
iOffScreenBitmapGc->BitBlt(arrfloor[i], imgFloor11);
break;
}
case -3: {
iOffScreenBitmapGc->BitBlt(arrfloor[i], imgFloor10);
break;
}
}
}
break;
}
default :
{
iOffScreenBitmapGc->BitBlt(arrfloor[i], imgFloor);
break;
}
}
}
}
void CHFloorContainer::DrawPlayer()
{
if (GameStatus == GAMESTART)
{
if (playercanmove)
PlayerMove(playerdir);
else
playerStatus = 3;
if (playerPosX<9)
playerPosX = 8;
if (playerPosX > 152)
playerPosX = 152;
if (playerPosY<8)
{
playerPosY = 9;
HP -= 2;
FlashUserState = 1;
bJump = 0;
HitCnt = 0;
}
if (!bJump)
{
TInt iPos = ChkHit();
if (iPos!=-1)
{
iCurFloorID = iPos;
playerPosY = arrfloor[iPos].iY - 16 - 1;
if ((bfloortype[iPos]==1)&&NextFloor)
{
NextFloor = 0;
HP -= 2;
FlashUserState = 1;
HitCnt = 0;
iMAPBHit->Play();
}else{
if (NextFloor)
{
iMAPHit->Play();
HitCnt ++;
if (bfloortype[iPos]==2)
{
bJump = 1;
}
if (bfloortype[iPos] == 3)
{
bfloordown = 1;
}
NextFloor = 0;
if (HP < HPMAX)
HP ++;
}
}
}
else
{
iCurFloorID = -1;
NextFloor = 1;
playerPosY += 4;
if (!playercanmove)
{
if (bJumpStatus)
{
playerStatus = 7;
bJumpStatus = 0;
}
else
{
playerStatus = 8;
bJumpStatus = 1;
}
}else
{
if (playerdir==1)
{
if (bJumpStatus)
{
playerStatus = 9;
bJumpStatus = 0;
}
else
{
playerStatus = 10;
bJumpStatus = 1;
}
}else if (playerdir ==2)
{
if (bJumpStatus)
{
playerStatus = 12;
bJumpStatus = 0;
}
else
{
playerStatus = 11;
bJumpStatus = 1;
}
} else
{
playerStatus = 3;
}
}
}
}
else
{
bJump ++;
if (bJump > 10)
bJump = 0;
if (bJump != 10)
playerPosY -= 4;
if (!playercanmove)
{
if (bJumpStatus)
{
playerStatus = 8;
bJumpStatus = 0;
}
else
{
playerStatus = 7;
bJumpStatus = 1;
}
}else
{
if (playerdir==1)
{
if (bJumpStatus)
{
playerStatus = 9;
bJumpStatus = 0;
}
else
{
playerStatus = 10;
bJumpStatus = 1;
}
}else if (playerdir ==2)
{
if (bJumpStatus)
{
playerStatus = 12;
bJumpStatus = 0;
}
else
{
playerStatus = 11;
bJumpStatus = 1;
}
} else
{
playerStatus = 3;
}
}
}
if (FlashUserState!=0)
{
FlashUserState ++;
if (FlashUserState > 26)
FlashUserState = 0;
if ((FlashUserState%2)!=0)
NBitmapMethods::BitBltMaskedEntireBitmap(*iOffScreenBitmapGc, TPoint(playerPosX, playerPosY), *imgPlayer[playerStatus], *imgPlayerMask[playerStatus]);
}
else
{
NBitmapMethods::BitBltMaskedEntireBitmap(*iOffScreenBitmapGc, TPoint(playerPosX, playerPosY), *imgPlayer[playerStatus], *imgPlayerMask[playerStatus]);
}
}
}
void CHFloorContainer::PlayerMove(TInt playerdir)
{
switch (playerdir)
{
case 1:
playerStatus ++;
if (playerStatus>=3)
playerStatus = 0;
playerPosX +=4 ;
break;
case 2:
playerStatus --;
if ((playerStatus<=3)||(playerStatus>6))
playerStatus = 6;
playerPosX -= 4;
break;
default : playerStatus = 3;
break;
}
}
TInt CHFloorContainer::ChkHit()
{
for (TInt i = 0; i <= FLOORCNT; i ++)
{
if ((((arrfloor[i].iY - playerPosY - 16)>-4)&&((arrfloor[i].iY - playerPosY - 16)<4))&&((((playerPosX + 16 - 5)>arrfloor[i].iX)&&((playerPosX + 16 - 5)<(arrfloor[i].iX + 44)))||(((playerPosX + 5) < (arrfloor[i].iX + 44))&&((playerPosX + 5) >arrfloor[i].iX))))
return i;
}
return -1;
}
void CHFloorContainer::DrawHP()
{
//
for (TInt i = 0; i < HP; i++)
{
iOffScreenBitmapGc->BitBlt(TPoint(i * 10 + 26, 193), imgHeart);
}
}
void CHFloorContainer::GameStart()
{
//初始化变量
mapposx = -64;
mapposy = -64;
wallposy = -16;
playerPosX = 10;
playerPosY = 10;
playerStatus = 3;
playercanmove = 0;
playerdir = 0;
HitCnt = 0;
iIsOverTime = 0;
HP = HPMAX;
CurScore = 0;
GameStatus = GAMESTART;
FlashUserState = 0;
iScoreStep = 0;
for (TInt i = 0; i <= FLOORCNT; i++)
{
bfloortype[i] = 0;
}
}
void CHFloorContainer::DrawScore()
{
if (CurScore==100)
{
iMAPFall->Play();
iIsOverTime = 1;
}
TBuf<4> buf;
buf.Num(HighScore);
iOffScreenBitmapGc->UseFont(LatinBold12());
iOffScreenBitmapGc->SetPenColor(TRgb(0, 0, 0));
iOffScreenBitmapGc->DrawText(buf, TPoint(145, 200));
iOffScreenBitmapGc->SetPenColor(TRgb(255, 255, 255));
iOffScreenBitmapGc->DrawText(buf, TPoint(144, 200));
buf.Num(CurScore);
iOffScreenBitmapGc->UseFont(LatinBold13());
iOffScreenBitmapGc->SetPenColor(TRgb(255, 255, 0));
iOffScreenBitmapGc->DrawText(buf, TPoint(79, 190));
}
TInt CHFloorContainer::ChkGameOver()
{
if ((HP<1)||(playerPosY > 200))
return 1;
return 0;
}
void CHFloorContainer::DrawGameOver()
{
iOffScreenBitmapGc->UseFont(LatinBold17());
iOffScreenBitmapGc->SetPenColor(TRgb(255, 255, 255));
iOffScreenBitmapGc->DrawText(_L("GAME OVER !!!"), TPoint(40, 80));
}
void CHFloorContainer::DrawTop()
{
NBitmapMethods::BitBltMaskedEntireBitmap(*iOffScreenBitmapGc, TPoint(9, 0), *imgTop, *imgTopMask);
//iOffScreenBitmapGc->BitBlt(TPoint(0,0), imgTop);
}
void CHFloorContainer::SaveScore()
{
//
RFs rfs;
RFile f;
rfs.Connect();
rfs.MkDirAll(iSaveFileName);
if (f.Create(rfs, iSaveFileName, EFileWrite) != KErrNone)
{
if (f.Open(rfs, iSaveFileName, EFileWrite) != KErrNone)
{
rfs.Close();
User::Leave(KErrNotSupported);
}
}
TBuf8<4> buf;
buf.Num(HighScore);
f.Write(buf, buf.Length());
f.Close();
rfs.Close();
}
void CHFloorContainer::LoadScore()
{
//
RFs rfs;
RFile f;
rfs.Connect();
rfs.MkDirAll(iSaveFileName);
if (f.Open(rfs, iSaveFileName, EFileRead) != KErrNone)
{
rfs.Close();
HighScore=0;
}else{
TBuf8<4> buf;
f.Read(buf, 3);
TLex8 lex(buf);
lex.Val(HighScore);
f.Close();
rfs.Close();
}
}
void CHFloorContainer::DrawHitCnt()
{
if (HitCnt > 1)
{
TBuf<16> buffer;
buffer.Num(HitCnt);
buffer.Append(_L(" Hit"));
iOffScreenBitmapGc->UseFont(LatinBold12());
iOffScreenBitmapGc->SetPenColor(TRgb(255, 255, 0));
iOffScreenBitmapGc->DrawText(buffer, TPoint(120, 30));
}
}
void CHFloorContainer::DrawLogo()
{
iOffScreenBitmapGc->BitBlt(TPoint(19, 93), imgLogo);
}
void CHFloorContainer::MapcInitComplete(TInt aError, const TTimeIntervalMicroSeconds &)
{
//
}
void CHFloorContainer::MapcPlayComplete(TInt aError)
{
//
}
void CHFloorContainer::DrawAbout()
{
TBuf<128> iAbout;
iAbout.Copy(_L("X-Vertical"));
iOffScreenBitmapGc->UseFont(LatinPlain12());
iOffScreenBitmapGc->SetPenColor(TRgb(255, 255, 255));
iOffScreenBitmapGc->DrawText(iAbout, TPoint(10, 20));
iAbout.Copy(_L("Version 1.20"));
iOffScreenBitmapGc->DrawText(iAbout, TPoint(10, 35));
iAbout.Copy(_L("By Mobile Power Digital Co., Ltd."));
iOffScreenBitmapGc->DrawText(iAbout, TPoint(10, 50));
iAbout.Copy(_L("http://www.mobilepow.com"));
iOffScreenBitmapGc->DrawText(iAbout, TPoint(10, 65));
}
void CHFloorContainer::DrawHelp()
{
TBuf<128> iAbout;
iAbout.Copy(_L("Help"));
iOffScreenBitmapGc->UseFont(LatinPlain12());
iOffScreenBitmapGc->SetPenColor(TRgb(255, 255, 255));
iOffScreenBitmapGc->DrawText(iAbout, TPoint(10, 20));
iAbout.Copy(_L("Start the Game: Select 'Start"));
iOffScreenBitmapGc->DrawText(iAbout, TPoint(10, 50));
iAbout.Copy(_L("Game'from the menu and press"));
iOffScreenBitmapGc->DrawText(iAbout, TPoint(10, 65));
iAbout.Copy(_L("OK."));
iOffScreenBitmapGc->DrawText(iAbout, TPoint(10, 80));
iAbout.Copy(_L("Move around: Press the Left"));
iOffScreenBitmapGc->DrawText(iAbout, TPoint(10, 95));
iAbout.Copy(_L("and Right keys to control the"));
iOffScreenBitmapGc->DrawText(iAbout, TPoint(10, 110));
iAbout.Copy(_L("moving of the characters."));
iOffScreenBitmapGc->DrawText(iAbout, TPoint(10, 125));
iAbout.Copy(_L("Quit the Game: Right Click to "));
iOffScreenBitmapGc->DrawText(iAbout, TPoint(10, 140));
iAbout.Copy(_L("quit the game"));
iOffScreenBitmapGc->DrawText(iAbout, TPoint(10, 155));
}
void CHFloorContainer::DrawDemo()
{
TBuf<256> buf;
buf.Copy(_L("Thanks for your interested in"));
iOffScreenBitmapGc->DrawText(buf, TPoint(10, 40));
buf.Copy(_L("X-Vertical."));
iOffScreenBitmapGc->DrawText(buf, TPoint(10, 55));
buf.Copy(_L("This is only the demo version."));
iOffScreenBitmapGc->DrawText(buf, TPoint(10, 70));
buf.Copy(_L("Please download the full version"));
iOffScreenBitmapGc->DrawText(buf, TPoint(10, 85));
buf.Copy(_L("for the full enjoyment!"));
iOffScreenBitmapGc->DrawText(buf, TPoint(10, 100));
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -