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

📄 xiyou.java

📁 HappyTreeFriends手机游戏的源代码
💻 JAVA
📖 第 1 页 / 共 5 页
字号:
						 drawImageString(s_g, "" +(char) ('A' + i),
        	                            MS_CHAR_OFFSET_X + (i % MS_CHAR_NUM_LINE) * MS_CHAR_STEP, MS_OPTION_BG_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 , MS_OPTION_BG_Y + MS_CHAR_OFFSET_Y + 4* MS_CHAR_STEP + 10, FONT_MEDIUM, IMG_FONT_LEFT,
        	           					1);
					}
				   

//indicator

                             s_g.setClip(s_enterNameX - 7 , s_enterNameY , 13, 13);
                            s_g.drawImage(s_menuArrow , s_enterNameX - 29 - 7, s_enterNameY - 36 , 0);
						    
							 
				if (IsKeyPressed(GK_RIGHT) || IsKeyHold(GK_RIGHT) )	
					{
						s_enterNameX++;
					}
				else if(IsKeyPressed(GK_LEFT )|| IsKeyHold(GK_LEFT) )	
					{
						s_enterNameX--;
					}
				else if(IsKeyPressed(GK_UP )|| IsKeyHold(GK_UP) )	
					{
						s_enterNameY--;
					}
				else if(IsKeyPressed(GK_DOWN)|| IsKeyHold(GK_DOWN) )	
					{
						s_enterNameY++;
					}
				else if (IsKeyPressed(GK_A | GK_SOFT_RIGHT) )
					{
					      
					      int charoffset = CalChar(s_enterNameX , s_enterNameY , MS_OPTION_BG_Y + MS_CHAR_OFFSET_Y );
						if(charoffset != NO_CHAR)
							{
							      if (charoffset == 27 || s_namePos == NAME_LEN)
					                        {
					                            if(s_namePos != 0)
					                            {
					                            	String tmp = new String(s_name, 0, s_namePos);
					                            	InsertName(tmp, Rand(100, 1000));
					                            	SaveOrLoad(true);
					                            }
					                            SetMenuStatus(MS_HIGHSCORE);
					                        }
								  else if(charoffset == 26)
							      	{
							      	       if(s_namePos > 0)s_namePos--;
							      		s_name[s_namePos] = 0;
									
							      	}
								  else
								 {
								  	 s_name[s_namePos] = (byte) ('A'+charoffset);
									 s_namePos++;
								  }
								
							}
							
					}	
				else if (IsKeyPressed(GK_SOFT_LEFT) )
					{
						SetMenuStatus(MS_MAINMENU);
					}	
				break;
			case MS_SOUND_ON_OFF:
				break;
		}
}

  public static void SetMenuStatus(int newMenuStatus)
{
	s_menuStatus = newMenuStatus;
	s_selectedIndex = 0;
	s_ctrMenu = 0;
	s_beginIndex = 0;

		
	
	if(newMenuStatus == MS_ENTER_NAME)
		{
			InitHighCursor();
		}
	if(newMenuStatus == MS_MAINMENU)
		{
			s_selectedIndex = s_lastMainMenuSelect ;
			s_beginIndex = s_lastBeginIndex;
		}
	if(newMenuStatus == MS_HIGHSCORE)
		{
			s_enterNameX = RESET_X + (RESET_W >> 1);
			s_enterNameY = RESET_Y+ (RESET_H >> 1)  - 7;			
		}
	if(newMenuStatus == MS_ABOUT)
		{
			s_scrollY = MS_ABOUT_CLIP_TOP + (MS_ABOUT_CLIP_H >> 1);			
		}
	if(newMenuStatus == MS_HELP)
		{
			s_scrollY = MS_ABOUT_CLIP_TOP ;			
		}
}

