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

📄 mmirussia.c

📁 是一个手机功能的模拟程序
💻 C
📖 第 1 页 / 共 3 页
字号:
	Boolean Result;
	
	Result=False;
	/*2003/11/24,talcon modify*/
	if(Dummy_Y ==0)
		Result=True;
	
	return Result;
}//end JudgeCoordinate

void Draw_Initinterface(T_game_russia *data)
{
	U8 i,j;
	UINT uOldColor = 0;//2003/11/04,talcon add

	//dspl_BitBlt(0, 0, Screen_X, Screen_Y, 0, (void *)Russiaframe, 0);
	drawRussiaBkg();
	
	uOldColor = dspl_SetFrgColor(0x587868);
	dspl_DrawRect(Frame_X, Frame_Y, 
				  BenchMark_X + DiamondWidth * LINEROW +1, 
				  BenchMark_Y + DiamondWidth * LineNumber +1);
	dspl_SetFrgColor(0xb6b6b6);
	dspl_DrawLine(	BenchMark_X + DiamondWidth * LINEROW + 1,Frame_Y,
					BenchMark_X + DiamondWidth * LINEROW + 1, 
					BenchMark_Y + DiamondWidth * LineNumber+ 1);
	dspl_DrawLine(	Frame_X, BenchMark_Y + DiamondWidth * LineNumber + 1,
					BenchMark_X + DiamondWidth * LINEROW +1, 
					BenchMark_Y + DiamondWidth * LineNumber +1 );

	for (i = 0;i <= LineNumber-1; i++)
		for (j =0; j<=LINEROW-1;j++)
			 DrawDiamond(j,i,RussiaNone,data);

	dspl_SetFrgColor(uOldColor); //2003/11/04,talcon add
	           	
}//end Draw_Initinterface

//dwar russia background
void drawRussiaBkg()
{
#ifdef RUSSIA_BKG
	drawIconByIcnAttr((MfwIcnAttr*)Russia_BkgAttr,0);
#else
	U32 color = dspl_SetBkgColor(0x30a0f8);
	//dspl_ClearAll();
	dspl_Clear(0,0,128,160);
	dspl_SetBkgColor(color);
#endif
}//end drawRussiaBkg

void drawRussiaBkgByZone(int posX,int posY,int nWidth,int nHeight)
{
#ifdef RUSSIA_BKG
	dspl_BitBlt_ext(posX, posY,posX, posY,
		nWidth, nHeight,
		Screen_X, Screen_Y,0, (void *)Russiaframe, 0);
#else
	U32 color = dspl_SetBkgColor(0x30a0f8);
	dspl_Clear(posX,posY,posX + nWidth, posY + nHeight);
	dspl_SetBkgColor(color);
#endif
}
void Dspl_terris(T_game_russia *data)
{
	U8 i,j,umode;
	U32 oldcolor;
	char information[6];
	
	umode=dspl_Enable(0);
	//dspl_BitBlt(0, 0, Screen_X, Screen_Y, 0, (void *)Russiaframe, 0);
	drawRussiaBkg();
	
	oldcolor = dspl_SetFrgColor(0x587868);
	dspl_DrawRect(Frame_X, Frame_Y, 
		BenchMark_X + DiamondWidth * LINEROW, 
		BenchMark_Y + DiamondWidth * LineNumber);
	
	for (i = 0;i <= LineNumber-1; i++)
		for (j =0; j<=LINEROW-1;j++)
		{
			DrawDiamond(j,i,data->R_Coordinate[j][i],data);
		}
	       
	Print_Number((char *)information,6,(U32)data->R_Score);
	dspl_SetFrgColor(0xff);
	dspl_TextOut(CHARXPOS, CHARYPOS,DSPL_TXTATTR_TRANSPARENT, (char *)information);
	dspl_SetFrgColor(oldcolor); 
	
	Dspl_TotalLines(data->R_LineCount);
	/* 2004/06/17 yhf add */
	Dspl_Score(data->R_Score);
	Dspl_Difficult(data,data->R_Speed); 
	Draw_PreviewShape(data->R_Nextview,data->R_NextviewColor);	
	/* end yhf add */
	
	dspl_Enable(umode);
		
}//end Dspl_terris

