⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gouyuappview.cpp

📁 手机钩鱼扑克牌游戏 蓝牙对战 手机游戏:扑克钩鱼 说明文档 硬件环境:支持Symbian Series 60 的智能手机
💻 CPP
📖 第 1 页 / 共 2 页
字号:
		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 + -