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

📄 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 javax.microedition.media.*;

public class Xiyou
    extends FullCanvas
    implements Runnable
{


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

    

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


	

    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 INGAME_HIGHSCORE_Y = 45;
   //for pause menu
   public static final int PAUSE_MENU_Y = 60;	 


     
	   //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;




    
    protected void paint(Graphics g)
    {
  
    try
    {
	

        s_g = g;
        shenJIIIIIIIKey();


        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_PRELUDE_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_LOAD_PRELUDE_RES:
		  FILLSCREEN(0XFFFFFF);
			  
		  s_g.setClip(0 , 0 , PINGMUDDD.PINGMUKUAN, PINGMUDDD.PINGMUGAO);

		  s_g.drawImage(s_splash ,  PINGMUDDD.PINGMUKUAN >> 1 ,  PINGMUDDD.PINGMUGAO - 60>> 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_TRAILER_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);
		  	
                InitializePrelude();	
		  break;	

            case DGameStatus.GS_PRELUDE:
                if(s_ctrGameStatus == 1)
                	{
                		s_splash = null;
				PlaySound(DWorld.SOUND_ID_TITLE);		
                	}
		  	
		  shenJIIIIIIIActionPhase();
                DrawActionPhase();
		  break;		

	     case DGameStatus.GS_LOAD_END_RES:
		  DrawResLoad(LOADING_END_RES_DURANTION);
                InitEnd();			
		  break;	  

	     case DGameStatus.GS_END_GAME:

		  if(s_ctrGameStatus == 1)
		  	{
		  		s_scrollY = PINGMUDDD.sssCHUANNN_HEIGHT;
			 	PlaySound(DWorld.SOUND_ID_TITLE);
		  	}
		  s_g.setClip(0 , 0 , PINGMUDDD.PINGMUKUAN, PINGMUDDD.PINGMUGAO);
		  s_g.drawImage(s_splash ,  0 , 0 , 0);
		  shenJIIIIIIIActionPhase();
                Jiaose.DrawJiaosess(s_g, s_jingtouX, s_jingtouY);	


             
			{
				if(s_scrollY != 1000)
					{
						int lenCredit = drawStringLines(GetString(DWorld.STR_ID_ABOUT) , PINGMUDDD.sssCHUANNN_WIDTH >> 1  , s_scrollY , CHAR_H[FONT_HUGE] + 3 , IMAGE_STR , IMG_FONT_CENTER);

				 		s_scrollY -= 2;
				 		if(s_scrollY + lenCredit * (CHAR_H[FONT_HUGE] + 3)< MS_ABOUT_CLIP_TOP) 
					 	{
					 	       //for stop
						 	s_scrollY = 1000 ;
		//					s_scrollY = MS_ABOUT_CLIP_TOP + MS_ABOUT_CLIP_H ;
					 	}
					}
				
			}


			DrawTxtButton();

			if(s_ctrGameStatus >= Jiaose.END_GAME_DURATION || 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:

		  	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)
                {
			DrawActionPhase();
			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();
				}
			DrawActionPhase();
			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();



			       DrawActionPhase();
			       //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);

⌨️ 快捷键说明

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