void Dspl_Difficult(T_game_russia * data,UBYTE diffcult)
{
	char information[3];
    //dspl_BitBlt(DIFFCULTXPOS, DIFFCULTYPOS, RECTWIDTH, RECTHEGHT, 0, (void *)Rect1backgrd, 0);
	drawRussiaBkgByZone(DIFFCULTXPOS,DIFFCULTYPOS,RECTWIDTH,RECTHEGHT);

    Print_Number((char *)information,3,(U32)diffcult);
	set_font_type(UNI12X12_FONT);
    dspl_TextOut(DIFFCULTXPOS+10, DIFFCULTYPOS-1,DSPL_TXTATTR_TRANSPARENT, (char *)information);
    
	switch(diffcult)
   	{
   	case 0:
   	case 1:
   	case 2:
   	case 3:
   	case 4:
   	case 6:
   	case 9:
		timSetTime(data->timer,100);
		break;
   	case 5:
    case 8:
		timSetTime(data->timer,130);
		break;
   	case 7:
		timSetTime(data->timer,160);
		break;
   	default:break;
   	}
	
}//end Dspl_Difficult

void Dspl_TotalLines(int lines)
{
	char information[6];
    //dspl_BitBlt(DIFFCULTXPOS, DIFFCULTYPOS, RECTWIDTH, RECTHEGHT, 0, (void *)Rect1backgrd, 0);
    drawRussiaBkgByZone(LINESXPOS, LINESYPOS,60, RECTHEGHT);
	
    Print_Number((char *)information,6,(U32)lines);
	set_font_type(UNI12X12_FONT);
    dspl_TextOut(LINESXPOS+(Screen_X - LINESXPOS - strlen(information)*12)/2, LINESYPOS,DSPL_TXTATTR_TRANSPARENT, (char *)information);	
}

void Dspl_Score(int score)
{
	char information[8];
	Print_Number((char *)information,7,(U32)score);

	drawRussiaBkgByZone(CHARXPOS, CHARYPOS,40,12);

	set_font_type(UNI12X12_FONT);
	dspl_TextOut(CHARXPOS, CHARYPOS,DSPL_TXTATTR_TRANSPARENT, (char *)information);

}
void DrawText(U8 uX,U8 uY,U32 uColor,char *pszText)
{
	U32 oldcolor;
	
	if (!pszText)return;
    oldcolor = dspl_SetFrgColor(uColor);    
    dspl_TextOut(uX, uY,DSPL_TXTATTR_TRANSPARENT, pszText);
    dspl_SetFrgColor(oldcolor);	
}//end 
U8 Set_Rflect(U8 speed)
{
	
	switch(speed)
	{
   	case 0:
   	case 1:
   	case 2:
   	case 3:
   	case 4:
		return 7-speed;
   	case 6:
   	case 5:
		return 2;
   	case 9:   
    case 8:
   	case 7:
		return 1;
   	default:break;
	}
}//end Set_Rflect
void  Russia_Help(void)
{
	U32 oldcolor;
	
	oldcolor = dspl_SetBkgColor(0xF6F2CD);
	//2004/06/08 yhf modify
	dspl_fill_rectangle(0, 0, 128, 160);	
	//dspl_fill_rectangle(0, 0, 120, 160);
	dspl_DrawLine(0,0,0,160);
	dspl_SetBkgColor(oldcolor);
	
	//dspl_BitBlt(0,0,120,18,0,(void*)gameTitle,0);
	//draw3dbutton(0,0,119,20,(char *)gameexplain,0x80ff,1);
	
	/* 2004/06/19 yhf modify */
	dspl_TextOut(44, 1, DSPL_TXTATTR_TRANSPARENT,(char *)MmiRsrcGetText(TxtGameExplain));	
	dspl_TextOut(0, RUSSIAHELPINIT,DSPL_TXTATTR_TRANSPARENT, (char *)MmiRsrcGetText(TxtTerrisHelp1));
	dspl_TextOut(0, RUSSIAHELPINIT+37,DSPL_TXTATTR_TRANSPARENT, (char*)MmiRsrcGetText(TxtPublicHelp1));
	dspl_TextOut(0, RUSSIAHELPINIT+55,DSPL_TXTATTR_TRANSPARENT, (char*)MmiRsrcGetText(TxtPublicHelp2));
	dspl_TextOut(0, RUSSIAHELPINIT+73,DSPL_TXTATTR_TRANSPARENT, (char*)MmiRsrcGetText(TxtPublicHelp3));
	dspl_TextOut(0, RUSSIAHELPINIT+91,DSPL_TXTATTR_TRANSPARENT, (char*)MmiRsrcGetText(TxtPublicHelp4));
	/* end yhf modify */

}