public static void FILLSCREEN(int color)
{
	s_g.setClip(PINGMUDDD.sssCHUANNN_LEFT, PINGMUDDD.sssCHUANNN_TOP , PINGMUDDD.sssCHUANNN_WIDTH , PINGMUDDD.sssCHUANNN_HEIGHT);
	s_g.setColor(color);
	s_g.fillRect(PINGMUDDD.sssCHUANNN_LEFT, PINGMUDDD.sssCHUANNN_TOP , PINGMUDDD.sssCHUANNN_WIDTH , PINGMUDDD.sssCHUANNN_HEIGHT);
}


    /**
     * draw the select list background in the mainmenu and some other used the button image
     * @param g Graphics
     * @param x int
     * @param y int
     * @param totalLines int
     * @param selectId int
     * @param txtStartId int
     * @param wordMove int
     */
    public static void drawSelectListBg(Graphics g, int x, int y, int totalLines, int selectId ,int txtStartId, int wordMove)
    {
    	
        for (int i = s_beginIndex ; i < s_beginIndex + MAINMENU_LEN_SHOW ; i++)
        {
            g.setClip(x, y, MENU_MAIN_CENTER_W, MENU_BAR_SELECT_H);
	     drawImageString(g, GetString(txtStartId + i ),
        	           x+wordMove, y + 5, FONT_HUGE, IMG_FONT_CENTER,
        	            i  == selectId ?1: 0);
        
            y += CHAR_H[0] + 2;
        }   
    }

    public static final int NO_CHAR = -1;
    public static int CalChar(int x , int y , int RELATIVE_Y)
    	{
    		
		int tmp =  ((y + 7 - RELATIVE_Y) / MS_CHAR_STEP) * MS_CHAR_NUM_LINE + ((x + 7 - MS_CHAR_OFFSET_X) / MS_CHAR_STEP) % MS_CHAR_NUM_LINE;
		return tmp < 28 && tmp >=0 ? tmp : NO_CHAR;
    	}


    //init highscore cursor
    public static void InitHighCursor()
    	{
    		s_namePos = 0;
		s_name = null;
		s_name = new byte[NAME_LEN];
		s_enterNameX = MS_CHAR_OFFSET_X;
              s_enterNameY = INGAME_HIGHSCORE_Y + MS_CHAR_OFFSET_Y;
    	}


   //for move indicator
   public static void MoveIndicator(int limitX , int limitY , int limitW , int limitH)
   	{
   /*	
   		if (IsKeyPressed(GK_RIGHT) || IsKeyHold(GK_RIGHT) )	
		{
			s_enterNameX+= MS_CHAR_STEP;
		}
		else if(IsKeyPressed(GK_LEFT )|| IsKeyHold(GK_LEFT) )	
		{
			s_enterNameX-= MS_CHAR_STEP;
		}
		else if(IsKeyPressed(GK_UP )|| IsKeyHold(GK_UP) )	
		{
			s_enterNameY-= MS_CHAR_STEP;
		}
		else if(IsKeyPressed(GK_DOWN)|| IsKeyHold(GK_DOWN) )	
		{
			s_enterNameY+= MS_CHAR_STEP;
		}
//*/	
             
      		if (IsKeyPressed(GK_RIGHT) )	
		{
		       if(s_enterNameX>= limitX + limitW)
		       	{
		       		s_enterNameX = limitX;
		       	}
			else
				{
					s_enterNameX+= MS_CHAR_STEP;
				}
			
		}
		else if(IsKeyPressed(GK_LEFT ))	
		{
			 if(s_enterNameX <= limitX)
		       	{
		       		s_enterNameX =  limitX + limitW;
		       	}
			else
				{
					s_enterNameX-= MS_CHAR_STEP;
				}
			
		}
		else if(IsKeyPressed(GK_UP ) )	
		{
			if(s_enterNameY <= limitY)
				{
					s_enterNameY =  limitY + limitH;
				}
			else
				{
					s_enterNameY-= MS_CHAR_STEP;
				}
				
			
		}
		else if(IsKeyPressed(GK_DOWN))	
		{
			if(s_enterNameY >= limitY + limitH)
				{
					s_enterNameY =  limitY;
				}
			else
				{
					s_enterNameY+= MS_CHAR_STEP;
				}
				
			
		}
   	}


  // draw buttons
  public static void DrawButtons(boolean haveBack , boolean haveNext)
  	{


              if(haveBack)
  			{
  				s_g.setClip(2, PINGMUDDD.sssCHUANNN_HEIGHT - 15, 13 , 13);
				s_g.drawImage(s_menuArrow , 2, PINGMUDDD.sssCHUANNN_HEIGHT - 15 , 0);
  			}

  	}

  //draw text

  public static void DrawTxtButton()
  	{
  		drawImageString(s_g, GetString(DWorld.STR_ID_SKIP),
        	           PINGMUDDD.sssCHUANNN_WIDTH - 5, PINGMUDDD.sssCHUANNN_HEIGHT - CHAR_H[0] - 1, FONT_HUGE, IMG_FONT_RIGHT,
        	           0);
  	}

  //draw general bg
  public static void DrawMenuBg(String str)
  	{

				FILLSCREEN(COLOR_BLUE_WALL);
				s_g.setColor(COLOR_YELLOW_BG);
				s_g.fillRoundRect( MS_OPTION_BG_X , MS_OPTION_BG_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);
//text about bg				
				s_g.fillRoundRect( PINGMUDDD.sssCHUANNN_WIDTH - MS_OPTION_TITLE_W >> 1 , MS_OPTION_BG_Y + MS_TITLE_BG_OFFSET_Y ,MS_OPTION_TITLE_W, MS_OPTION_TITLE_H, 10, 10);
                            drawImageString(s_g, str,
        	           PINGMUDDD.sssCHUANNN_WIDTH >> 1, MS_OPTION_BG_Y + MS_TITLE_BG_OFFSET_Y + MS_TITLE_OFFSET_Y, FONT_HUGE, IMG_FONT_CENTER,
        	           0);


  		
  	}

 // menu inter face arrow
  public static final int ARROW_TO_LEFT = 0;
  public static  final int  ARROW_TO_DOWN = 1;
  public static final int ARROW_TO_UP = 2;
  public static final int ARROW_INDICATOR = 3;
  public static final int ARROW_CONFIRM = 4;  

  public static int s_arrowTick = 0 ;
  public static void DrawArrow(int x , int y , int arrowID , boolean isFlip)
  	{

  		if(arrowID == ARROW_TO_LEFT)
  			{
 
				s_g.setClip(x + s_arrowTick , y , 7 , 7);
				s_g.drawImage(s_menuArrow , x + s_arrowTick - 9 , y - 14, 0);
		      }
		else if(arrowID == ARROW_TO_DOWN)
			{
				
			}
		else if(arrowID == ARROW_TO_UP)
			{
				
			}
		else if(arrowID == ARROW_INDICATOR)
			{		
				s_g.setClip(x + s_arrowTick , y , 9 , 9);
				s_g.drawImage(s_menuArrow , x + s_arrowTick , y -14 , 0);

			}
		else if(arrowID == ARROW_CONFIRM)
			{		
				s_g.setClip(x + s_arrowTick , y , 11 , 11);
				s_g.drawImage(s_menuArrow , x + s_arrowTick , y -23 , 0);

			}		
		if(isFlip)
			{
				s_arrowTick = s_arrowTick < 2 ? ++s_arrowTick : 0;
			}
  	}


  //drawGameLoad

  public static void DrawResLoad(int frameLen)
  	{


                if(s_gameStatus == 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 / frameLen, 8);
				  s_g.setColor(COLOR_BLUE_WALL);	
				  s_g.drawRect(PINGMUDDD.PINGMUKUAN  - SPLASH_LOADING_WIDTH >> 1, PINGMUDDD.PINGMUGAO - 30, SPLASH_LOADING_WIDTH, 8);
		  		
                	}
		else
			{
				 FILLSCREEN(COLOR_BLUE_WALL);

		  		
		                s_g.setColor(0xFFFFFF);
		                s_g.fillRect(0, PINGMUDDD.PINGMUGAO - 20, s_ctrGameStatus * PINGMUDDD.PINGMUKUAN / frameLen, 1);

				
				  drawImageString(s_g, GetString(DWorld.STR_ID_LOADING),
		        	           (PINGMUDDD.PINGMUKUAN >> 1), PINGMUDDD.PINGMUGAO  - 40, FONT_HUGE, IMG_FONT_CENTER,
		        	           0);
			}
		  
  	}


	

      public static final int NAME_NUM = 5; //the total record num;
      public static String[] s_names = new String[NAME_NUM];
      public static int[] s_scores = new int[NAME_NUM];

      public static final int DATA_LEN = 1 + NAME_LEN + 4;	// 1  is  for level ; NAME_LEN is the name; 4 is for score


	static void SaveOrLoad(boolean save)
    {
        RecordStore rs;
        byte[] buf = new byte[(DATA_LEN) * NAME_NUM + 1];
        try
        {
            rs = RecordStore.openRecordStore("htfsav", true);
            if (save)
            {
                SaveStringsToBytes(buf , s_names);
		  SaveIntsToBytes(buf , s_scores);
		  buf[(DATA_LEN) * NAME_NUM] = (byte)Jiaose.s_levelSaved;
				
                if (rs.getNumRecords() == 0)
                    rs.addRecord(buf, 0, buf.length);
                else
                    rs.setRecord(1, buf, 0, buf.length);
            }
            else
            {
                if (rs.getNumRecords() > 0)
                {
                    rs.getRecord(1, buf, 0);
                    GetStringsFromBytes(buf , s_names);
                    GetIntsFromToBytes(buf , s_scores);
		      Jiaose.s_levelSaved = buf[(DATA_LEN) * NAME_NUM] ;
					
                    
                }
		  else
		  	{
		  	       for(int i = 0;i < NAME_NUM ; i++ )
		  	       	{
		  	       		s_names[i] = "";
						s_scores[i] = 0;
		  	       	}
		  		SaveStringsToBytes(buf , s_names);
		              SaveIntsToBytes(buf , s_scores);
				buf[(DATA_LEN) * NAME_NUM] = 0;	  
				rs.addRecord(buf, 0, buf.length);	  
		  	}
            }
            rs.closeRecordStore();
        }
        catch (Exception e)
        {
        }
    }    


    public static void SaveStringsToBytes(byte[] byteBuf , String[] string)
    	{
    	       int arraylen = string.length;
		for(int i = 0 ; i < arraylen ; i++)
			{
			              byteBuf[i * (DATA_LEN)] = (byte)string[i].length();
   					System.arraycopy(  string[i].getBytes() , 0 ,byteBuf , i * (DATA_LEN) + 1 , string[i].length() );			
			}
 
    	}

	public static void SaveIntsToBytes(byte[] byteBuf , int[] score)
	{
		int arraylen = score.length;
		for(int i = 0 ; i < arraylen ; i++)	   
		{
		       byte[] temp = new byte[4];
			temp[0] = (byte)(score[i] & 0xFF);
			temp[1] = (byte)((score[i] >> 8)& 0xFF);
			temp[2] = (byte)((score[i] >> 16)& 0xFF); 
			temp[3] = (byte)((score[i] >> 24)& 0xFF); 			
			System.arraycop

⌨️ 快捷键说明

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