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

📄 mmiballoon.c

📁 是一个手机功能的模拟程序
💻 C
📖 第 1 页 / 共 5 页
字号:
  {
    win  = ((T_MFW_HDR *)own_window)->data;
    data = (Balloon_Game *)win->user;
    pheader=data->pheader;
    pscreenbuffer=(char *)data->pscreenbuffer;
    
    if (data)
    {
      win_delete (data->win);
    }
      flash_Gamewrite();
    FREE_MEMORY ((void *)pscreenbuffer, (CURSORSIZE*CURSORSIZE*2+2)*sizeof(char));
    FREE_MEMORY ((void *)pheader, sizeof (BalloonItemHeader));
    FREE_MEMORY ((void *)data, sizeof (Balloon_Game));
    g_norejectkeyflag=0;
    g_game_win=0;
    //set_backlight_on();//2004-03-25 Sunny remove
  }
}

/*******************************************************************************
 $Function:    	balloon_start
 $Description:	 This function just creates and inits the new dialog
 $Returns:		
 $Arguments:					
*******************************************************************************/
T_MFW_HND balloon_start (T_MFW_HND win_parent,char *character)
{


  T_MFW_HND win = balloon_create (win_parent);

  TRACE_EVENT("balloon_start");

  if (win NEQ NULL)
  {
         g_norejectkeyflag=1;
#if 0	//2004-03-25 Sunny remove
	  if( ffs_gamedata.Balloon_Ffskeyload[1].keyCode%40)
	  	set_backlight_off();
#endif
	  
	  SEND_EVENT(win,balloongame,0,character);//初始化win后由dialog来处理事件
  }
  return win;

}

/*******************************************************************************
 $Function:    	boxman_dialog
 $Description:	 
 $Returns:		
 $Arguments:					
*******************************************************************************/
void balloon_dialog (T_MFW_HND win, USHORT event, SHORT value, void * parameter)
{
    T_MFW_WIN      * win_data = ((T_MFW_HDR *) win)->data;
    Balloon_Game      * data = (Balloon_Game *)win_data->user;

    TRACE_FUNCTION ("balloon_dialog()");

   /*
   *  In this case the communication is very simple (only one intern event)
   */


    switch (event)
	{
		case balloongame:
               winShow(data->win);
		break;

	    default:
		return;
	}

}

/*******************************************************************************
 $Function:    	boxman_win_cb
 $Description:	win calback function of boxman
 $Returns:		
 $Arguments:	 				
*******************************************************************************/
static int balloon_win_cb (MfwEvt e, MfwWin *w)
{
	Balloon_Game * data = (Balloon_Game *)w->user;
	BalloonItemHeader * pheader= data->pheader;
   // MapInfo   *mapinfo2=data->mapinfo;

	if(winIsFocussed(data->win)==0)
		{
              winfocusout = 1; 
#if 0//2004-03-25 Sunny remove
		if( ffs_gamedata.Balloon_Ffskeyload[1].keyCode%40)
		   set_backlight_off();
#endif
		}
	 else 
	 	{
	 	winfocusout=0;
#if 0//2004-03-25 Sunny remove
		if(!g_lcd_game_flag&&( ffs_gamedata.Balloon_Ffskeyload[1].keyCode%40))
			set_backlight_off();
#endif
	 	}
     
	
	switch (e)
    {
        case MfwWinVisible:
        		TRACE_EVENT("balloon_win_cb clear");

        		switch(l_mode)
        			{
        			case BALLOONINITIAL:
                          Balloon_Mnushow();
                          if(data->balloonTimeflag==0)
                          	{
                          	timStart(data->bltimer);
                          	data->balloonTimeflag=1;
                          	}
        				 break;
        			case BALLOONPLAY:     
        				 dspl_ClearAll();      
        				 if(winfocusout==1)
        				 	{			
        				 	dspl_all(pheader,data->pscreenbuffer);
        				 	timStart(data->bltimer);
        				 	data->balloonTimeflag=1;
        				 	}
        				 break;
        		    case BALLOONWIN:  
        		    	 dspl_ClearAll();
        		    	 if(pheader->score>149)
        		    	 Show_Hitin(pheader);
        		    	 else
        		    	 Show_Socre(pheader);
        		   	     break;
        		   case BALLOONEXIT:
        		   		 dspl_ClearAll();
        		   		 Draw_Dialog((char *)gameexit);
                                    dsplsoftkey(TxtGameGoon, TxtGameExit);
        		   		 break;
                        case BALLOONHELP:
        		          //dspl_ClearAll();
                                    balloon_help();
                            	break;
                        case  BALLOONSETTING:
                            	dspl_ClearAll();
                        	if(Key_Setshow((void *)&keysetting))
                    		{
                      	  timStart(data->bltimer);
                     	  data->balloonTimeflag=1;
                    		}
                     	break;
                       case BALLOONSCORE:
                     	//dspl_ClearAll();
                           Show_Socre(pheader);
                     	break;
        			}        	
        break;
        default:
        break;
    }

    return 1;
}