void Russia_Mnushow()
{
/*
	static U8 bmpnum;

	if(bmpnum==1)
	{
		//dspl_BitBlt(0,0,120,78,0,(void*)russia_mnubmp1,0);
		//dspl_BitBlt(0,0,120,160,0,(void*)Russia_EntryBkg,0);
	}
	else
	{
		//dspl_BitBlt(0,0,120,78,0,(void*)russia_mnubmp1,0);
		//dspl_BitBlt(6,21,108,27,0,(void*)russia_mnubmp2,0);
		//dspl_BitBlt(0,0,120,160,0,(void*)Russia_EntryBkg,0);
	}

	bmpnum = 1 - bmpnum;
	*/
#if (MAIN_LCD_SIZE==3)
	int posX = 0, posY = 0;
	
	dspl_ClearAll();
	dspl_BitBlt(Russia_EntryBkg[0],Russia_EntryBkg[1],Russia_EntryBkg[2],Russia_EntryBkg[3],0,(void*)&Russia_EntryBkg[4],0);
	//	dspl_TextOut(28, 4, DSPL_TXTATTR_WHITE_EDGE,MmiRsrcGetText(TxtGamestart));
	//	dspl_TextOut(28, 18, DSPL_TXTATTR_WHITE_EDGE,MmiRsrcGetText(TxtGameselect));
	//	dspl_TextOut(28, 32, DSPL_TXTATTR_WHITE_EDGE,MmiRsrcGetText(TxtGamehelp));
	//	dspl_TextOut(28, 46, DSPL_TXTATTR_WHITE_EDGE,MmiRsrcGetText(TxtGameScore));
	
	posX = 50; 
	posY = 28 + 22 *Current_Select;
	dspl_BitBlt(posX, posY, 22, 18, 0, (void *)game_Menu_Finger, DSPL_BMPXOR);//shiheng 288 waiting//游戏手指图
	dspl_BitBlt(posX, posY, 22, 18, 0, (void *)game_Menu_Finger_mask, DSPL_BMPAND);
	dspl_BitBlt(posX, posY, 22, 18, 0, (void *)game_Menu_Finger, DSPL_BMPXOR);
#endif 
//dspl_BitBlt(0,77,120,82,0,(void*)game_mnubmp,0);
}

#ifndef GAME_SUBMENU
/*2003/10/18,talcon add*/
void Russia_MnuItemIcnShow(T_game_russia * data)
{
	int nBmpX,nBmpY;
	int nPosX,nPosY;
	int nInterval = 1;

	nBmpY = nBmpX = nPosX = 0;
	nPosY = 75 + 17 * data->R_CurSlect;
	if(data->R_AnimType == 0)
	{
		nBmpY = 0;
		nPosX = 0;		
		nBmpX = 25 - data->R_AnimIndx * 5;
		data->R_AnimIndx ++;
		if(nBmpX < 0)
		{
			nBmpX = 0;
			data->R_AnimType = 1;
			data->R_AnimIndx = 0;
		}
	}
	
#if(MAIN_LCD_SIZE==4)

	dspl_BitBlt_ext(nPosX,nPosY,
		nBmpX,nBmpY,
		25 - nBmpX, 15 - nBmpY ,
		25,15,
		0,
		(void*) game_MenuAnim,0);
#endif
}
#endif

int  GameRussiaEntry(MfwMnu* m, MfwMnuItem* i)
{

  T_MFW_HND win = mfw_parent(mfw_header());
    
  T_MFW_HND winCur  = GameRussiaStart(win);

#ifdef GAME_SUBMENU
  T_MFW_WIN     * win_data = ((T_MFW_HDR *)winCur)->data;
  T_game_russia   * data     = (T_game_russia*)win_data->user;

  if(winCur)
  {
	  //SEND_EVENT(winCur,Russia_Initstate,0,0);
	  switch(m->lCursor[m->level])
	  {
	  case 0:
		  l_mode=Russia_Gamestate;
		  data->CurState=R_Init;
		  winShow(data->win);
		  break;
	  case 1:
		  l_mode=Russia_Settingstate;
//		  Load_Keyset(russiagame);
		  winShow(data->win);
		  break;
	  case 2:
		  l_mode=Russia_Scorestate;
		  winShow(data->win);
		  break;
	  case 3:
		  l_mode=Russia_Helpstate;
		  winShow(data->win);
		  break;
		  break;
	  default:
		  break;
	  }
  }
#endif
  return MFW_EVENT_CONSUMED;
}

