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

📄 xiyou.java

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


import javax.microedition.rms.RecordStore;

import javax.microedition.media.*;

public class Xiyou
    extends Canvas
    implements Runnable
            , CommandListener
{


    public Xiyou()
    {
        setCommandListener(this);
    }
 
    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;

	s_changeCommand = 1;
		
    }

    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 = 40;	
   public static final int INGAME_HIGHSCORE_Y = 20;   


     
	   //splash 
    public static final int SPLASH_OFFSET = 16;
    public static final int MS_NAME_OFFSET_Y = 10;    


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

   static int s_changeCommand = 0;



    
    protected void paint(Graphics g)
    {
  
    try
    {
        // Ignore paint body before and after command change
        // Avoiding crash.
        if(s_changeCommand > 0)
        {
            if (s_changeCommand == 2)
                changeCommand();
            else if (s_changeCommand == 3)
                s_changeCommand = -3;

            s_changeCommand++;
            return;
        }

	

        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 - 20>> 1 , Graphics.VCENTER | Graphics.HCENTER);

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



                	}
		  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)   
					{
						s_g.setColor(COLOR_YELLOW_BG);
						s_g.setClip(0,0,PINGMUDDD.sssCHUANNN_WIDTH, PINGMUDDD.sssCHUANNN_HEIGHT);
			       		s_g.fillRoundRect( PINGMUDDD.sssCHUANNN_WIDTH - GS_ENTERNAME_GET_W >> 1 , INGAME_HIGHSCORE_Y, GS_ENTERNAME_GET_W, GS_ENTERNAME_GET_H, MS_OPTION_BG_ARC_W, MS_OPTION_BG_ARC_W);
						drawImageString(s_g, GetString(DWorld.STR_ID_GOTHIGHSCORE),
        	           PINGMUDDD.sssCHUANNN_WIDTH >> 1, INGAME_HIGHSCORE_Y + 7, FONT_MEDIUM, IMG_FONT_CENTER,
        	           1);
						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);


				s_g.setColor(COLOR_BLUE_WALL);	
				s_g.setClip(0,0,PINGMUDDD.sssCHUANNN_WIDTH , PINGMUDDD.sssCHUANNN_HEIGHT);
				s_g.fillRoundRect( PINGMUDDD.sssCHUANNN_WIDTH - GS_ENTERNAME_TITLE_W >> 1 , INGAME_HIGHSCORE_Y + 5 ,GS_ENTERNAME_TITLE_W, GS_ENTERNAME_TITLE_H, 10, 10);
                            drawImageString(s_g, GetString(DWorld.STR_ID_ENTER_NAME),
        	           PINGMUDDD.sssCHUANNN_WIDTH >> 1, INGAME_HIGHSCORE_Y + 7, FONT_HUGE, IMG_FONT_CENTER,
        	           0);
				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)

⌨️ 快捷键说明

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