/*******************************************************************************
 $Function:    	balloon_kbd_cb
 $Description:	 
 $Returns:		
 $Arguments:	 				
*******************************************************************************/
static int balloon_kbd_cb (MfwEvt e, MfwKbd *k)
{

    T_MFW_HND       win  = mfw_parent (mfw_header());
    T_MFW_WIN     * win_data = ((T_MFW_HDR *)win)->data;
    Balloon_Game         * data = (Balloon_Game *)win_data->user;
    char * pscreenbuffer=data->pscreenbuffer;
    BalloonItemHeader * pheader=data->pheader;
    U8 i;
    
    TRACE_EVENT ("balloon_kbd_cb()");
  
	if((e & KEY_MAKE))
		{
	switch(l_mode)
		{
		  case BALLOONINITIAL:
		  	   switch(k->code)
		  	   	{
		  	   	 case KCD_1:
		  	   	 	 l_mode=BALLOONPLAY;
		  	   	 	 totalscore=0;
		  	   	 	 
		  	   	 	 if(data->balloonTimeflag==1)
                                    timStop(data->bltimer);

		  	   	        newgame(pheader);
		  	   	        timStart(data->bltimer);
		  	   	        data->balloonTimeflag=1;
		  	   	  	 winShow(data->win);
		  	   	  	break;
		  	   	  case KCD_2:
		  	   	  	 l_mode=BALLOONSCORE;
		  	   	  	   winShow(data->win);
		  	   	  	break;
		  	   	  case KCD_3:
		  	   	  	   l_mode=BALLOONSETTING;
		  	   	  	   Load_Keyset(balloongame);
		  	   	  	   winShow(data->win);
		  	   	  	break;
		  	   	  case KCD_4:
		  	   	  	   l_mode=BALLOONHELP;
		  	   	  	   winShow(data->win);
		  	   	  	   break;
		  	   	  case KCD_RIGHT:
		  	   	  case KCD_HUP:		  	   	  
				       balloon_destroy(data->win);
		  	   	  	break;
		  	   	  default:break;
		  	   	}
		  	break;
		  case BALLOONPLAY:				
		  				if(k->code== Balloon_Ffskey[2].keyCode)//左移
		  					{
		  					pheader->keycode=1;
		  					movecursorquik(pheader);
		  					showcursor(pscreenbuffer);
		  					return MFW_EVENT_CONSUMED;
		  					}
		  				if(k->code== Balloon_Ffskey[3].keyCode)//右移
		  					{
		  					pheader->keycode=2;
		  					movecursorquik(pheader);
		  					showcursor(pscreenbuffer);
		  					return MFW_EVENT_CONSUMED;
		  					}
		  					
		  				if(k->code== Balloon_Ffskey[4].keyCode)//下移
		  					{
		  					pheader->keycode=4;
		  					movecursorquik(pheader);
		  					showcursor(pscreenbuffer);
		  					return MFW_EVENT_CONSUMED;
		  					}
		  				if(k->code== Balloon_Ffskey[5].keyCode)//上移
		  					{
		  					pheader->keycode=3;
		  					movecursorquik(pheader);
		  					showcursor(pscreenbuffer);
		  					return MFW_EVENT_CONSUMED;	
		  					}
		  				if(k->code== Balloon_Ffskey[6].keyCode)//开枪
		  					{
		  					pheader->keycode=5;
		  					if(gunshort(pheader))	
		  						{
		  					removeelement(pheader);
		  					if(timestoped)
		  					 pheader->fireflag=1;
		  						}
		  					return MFW_EVENT_CONSUMED;
		  					}
		  			   if(k->code==Balloon_Ffskey[7].keyCode)//退出
		  			   	{
		  				 timStop(data->bltimer);
		  				 data->balloonTimeflag=0;
		  				 l_mode=BALLOONEXIT;		  						
		  				 winShow(data->win); 					  
		  				 return MFW_EVENT_CONSUMED;	
		  			   	}
		  	   break;
		  	   
		  case BALLOONEXIT:
		  	   switch(k->code)
		  	   	{
                 case KCD_LEFT:
                 	l_mode=BALLOONPLAY;
                 	dspl_ClearAll();
                 	dspl_all(pheader,data->pscreenbuffer);
                 	timStart(data->bltimer);
                 	data->balloonTimeflag=1;
                 	break;
                 case KCD_RIGHT:
                 case KCD_HUP:
                 	removeallitem(pheader);
		  			keysetting.gamedifficult=SpeedOne;	
		  			timSetTime(data->bltimer, balloontimeout);
		  			l_mode=BALLOONINITIAL;
                 	winShow(data->win);
                 	break;
		  	    }
		  	   break;
		  case BALLOONWIN:
		  	   switch(k->code)
		  	   	{
		  	   	case KCD_LEFT:
		  	         if(pheader->score>149)
		  	         	{
		  	         	keysetting.gamedifficult++;
		  	         	}
		  	         	else
		  	         		{
		  	         		totalscore=0;
		  	         	    keysetting.gamedifficult=SpeedOne;	
		  	         		}
		  	   		 l_mode=BALLOONPLAY;
		  	   		 newgame(pheader);
		  	   	     timStart(data->bltimer); 
		  	   	     data->balloonTimeflag=1;
		  	   	     winShow(data->win);
		  	   		 break;
		  	   	case KCD_RIGHT:
		  	   	case KCD_HUP:
		  	   		 totalscore=0;
		  	   		 keysetting.gamedifficult=SpeedOne;
		  	   		 l_mode=BALLOONINITIAL;
		  	   		 timSetTime(data->bltimer, balloontimeout);
		  	   		 winShow(data->win);
		  	   		 break;
		  	   		 default:
		  	   		 	break;
		  	   	}		    
		  	 break;
		  case BALLOONHELP:
		  	switch(k->code)
		  		{
		  		case KCD_LEFT:
		  		case KCD_RIGHT:
		  		case KCD_HUP:
		     	l_mode=BALLOONINITIAL;
		     	break;
		  		}
		  	winShow(data->win);
		  	break;
		 case BALLOONSETTING:
		 	if(Key_Setting_func(balloongame, &keysetting,k))
		 		l_mode=BALLOONINITIAL;
		 	winShow(data->win);
		  	break;
         case BALLOONSCORE:
            switch(k->code)
            	{
            	case KCD_LEFT:
            		for(i=0;i<5;i++)
            			{
            			Blloon_Score->score[i]=0;
            			}
            		winShow(data->win);
            		break;
            	case KCD_RIGHT:
            	case KCD_HUP:
            		l_mode=BALLOONINITIAL;
		 	        winShow(data->win);
            		break;
            	}
		 	break;
		  	default:break;
		}
		}
	
	    if(!(e&KEY_MAKE))
    	{
    	//这里之处理上下左右四个键对于键OK不处理
    	if(l_mode==BALLOONPLAY)
    		{
		  	if((k->code== Balloon_Ffskey[2].keyCode)||
		  	  (k->code== Balloon_Ffskey[3].keyCode)||
		  	  (k->code== Balloon_Ffskey[4].keyCode)||
		  	  (k->code== Balloon_Ffskey[5].keyCode)||
		  	  (k->code== Balloon_Ffskey[6].keyCode))		
	         pheader->keycode=0;	
    		}
    	}//end if key_make
    return MFW_EVENT_CONSUMED;
}

/*******************************************************************************
 $Function:    	balloon
 $Description:	Starts the game function on user selection
 $Returns:		
 $Arguments:	 
*******************************************************************************/
int balloon(MfwMnu* m, MfwMnuItem* i)
{
	Balloon_Game *			data;
    T_MFW_HND	    	parent       = mfwParent( mfw_header());
    TRACE_EVENT("balloon()");
    balloon_start(parent,0);
    return MFW_EVENT_CONSUMED;  //eat it and won't be deal with in the parent window
}



static int balloon_mnu_cb (MfwEvt e, MfwMnu *m)
{
    T_MFW_HND    win  = mfwParent(mfw_header());

⌨️ 快捷键说明

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