T_MFW_HND GameRussiaStart (MfwHnd parent)
{

  T_MFW_HND win = GameRussiaCreate(parent);

#ifndef GAME_SUBMENU
  if ( win != 0 )
	  SEND_EVENT(win,Russia_Initstate,0,0);
#endif

   g_norejectkeyflag=1;
  return win;
}

T_MFW_HND GameRussiaCreate( MfwHnd parent )
{
    T_MFW_WIN     * win;
    char * russiatitle;    
    T_game_russia *data=(T_game_russia *)ALLOC_MEMORY(sizeof(T_game_russia));

	TRACE_FUNCTION ("GameRussiaCreate()");
    if(data==NULL)
		return 0;
	
	/*2003/10/18,talcon add*/
	data->R_CurSlect = 0;
	data->R_AnimIndx = 0;
	data->R_AnimType = 0;
	/*end talcon */
    data->win=win_create(parent,0,E_WIN_VISIBLE,(T_MFW_CB)GameRussia_win_cb);
        
    if (data->win EQ 0) 
	{
		FREE_MEMORY ((void *)data, sizeof (T_game_russia));
		return 0;	 
	}

    g_game_win = data->win;
    data->mmi_control.dialog    = (T_DIALOG_FUNC)GameRussiaDialog;
    data->mmi_control.data     = data;
    win                      = ((T_MFW_HDR *)data->win)->data;
    win->user                = (void *) data;

    russiatitle=(char *) MmiRsrcGetText(TxtRussiagame);  // get the editor title text
    data->kbd      = kbd_create (data->win,KEY_ALL | KEY_MAKE,(T_MFW_CB)GameRussia_kbd_cb);
    data->russiaTimeflag =0;
    data->timer     = tim_create (data->win,timeout,(T_MFW_CB)GameRussia_tim_cb); //  timeout
    return data->win;
}

void GameRussiaDialog(T_MFW_HND win, USHORT event, SHORT value, void * parameter)
{
    T_MFW_WIN      * win_data = ((T_MFW_HDR *) win)->data;
    T_game_russia    * data = (T_game_russia *)win_data->user;

    game_Rectangle   Rectangledata;
    char information[20];
    U32 oldcolor;
    TRACE_FUNCTION ("GameRussiaDialog()");

    switch (event)
	{   
#ifndef GAME_SUBMENU
	    case  Russia_Initstate:
               winShow(data->win); 
	    	  break;
#endif
	    default:     
			return;
	}
}

