📄 gouyuappview.cpp
字号:
UpdateDisplay();
gc.Deactivate();
}
void CGouYuAppView::UpdateDisplay() const
{
TFileName fullname(MBMFilename);
CompleteWithAppPath(fullname);//自动为文件名添加文件路径
CWindowGc& gc = SystemGc();
iOffScrnContext->BitBlt(TPoint(0,0),iDesk);
// gc.BitBlt(TPoint(0,0),iDesk);
if(iAppEngine->players[iAppEngine->iPlayerNum].handing_cards.Count() == 0 /*|| iAppEngine->players[1-iAppEngine->activeplayer].handing_cards.Count() == 0*/)
{
//compare two players score:
TInt cc = iAppEngine->CompareScore(0,1) ;
if(cc == 0)
{
//player0 wins
iOffScrnContext->SetPenColor(KRgbYellow);
iOffScrnContext->UseFont(iEikonEnv->NormalFont());
iOffScrnContext->DrawText(P0WIN,TPoint(100,100));
}
if(cc == -1)
{
//draw
iOffScrnContext->SetPenColor(KRgbYellow);
iOffScrnContext->UseFont(iEikonEnv->NormalFont());
iOffScrnContext->DrawText(DRAW,TPoint(100,100));
}
if(cc == 1)
{
//player1 wins
iOffScrnContext->SetPenColor(KRgbYellow);
iOffScrnContext->UseFont(iEikonEnv->NormalFont());
iOffScrnContext->DrawText(P1WIN,TPoint(100,100));
}
iOffScrnContext->DiscardFont();
}
else
{
if(iAppEngine->activeplayer==0)
{
iAppEngine->yPos1 = 10;
iAppEngine->yPos2 = 120 ;
}
if(iAppEngine->activeplayer==1)
{
iAppEngine->yPos1 = 120 ;
iAppEngine->yPos2 = 10 ;
}
/*
iAppEngine->CountPoint(0);
TBuf<20> Buffer;
Buffer.Format(_L("%d"),iAppEngine->players[0].iPoint);
iOffScrnContext->SetPenColor(KRgbRed);
iOffScrnContext->UseFont(iEikonEnv->NormalFont());
iOffScrnContext->DrawText(Buffer,TPoint(140,15));
iOffScrnContext->DiscardFont();
TInt pp;
TInt pp1;
pp = 100 ;
for(TInt j = 0 ; j<iAppEngine->players[0].score_cards.Count(); j++)
{
iOffScrnContext->BitBlt(TPoint(pp+10*(j%6),10+(j/6)*8),iAppEngine->GetCard(iAppEngine->players[iAppEngine->activeplayer].score_cards[j])->image);
// User::LeaveIfError(iCard->Load(fullname,iAppEngine->players[iAppEngine->activeplayer].score_cards[j]));
// gc.BitBlt(TPoint(pp+10*(j%6),iAppEngine->yPos1+(j/6)*8),iCard);
// pp =pp+10*j%6 ;
}
*/
TBuf<20> Buffer;
iAppEngine->CountPoint(iAppEngine->iPlayerNum);
Buffer.Format(_L("%d"),iAppEngine->players[iAppEngine->iPlayerNum].iPoint);
iOffScrnContext->SetPenColor(KRgbRed);
iOffScrnContext->UseFont(iEikonEnv->NormalFont());
iOffScrnContext->DrawText(Buffer,TPoint(140,195));
iOffScrnContext->DiscardFont();
TInt pp1;
pp1 = 100 ;
for(TInt j = 0 ; j<iAppEngine->players[iAppEngine->iPlayerNum].score_cards.Count(); j++)
{
iOffScrnContext->BitBlt(TPoint(pp1+10*(j%6),120+(j/6)*8),iAppEngine->GetCard(iAppEngine->players[iAppEngine->iPlayerNum].score_cards[j])->image);
// User::LeaveIfError(iCard->Load(fullname,iAppEngine->players[1-iAppEngine->activeplayer].score_cards[j]));
// gc.BitBlt(TPoint(pp1+10*(j%6),iAppEngine->yPos2+(j/6)*8),iCard);
// pp1 = pp1 + 10;
}
//显示本方的手中的牌handing_cards
TInt position = 20;
TInt flag1;
for(TInt j = 0;j<iAppEngine->players[iAppEngine->iPlayerNum].handing_cards.Count();j++)
{
flag1=0;
if(iAppEngine->iSelectedCardsArray.FindInOrder(j)==KErrNotFound)
{
iOffScrnContext->BitBlt(TPoint(position,120),iAppEngine->GetCard(iAppEngine->players[iAppEngine->iPlayerNum].handing_cards[j])->image);
// User::LeaveIfError(iCard->Load(fullname,iAppEngine->players[iAppEngine->activeplayer].handing_cards[j]));
// gc.BitBlt(TPoint(position,iAppEngine->yPos1),iCard);
position = position + 14 ;
flag1=1;
}
if(flag1==0 && iAppEngine->is_success != 1 )
{
position = position +14 ;
}
}
//在本方手机上不现实对方的牌,只显示iBack
TInt position2 = 20;
for(TInt j = 0;j<3;j++)
{
iOffScrnContext->BitBlt(TPoint(position2,10),iBack);
// User::LeaveIfError(iCard->Load(fullname,iAppEngine->players[1-iAppEngine->activeplayer].handing_cards[j]));
// gc.BitBlt(TPoint(position2,iAppEngine->yPos2),iCard);
position2 = position2 + 14 ;
}
//未按键选择牌时,将桌面的牌进行分层,每层12张牌,可以用数学方法简化,先放在这吧,有时间弄
if(isfish==0)
{
TInt position3 = 10 ;
for(TInt j = 0 ; j<iAppEngine->table_cards.Count();j++)
{
iOffScrnContext->BitBlt(TPoint(position3+14*(j%12),60+(j/12)*14),iAppEngine->GetCard(iAppEngine->table_cards[j])->image);
// User::LeaveIfError(iCard->Load(fullname,iAppEngine->table_cards[j]));
// gc.BitBlt(TPoint(position3,60),iCard);
// position3 = position3 + 14 ;
}
//if(iAppEngine->table_cards.Count()>12)
//{
// position3 = 10 ;
// for(TInt j = 12 ;j<iAppEngine->table_cards.Count();j++)
// {
// iOffScrnContext->BitBlt(TPoint(position3,74),iAppEngine->GetCard(iAppEngine->table_cards[j])->image);
//// User::LeaveIfError(iCard->Load(fullname,iAppEngine->table_cards[j]));
//// gc.BitBlt(TPoint(position3,74),iCard);
// position3 = position3 + 14 ;
// }
//}
//
//if(iAppEngine->table_cards.Count()>24)
//{
// position3 = 10 ;
// for(TInt j = 24 ;j<iAppEngine->table_cards.Count();j++)
// {
// iOffScrnContext->BitBlt(TPoint(position3,88),iAppEngine->GetCard(iAppEngine->table_cards[j])->image);
// // User::LeaveIfError(iCard->Load(fullname,iAppEngine->table_cards[j]));
// // gc.BitBlt(TPoint(position3,88),iCard);
// position3 = position3 + 14 ;
// }
//}
//
//if(iAppEngine->table_cards.Count()>36)
//{
// position3 = 10 ;
// for(TInt j = 36 ;j<iAppEngine->table_cards.Count();j++)
// {
// iOffScrnContext->BitBlt(TPoint(position3,100),iAppEngine->GetCard(iAppEngine->table_cards[j])->image);
// // User::LeaveIfError(iCard->Load(fullname,iAppEngine->table_cards[j]));
// // gc.BitBlt(TPoint(position3,100),iCard);
// position3 = position3 + 14 ;
// }
//}
}
//在未从桌面上勾走牌的时候显示本方手中选择的牌,显示位置为120-14
if(iAppEngine->is_success != 1 )
{
for(TInt i=0;i<iAppEngine->iSelectedCardsArray.Count();i++)
{
iOffScrnContext->BitBlt(TPoint(20+14*iAppEngine->iSelectedCardsArray[i],120-14),iAppEngine->GetCard(iAppEngine->players[iAppEngine->iPlayerNum].handing_cards[iAppEngine->iSelectedCardsArray[i]])->image);
// User::LeaveIfError(iCard->Load(fullname,iAppEngine->players[iAppEngine->activeplayer].handing_cards[iAppEngine->iSelectedCardsArray[i]]));
// gc.BitBlt(TPoint(20+14*iAppEngine->iSelectedCardsArray[i],iAppEngine->players[iAppEngine->activeplayer].ipos-14),iCard);
}
if(iAppEngine->iSelectedCardsArray.Count()==0)
{
//
}
}
//未按键1勾牌时画出每一动的绿色方块位置,手机上显示为本方的纵坐标120处
if(isfish == 0)
{
iOffScrnContext->SetPenColor(KRgbGreen);
iOffScrnContext->SetPenStyle(CGraphicsContext::ESolidPen);
// const TRect &aRect=TRect(20+14*iAppEngine->iCurrentSelectedCard,iAppEngine->players[iAppEngine->activeplayer].ipos,33+14*iAppEngine->iCurrentSelectedCard,iAppEngine->players[iAppEngine->activeplayer].ipos+24);
iOffScrnContext->DrawRect(TRect(TPoint(20+14*iAppEngine->iCurrentSelectedCard,120),TSize(13,24) ));
}
//当按1键选择勾牌后,游标(rect跳转至)桌面上的牌(table_cards),并按层选择,亦可以用数学方法简化,先行放在这里吧:)
if(isfish == 1)
{
TInt position4 = 10 ;
TInt flag3;
for(TInt j = 0 ;j<12&&j<iAppEngine->table_cards.Count();j++)
{
flag3=0;
if(iAppEngine->i_table != j)
{
iOffScrnContext->BitBlt(TPoint(position4,60),iAppEngine->GetCard(iAppEngine->table_cards[j])->image);
// User::LeaveIfError(iCard->Load(fullname,iAppEngine->table_cards[j]));
// gc.BitBlt(TPoint(position4,60),iCard);
position4 = position4 + 14 ;
flag3=1;
}
if(flag3==0&&iAppEngine->is_success!=1)
{
position4 = position4 + 14 ;
}
}
if(iAppEngine->table_cards.Count()>12)
{
position4 = 10 ;
for(TInt j = 12 ;j<iAppEngine->table_cards.Count();j++)
{
flag3=0;
if(iAppEngine->i_table!=j)
{
iOffScrnContext->BitBlt(TPoint(position4,74),iAppEngine->GetCard(iAppEngine->table_cards[j])->image);
// User::LeaveIfError(iCard->Load(fullname,iAppEngine->table_cards[j]));
// gc.BitBlt(TPoint(position4,74),iCard);
position4 = position4 + 14 ;
flag3=1;
}
if(flag3==0&&iAppEngine->is_success!=1)
{
position4 = position4 + 14 ;
}
}
}
if(iAppEngine->table_cards.Count()>24)
{
position4 = 10 ;
flag3=0;
for(TInt j = 24 ;j<iAppEngine->table_cards.Count();j++)
{
flag3=0;
if(iAppEngine->i_table!=j)
{
iOffScrnContext->BitBlt(TPoint(position4,88),iAppEngine->GetCard(iAppEngine->table_cards[j])->image);
// User::LeaveIfError(iCard->Load(fullname,iAppEngine->table_cards[j]));
// gc.BitBlt(TPoint(position4,88),iCard);
position4 = position4 + 14 ;
flag3=1;
}
if(flag3==0&&iAppEngine->is_success!=1)
{
position4 = position4 + 14 ;
}
}
}
if(iAppEngine->table_cards.Count()>36)
{
position4 = 10 ;
flag3=0;
for(TInt j = 36 ;j<iAppEngine->table_cards.Count();j++)
{
iOffScrnContext->BitBlt(TPoint(position4,100),iAppEngine->GetCard(iAppEngine->table_cards[j])->image);
// User::LeaveIfError(iCard->Load(fullname,iAppEngine->table_cards[j]));
// gc.BitBlt(TPoint(position4,100),iCard);
position4 = position4 + 14 ;
flag3=1;
}
if(flag3==0&&iAppEngine->is_success!=1)
{
position4 = position4 + 14 ;
}
}
//按1键后,又在table_cards里选择了要勾的牌,画出“落差”
if(iAppEngine->is_select==1)
{
if(iAppEngine->i_table<0||iAppEngine->i_table>=iAppEngine->table_cards.Count())
{}
else
{
iOffScrnContext->BitBlt(TPoint(10+(iAppEngine->i_table)%12*14,50+(iAppEngine->i_table/12)*10),iAppEngine->GetCard(iAppEngine->table_cards[iAppEngine->i_table])->image);
// User::LeaveIfError(iCard->Load(fullname,iAppEngine->table_cards[iAppEngine->i_table]));
// gc.BitBlt(TPoint(10+(iAppEngine->i_table)%12*14,50+(iAppEngine->i_table/12)*10),iCard);
}
}
//按1键后,并选择桌面上的牌,按ok键后:游标继续留在本方的handing_card上,因为抓完牌后还要打出一张,所以当前活动玩家不变120
//讲从桌面选出的牌从table_cards中删除,其实只是讲table_cards里的一张牌删除,i_table置为-1,因为再循环中i_table是要先加一的
if(iAppEngine->is_success == 1)
{
iOffScrnContext->SetPenColor(KRgbGreen);
iOffScrnContext->SetPenStyle(CGraphicsContext::ESolidPen);
// const TRect &aRect=TRect(20,iAppEngine->players[iAppEngine->activeplayer].ipos,33,iAppEngine->players[iAppEngine->activeplayer].ipos+24);
iOffScrnContext->DrawRect(TRect(TPoint(20,120),TSize(13,24) ));
iAppEngine->table_cards.Remove(iAppEngine->i_table);
iAppEngine->i_table = -1 ;
}
//如果1键+uparrow键后所选的要勾出的牌不满足14点的要求(即:is_success!=1)讲游标指回当前玩家手中的第一张牌
else
{
// if(iAppEngine->ifishselectedcard<12)
// {
iOffScrnContext->SetPenColor(KRgbGreen);
iOffScrnContext->SetPenStyle(CGraphicsContext::ESolidPen);
// const TRect &aRect=TRect(10+((iAppEngine->ifishselectedcard)%12*14),60+((iAppEngine->ifishselectedcard)/12*14),23+((iAppEngine->ifishselectedcard)%12*14),84+((iAppEngine->ifishselectedcard)/12*14));
if(iAppEngine->not_success == 1)
{
iOffScrnContext->DrawRect(TRect(TPoint(20/*+((iAppEngine->ifishselectedcard)%12*14)*/,120/*+((iAppEngine->ifishselectedcard)/12*14)*/),TSize(13,24) ));
iAppEngine->not_success = 0 ;
}
else
{
iOffScrnContext->DrawRect(TRect(TPoint(10+((iAppEngine->ifishselectedcard)%12*14),60+((iAppEngine->ifishselectedcard)/12*14)),TSize(13,24) ));
}
// }
// if(iAppEngine->ifishselectedcard>=12)
// {
// gc.SetPenColor(KRgbGreen);
// gc.SetPenStyle(CGraphicsContext::ESolidPen);
// const TRect &aRect=TRect(10+14*(iAppEngine->ifishselectedcard-12),74,23+14*(iAppEngine->ifishselectedcard-12),98);
// gc.DrawRect(aRect);
// }
}
iAppEngine->is_select=0;
}
}
gc.BitBlt( Rect().iTl,iOffScrnBmp );
}
// Draw this application's view to the screen
void CGouYuAppView::Draw(const TRect& aRect) const
{
TFileName fullname(MBMFilename);
CompleteWithAppPath(fullname);//自动为文件名添加文件路径
// iOffScrnContext->Clear(Rect());
if(iGameStart==1)
{
// Get the standard graphics context
CWindowGc& gc = SystemGc();
iOffScrnContext->BitBlt (TPoint( 0,0 ),iDesk );
// Gets the control's extent
// TRect rect = Rect();
// gc.BitBlt(TPoint(0,0),iDesk);
TInt position = 20;
for(TInt j = 0;j<iAppEngine->players[0].handing_cards.Count();j++)
{
iOffScrnContext->BitBlt(TPoint(position,10),iAppEngine->GetCard(iAppEngine->players[0].handing_cards[j])->image);
// User::LeaveIfError(iCard->Load(fullname,iAppEngine->players[0].handing_cards[j]));
// gc.BitBlt(TPoint(position,10),iCard);
position = position + 14 ;
}
TInt position2 = 20;
for(TInt j = 0;j<iAppEngine->players[0].handing_cards.Count();j++)
{
iOffScrnContext->BitBlt(TPoint(position2,120),iAppEngine->GetCard(iAppEngine->players[1].handing_cards[j])->image);
// User::LeaveIfError(iCard->Load(fullname,iAppEngine->players[1].handing_cards[j]));
// TInt y = iAppEngine->GetCard(iAppEngine->players[1].handing_cards[j])->type;
// gc.BitBlt(TPoint(position2,120),iCard);
position2 = position2 + 14 ;
}
TInt position3 = 20 ;
for(TInt j = 0 ;j<iAppEngine->table_cards.Count();j++)
{
iOffScrnContext->BitBlt(TPoint(position3,60),iAppEngine->GetCard(iAppEngine->players[1].handing_cards[j])->image);
// User::LeaveIfError(iCard->Load(fullname,iAppEngine->table_cards[j]));
// TInt x = iAppEngine->GetCard(iAppEngine->table_cards[j])->value;
// gc.BitBlt(TPoint(position3,60),iCard);
position3 = position3 + 14 ;
}
// if(iAppEngine->first_compare()==0)
// iAppEngine->activeplayer=1;
// else
// iAppEngine->activeplayer=0;
// gc.SetPenColor(KRgbGreen);
// gc.SetPenStyle(CGraphicsContext::ESolidPen);
// const TRect &aRect=TRect(20,60,33,84);
// gc.DrawRect(aRect);
// gc.BitBlt(TPoint(60,40),iCard);
// gc.SetBrushColor(KRgbGray);
// Clears the screen
// gc.Clear(aRect);
gc.BitBlt( Rect().iTl,iOffScrnBmp );
}
else
{
CWindowGc& gc = SystemGc();
gc.SetPenStyle(CGraphicsContext::ENullPen);
gc.SetBrushColor(KRgbWhite);
gc.SetBrushStyle(CGraphicsContext::ESolidBrush);
gc.DrawRect(aRect);
/*
iOffScrnContext->SetPenColor(KRgbBlue);
iOffScrnContext->UseFont(iEikonEnv->NormalFont());
// iOffScrnContext->DrawText(P0WIN,TPoint(100,100));
iOffScrnContext->DrawText(WELCOME,TPoint(40,100));
gc.BitBlt( Rect().iTl,iOffScrnBmp );
// gc.Clear(aRect);
*/
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -