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

📄 xiyou.java

📁 HappyTreeFriends手机游戏的源代码
💻 JAVA
📖 第 1 页 / 共 5 页
字号:
import java.io.*;
import java.util.*;
import javax.microedition.lcdui.*;
import com.nokia.mid.ui.*;
import com.nokia.mid.sound.Sound;
import javax.microedition.rms.RecordStore;

import com.nokia.mid.sound.Sound;

public class Xiyou
    extends FullCanvas
    implements Runnable
{


    public Xiyou()
    {
    }
 
    public static boolean s_isRunning = true;
  
    public static boolean s_pauseRunning = false;
    
    public static long s_ctrRunning = 0;

    

    private static final int INTERVAL = 80;
    private static final int INTERVAL_MENU = 100;
    private static final int INTERVAL_TRAILER = 80;


	

    public void run()
    {
        long tick;
        while (s_isRunning)
        {
            //System.gc();
            if (s_pauseRunning)
            {
                Thread.yield();
                continue;
            }
    

            tick = System.currentTimeMillis() + (s_gameStatus == DGameStatus.GS_PRELUDE || s_gameStatus == DGameStatus.GS_MAIN_MENU ? INTERVAL_TRAILER :  INTERVAL);


            repaint();
            serviceRepaints();
                 
            
            while (System.currentTimeMillis() < tick)
                Thread.yield();
            s_ctrRunning++;
        }
        HappyTreeFriends.s_midlet.destroyApp(true);
        HappyTreeFriends.s_midlet = null;
    }

  
    public static void Quit()
    {
        s_isRunning = false;
    }
   
    public static Graphics s_g;

  
    public static int s_gameStatus = DGameStatus.GS_LOGO;

    
    public static int s_ctrGameStatus;

   
    public static void SetGameStatus(int newGameStatus)
    {
        s_gameStatus = newGameStatus;
        s_ctrGameStatus = 0;
		
        s_selectedIndex = 0;

		
    }

    public static boolean s_isPause = false;

    // Temp for demo.
    public static int s_section = 0;
    
    public static Image s_imgSplash;
    public static Image s_imgPressAnyKey;


   //for enter name
   public static final int SHOW_HIGH_SCORE_ZHEN = 30;



 


   public static final int PAUSE_MENU_Y = 10;	
   public static final int INGAME_HIGHSCORE_Y = 5;
   


     
	   //splash 

    public static final int SPLASH_OFFSET = 0;
    public static final int MS_NAME_OFFSET_Y = 0;


   //for splash loading
   public static final int SPLASH_LOADING_WIDTH = PINGMUDDD.sssCHUANNN_WIDTH * 3 / 5;




    
    protected void paint(Graphics g)
    {
  
    try
    {
	

        s_g = g;
        shenJIIIIIIIKeyBegin();


        switch (s_gameStatus)
        {
            case DGameStatus.GS_LOGO:
		

		  s_imgFont[0] = Image.createImage("/font_14.png");


		  LoadStrings(DWorld.STR_BLOCK_ID_COMMON);
                SetGameStatus(DGameStatus.GS_SOUND_OPTION);
                break;

            case DGameStatus.GS_SOUND_OPTION:
               
		 FILLSCREEN(COLOR_BLUE_WALL);
		 drawImageString(s_g, GetString(DWorld.STR_ID_SOUND),
        	           PINGMUDDD.sssCHUANNN_WIDTH >> 1, PINGMUDDD.sssCHUANNN_HEIGHT - 20 >> 1 , FONT_HUGE, IMG_FONT_CENTER,
        	           0);

		 drawImageString(s_g, GetString(DWorld.STR_ID_ON),
        	           PINGMUDDD.sssCHUANNN_WIDTH - 5, PINGMUDDD.sssCHUANNN_HEIGHT - CHAR_H[0] - 1  , FONT_HUGE, IMG_FONT_RIGHT,
        	           0);
		 drawImageString(s_g, GetString(DWorld.STR_ID_OFF),
        	           5, PINGMUDDD.sssCHUANNN_HEIGHT - CHAR_H[0] - 1  , FONT_HUGE, IMG_FONT_LEFT,
        	           0);
		 
		  if (IsKeyPressed(GK_SOFT_LEFT) )
			{
			        s_soundOn = false;
				 SetGameStatus(DGameStatus.GS_SPLASH);
			}
		  else if (IsKeyPressed(GK_A | GK_SOFT_RIGHT) )
			{
				 s_soundOn = true;
				 SetGameStatus(DGameStatus.GS_SPLASH);		
			}		
               
                break;

            case DGameStatus.GS_SPLASH:	
		  FILLSCREEN(0XFFFFFF);	
		  if(s_ctrGameStatus % SPLASH_DURATION == 1)	
		  	{
		  		s_splash = Image.createImage("/splash" + (s_ctrGameStatus / SPLASH_DURATION + 1) + ".png");
				s_g.setClip(0 , 0 , PINGMUDDD.PINGMUKUAN, PINGMUDDD.PINGMUGAO);
				s_g.drawImage(s_splash ,  PINGMUDDD.PINGMUKUAN >> 1 ,  PINGMUDDD.PINGMUGAO - SPLASH_OFFSET>> 1 , Graphics.VCENTER | Graphics.HCENTER);
		  	}
		  else if(s_ctrGameStatus == 3 *  SPLASH_DURATION)
		  	{
		  		SetGameStatus(DGameStatus.GS_LOAD_MENU_RES);	
				s_splash = Image.createImage("/htflogo.png");
		  	}
		  else
		  	{
		  		s_g.setClip(0 , 0 , PINGMUDDD.PINGMUKUAN, PINGMUDDD.PINGMUGAO);
				s_g.drawImage(s_splash ,  PINGMUDDD.PINGMUKUAN >> 1 ,  PINGMUDDD.PINGMUGAO - SPLASH_OFFSET>> 1 , Graphics.VCENTER | Graphics.HCENTER);
		  	}
		  
		  
		  		
                break;

	     case DGameStatus.GS_END_GAME:
		  FILLSCREEN(COLOR_BLUE_WALL);
 		  drawStringLines(GetString(DWorld.STR_ID_CONGRATUNATIONS) , PINGMUDDD.sssCHUANNN_WIDTH >> 1  , PINGMUDDD.sssCHUANNN_HEIGHT - 30 >> 1 , CHAR_H[FONT_HUGE] + 3 , IMAGE_STR , IMG_FONT_CENTER);
                DrawTxtButton();
		  if(IsKeyPressed(GK_SOFT_RIGHT |GK_A) )
		 		{
		 			Jiaose.InitPlayAgain();
					SetGameStatus(DGameStatus.GS_LOAD_MENU_RES);
		 		}
			

	 
			  
				
		  		
		  break;	  	  

            case DGameStatus.GS_LOAD_GAME_RES:
	
                DrawResLoad(LOADING_GAME_RES_DURANTION);
				
                InitializeActionPhase();
                break;
            case DGameStatus.GS_LOAD_MENU_RES:


                if(s_isFirstRun)
                	{


		  FILLSCREEN(0XFFFFFF);
			  
		  s_g.setClip(0 , 0 , PINGMUDDD.PINGMUKUAN, PINGMUDDD.PINGMUGAO);


		  s_g.drawImage(s_splash ,  PINGMUDDD.PINGMUKUAN >> 1 ,  PINGMUDDD.PINGMUGAO - 10>> 1 , Graphics.VCENTER | Graphics.HCENTER);

		  s_g.setColor(0x0);	
		  s_g.fillRect(PINGMUDDD.PINGMUKUAN  - SPLASH_LOADING_WIDTH >> 1, PINGMUDDD.PINGMUGAO - 10, SPLASH_LOADING_WIDTH, 6);	    
		  s_g.setColor(COLOR_YELLOW_BG);	
		  s_g.fillRect(PINGMUDDD.PINGMUKUAN  - SPLASH_LOADING_WIDTH >> 1, PINGMUDDD.PINGMUGAO - 10, s_ctrGameStatus * SPLASH_LOADING_WIDTH / LOADING_MENU_RES_DURANTION, 6);
		  s_g.setColor(COLOR_BLUE_WALL);	
		  s_g.drawRect(PINGMUDDD.PINGMUKUAN  - SPLASH_LOADING_WIDTH >> 1, PINGMUDDD.PINGMUGAO - 10, SPLASH_LOADING_WIDTH, 6);



                	}
		  else
		  	DrawResLoad(LOADING_MENU_RES_DURANTION);

                InitialMenu();			
		  break;
            case DGameStatus.GS_MAIN_MENU:
		  DrawMenu();
                //SetGameStatus(DGameStatus.GS_ACTION);
                break;

            case DGameStatus.GS_ACTION:

                if (IsKeyPressed(Xiyou.GK_SOFT_RIGHT))
                {
                    s_isPause = !s_isPause;
                }
                
                if (s_isPause)
                {
		       FILLSCREEN(COLOR_BLUE_WALL);

			changeSelect(3);


			s_g.setColor(COLOR_YELLOW_BG);
			s_g.setClip(0,0,PINGMUDDD.sssCHUANNN_WIDTH , PINGMUDDD.sssCHUANNN_HEIGHT);
			s_g.fillRoundRect( PINGMUDDD.sssCHUANNN_WIDTH - GS_PAUSE_YELLOW_BG_W >> 1 , PAUSE_MENU_Y - 3, GS_PAUSE_YELLOW_BG_W, GS_PAUSE_YELLOW_BG_H, MS_OPTION_BG_ARC_W, MS_OPTION_BG_ARC_W);

			
                    s_g.setColor(COLOR_BLUE_WALL);
		      s_g.setClip(0,0,PINGMUDDD.sssCHUANNN_WIDTH , PINGMUDDD.sssCHUANNN_HEIGHT);
		      s_g.fillRoundRect( PINGMUDDD.sssCHUANNN_WIDTH - GS_PAUSE_BLUE_BG_W >> 1 , PAUSE_MENU_Y, GS_PAUSE_BLUE_BG_W, GS_PAUSE_BLUE_BG_H, MS_OPTION_BG_ARC_W, MS_OPTION_BG_ARC_W);
			  drawImageString(s_g, GetString(DWorld.STR_ID_RESUME),
        	           PINGMUDDD.sssCHUANNN_WIDTH >> 1, PAUSE_MENU_Y + GS_PAUSE_WORD_OFFSET_Y, FONT_HUGE, IMG_FONT_CENTER,
        	           s_selectedIndex == 0 ? 0 : 1);
			  drawImageString(s_g, GetString(DWorld.STR_ID_PAUSE_1),
        	           PINGMUDDD.sssCHUANNN_WIDTH >> 1, PAUSE_MENU_Y + GS_PAUSE_WORD_OFFSET_Y + GS_PAUSE_GAP, FONT_HUGE, IMG_FONT_CENTER,
        	           s_selectedIndex == 1 ? 0 : 1);
			  drawImageString(s_g, GetString(DWorld.STR_ID_PAUSE_2),
        	           PINGMUDDD.sssCHUANNN_WIDTH >> 1, PAUSE_MENU_Y + GS_PAUSE_WORD_OFFSET_Y + 2 * GS_PAUSE_GAP, FONT_HUGE, IMG_FONT_CENTER,
        	           s_selectedIndex == 2 ? 0 : 1);
			 
                    if (IsKeyPressed(Xiyou.GK_A))
                    {
                            if (s_selectedIndex == 0)
                            	{
                            		s_isPause = false;
						 ClearKey();		
                            	}
                            else if (s_selectedIndex == 1)
                            	{
                            		SetGameStatus(DGameStatus.GS_LOAD_MENU_RES);
									
									
                            	}
                            else if (s_selectedIndex == 2)
                            	{
                            		Quit();
									
									
                            	}   	
                            
                    }
                }
                else
                {

			
                        
              
                    shenJIIIIIIIActionPhase();
                    DrawActionPhase();
                }
                break;


	    case DGameStatus.GS_PLAY_AGAIN:
			if(s_ctrGameStatus == 1)
				{
					shenJIIIIIIIActionPhase();
				}
		  FILLSCREEN(COLOR_BLUE_WALL);

			changeSelect(3);


			s_g.setColor(COLOR_YELLOW_BG);
			s_g.setClip(0,0,PINGMUDDD.sssCHUANNN_WIDTH , PINGMUDDD.sssCHUANNN_HEIGHT);
			s_g.fillRoundRect( PINGMUDDD.sssCHUANNN_WIDTH - GS_PAUSE_YELLOW_BG_W >> 1 , PAUSE_MENU_Y - 3, GS_PAUSE_YELLOW_BG_W, GS_PAUSE_YELLOW_BG_H, MS_OPTION_BG_ARC_W, MS_OPTION_BG_ARC_W);

			
                    s_g.setColor(COLOR_BLUE_WALL);
		      s_g.setClip(0,0,PINGMUDDD.sssCHUANNN_WIDTH , PINGMUDDD.sssCHUANNN_HEIGHT);
		      s_g.fillRoundRect( PINGMUDDD.sssCHUANNN_WIDTH - GS_PAUSE_BLUE_BG_W >> 1 , PAUSE_MENU_Y, GS_PAUSE_BLUE_BG_W, GS_PAUSE_BLUE_BG_H, MS_OPTION_BG_ARC_W, MS_OPTION_BG_ARC_W);
			  drawImageString(s_g, GetString(DWorld.STR_ID_PAUSE_0),
        	           PINGMUDDD.sssCHUANNN_WIDTH >> 1, PAUSE_MENU_Y + GS_PAUSE_WORD_OFFSET_Y, FONT_HUGE, IMG_FONT_CENTER,
        	           s_selectedIndex == 0 ? 0 : 1);
			  drawImageString(s_g, GetString(DWorld.STR_ID_PAUSE_1),
        	           PINGMUDDD.sssCHUANNN_WIDTH >> 1, PAUSE_MENU_Y + GS_PAUSE_WORD_OFFSET_Y + GS_PAUSE_GAP, FONT_HUGE, IMG_FONT_CENTER,
        	           s_selectedIndex == 1 ? 0 : 1);
			  drawImageString(s_g, GetString(DWorld.STR_ID_PAUSE_2),
        	           PINGMUDDD.sssCHUANNN_WIDTH >> 1, PAUSE_MENU_Y + GS_PAUSE_WORD_OFFSET_Y + 2 * GS_PAUSE_GAP, FONT_HUGE, IMG_FONT_CENTER,
        	           s_selectedIndex == 2 ? 0 : 1);

                     DrawButtons(false ,false);		   
			if (IsKeyPressed(GK_A | GK_SOFT_RIGHT))
                    {
                            if (s_selectedIndex == 0)
                            	{

                                		SetGameStatus(DGameStatus.GS_ACTION);
						Jiaose.PlayAgainInit();
						Jiaose.s_gameOver = false;
						ClearKey();
						
                            	}
                            else if (s_selectedIndex == 1)
                                 SetGameStatus(DGameStatus.GS_LOAD_MENU_RES);
				else if (s_selectedIndex == 2)
                                 Quit();			
                    }
			break;

		case DGameStatus.GS_ENTER_NAME:
			limitCamera();



		  FILLSCREEN(COLOR_BLUE_WALL);

			       //FILLSCREEN(COLOR_YELLOW_BG);

				if(s_ctrGameStatus < SHOW_HIGH_SCORE_ZHEN)   
					{
						
						drawStringLines(GetString(DWorld.STR_ID_GOTHIGHSCORE), PINGMUDDD.sssCHUANNN_WIDTH >> 1, INGAME_HIGHSCORE_Y + 7,CHAR_H[FONT_MINI] + 3 , IMAGE_STR , IMG_FONT_CENTER);

						if(IsAnyKeyPressed())s_ctrGameStatus = SHOW_HIGH_SCORE_ZHEN;
						 break;
					}
			
				


				s_g.setColor(COLOR_YELLOW_BG);
				s_g.setClip(0,0,PINGMUDDD.sssCHUANNN_WIDTH , PINGMUDDD.sssCHUANNN_HEIGHT);
				
			       s_g.fillRoundRect( MS_OPTION_BG_X , INGAME_HIGHSCORE_Y, MS_OPTION_BG_W, MS_OPTION_BG_H, MS_OPTION_BG_ARC_W, MS_OPTION_BG_ARC_W);


				for(int i = 0 ; i < 28 ; i++)
					{
					        if(i == 26)
					        	{

								DrawArrow(MS_CHAR_OFFSET_X + (i % MS_CHAR_NUM_LINE) * MS_CHAR_STEP - 7, INGAME_HIGHSCORE_Y + MS_CHAR_OFFSET_Y + (i / MS_CHAR_NUM_LINE) * MS_CHAR_STEP , ARROW_TO_LEFT , false);
					        	 	continue;
					        	}
						if(i == 27)
					        	{
								DrawArrow(MS_CHAR_OFFSET_X + (i % MS_CHAR_NUM_LINE) * MS_CHAR_STEP - 7, INGAME_HIGHSCORE_Y + MS_CHAR_OFFSET_Y + (i / MS_CHAR_NUM_LINE) * MS_CHAR_STEP , ARROW_CONFIRM , false);
					        	 	break;
					        	}	
						 drawImageString(s_g, "" +(char) ('A' + i),
        	                            MS_CHAR_OFFSET_X + (i % MS_CHAR_NUM_LINE) * MS_CHAR_STEP, INGAME_HIGHSCORE_Y + MS_CHAR_OFFSET_Y + (i / MS_CHAR_NUM_LINE) * MS_CHAR_STEP, FONT_MEDIUM, IMG_FONT_CENTER,
        	           1);
					}
				if(s_namePos != 0 && s_name != null)
					{
						 String temp = new String(s_name , 0 , s_namePos);
                               		drawImageString(s_g, temp,
        	                           			 MS_CHAR_OFFSET_X , INGAME_HIGHSCORE_Y + MS_CHAR_OFFSET_Y  + 4* MS_CHAR_STEP + MS_NAME_OFFSET_Y, FONT_MEDIUM, IMG_FONT_LEFT,
        	           					1);
					}
				   

//indicator
                           DrawArrow(s_enterNameX - 7 , s_enterNameY , ARROW_INDICATOR , false);
                            //s_g.setClip(s_enterNameX - 7 , s_enterNameY , 13, 13);
                           // s_g.drawImage(s_menuArrow , s_enterNameX - 32 - 7, s_enterNameY - 31 , 0);
							 
				MoveIndicator(MS_CHAR_OFFSET_X , INGAME_HIGHSCORE_Y + MS_CHAR_OFFSET_Y , (MS_CHAR_NUM_LINE - 1) * MS_CHAR_STEP , MS_CHAR_STEP * 3);

				DrawButtons(false ,false);		   
				 if (IsKeyPressed(GK_A | GK_SOFT_RIGHT) )
					{
					      
					      int charoffset = CalChar(s_enterNameX , s_enterNameY , INGAME_HIGHSCORE_Y + MS_CHAR_OFFSET_Y);
						if(charoffset != NO_CHAR)
							{
							      if (charoffset == 27)
					                        {
					                            String tmp;
					                            if(s_namePos != 0)
					                            {
					                            	 tmp = new String(s_name, 0, s_namePos);
					                            	
					                            }

⌨️ 快捷键说明

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