static int GameRussia_win_cb (MfwEvt e, MfwWin *w)
{
	T_game_russia * data = (T_game_russia*)w->user;
	U32 oldcolor;												
    char information[7];
    TRACE_FUNCTION ("GameRussia_win_cb()");
	MMI_TRACE_EVENT(("yhf--------------GameRussia_win_cb()"));

	/* 2004/06/03 yhf add */
	 if(winIsFocussed(data->win)==0)
		 winfocusout = 1; 
	 else 
	 	winfocusout=0;
	/* end yhf add */
	
	 switch (e)
    {
        case MfwWinVisible:   
        	switch(l_mode)
			{
#ifndef GAME_SUBMENU
			case Russia_Initstate:
				//2003/10/18,talcon add
				data->R_AnimIndx = data->R_AnimType = 0;
				timSetTime(data->timer,150);
				
				Russia_Mnushow();	
				//2003/10/18,talcon add
				Russia_MnuItemIcnShow(data);
				if(data->russiaTimeflag==0)
				{
					timStart(data->timer);
					data->russiaTimeflag=1;
				}
				break;
#endif
			case Russia_Gamestate:
				if(data->CurState==R_Init)
				{					
					Draw_Initinterface(data);
					data->R_Score=0;
					data->R_LineCount = 0; //talcon add
					data->R_Speed=0;

					data->R_Nextview=rand()%RUSSIASTYTLE+1;
					data->R_NextviewColor = rand()%RUSSIACOLOR + 1;
					//draw "Next"
					{
						set_font_type(UNI12X12_FONT);
						//dspl_TextOut(PREVIEWXPOS,PREVIEWYPOS-12,DSPL_TXTATTR_TRANSPARENT, (char*)MmiRsrcGetText(TxtGameNext));	
					}
					Draw_PreviewShape(data->R_Nextview,data->R_NextviewColor);             

					
					//draw "Speed"
					{
						set_font_type(UNI12X12_FONT);
						dspl_TextOut(DIFFCULTXPOS, DIFFCULTYPOS-12,DSPL_TXTATTR_TRANSPARENT, (char*)MmiRsrcGetText(TxtNull));	
					}
					Dspl_Difficult(data,data->R_Speed);    
					
					//draw "Srore"
					{
						char *txt = (char *)MmiRsrcGetText(TxtNull);
						int nStringWidth = get_StringWidth(txt);
						set_font_type(UNI12X12_FONT);
						dspl_TextOut(CHARXPOS - nStringWidth - 12, CHARYPOS,DSPL_TXTATTR_TRANSPARENT, txt);	
						set_font_type(UNI12X12_FONT);
						//dspl_TextOut(CHARXPOS - 12, CHARYPOS,DSPL_TXTATTR_TRANSPARENT, ":");	
					}

					Dspl_Score(data->R_Score);
					//draw "Lines"
					{
						set_font_type(UNI12X12_FONT);
						dspl_TextOut(LINESXPOS, LINESYPOS-12,DSPL_TXTATTR_TRANSPARENT, (char*)MmiRsrcGetText(TxtNull));	
					}
					Dspl_TotalLines(data->R_LineCount);
					data->CurState=R_Ready; 
				}
			/* 2004/06/03 yhf add */ 
				if(winfocusout==1)
				{
					data->Prekeycode = 0;
					Dspl_terris(data);
					
					if(data->CurState==R_Start)
					{
						timStart(data->timer);
						data->russiaTimeflag=1;
					}
				}
			/* end yhf add */	
				break;
			case Russia_Settingstate:
				dspl_ClearAll();
				//if(Key_Setshow((void *)&keysetting))
				Key_Setshow(0);
				
				break;
				
			case Russia_Exitstate:
				//   dspl_ClearAll(); /*2003/12/16, wangyan modify*/
				//Draw_Dialog((char *)MmiRsrcGetText(TxtExitGame));
				draw_icon_require();
#if(MAIN_LCD_SIZE==3)//jhxu720
				ALIGNED_PROMPT(CENTER_RIGHT, DIALOG_HALF_FIRSTSECOND, DSPL_TXTATTR_TRANSPARENT, TxtExitGame);				
#else
			    ALIGNED_PROMPT(CENTER, DIALOG_FIRST_LINE, DSPL_TXTATTR_TRANSPARENT, TxtExitGame);
#endif
				dsplsoftkey(TxtGameGoon, TxtGameExit);
				break;
			case Russia_Overstate:
				//Russia_Scoreshow(data->R_Score);
				Game_Scoreshow(&ffs_gamedata.Russia_ffsScore,data->R_Score,0,1);
				break;
			case Russia_Scorestate:
				//Russia_Scoreshow(data->R_Score);
				Game_Scoreshow(&ffs_gamedata.Russia_ffsScore,-1,0,0);
				break;
			case Russia_Helpstate:
				dspl_ClearAll();
				Russia_Help();
				break;
			default:break;
			}
             break;
        default:          return 1;
    }
    return 1;
}

static int GameRussia_kbd_cb (MfwEvt e, MfwKbd *k)
{
	T_MFW_HND       win      = mfw_parent (mfw_header());
    T_MFW_WIN     * win_data = ((T_MFW_HDR *)win)->data;
    T_game_russia   * data     = (T_game_russia*)win_data->user;

    int i,j;
    char information[20];
    Boolean CanMove;
    UBYTE diamondcolor;
    U32 oldcolor;
		
     TRACE_EVENT ("GameRussia_kbd_cb()");
#ifndef GAME_SUBMENU
    if(l_mode==Russia_Initstate && (e&KEY_MAKE)) //初始状态
    {
		switch(k->code)
		{
		case KCD_1:
		case KCD_2:
		case KCD_3:
		case KCD_4:
			if(data->R_CurSlect+1 != k->code)
			{
				data->R_CurSlect = k->code - 1;
				data->R_AnimIndx = data->R_AnimType = 0;
				timStart(data->timer);
			}
			//winShow(data->win);
			break;
		case KCD_MNUDOWN:

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -