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

📄 tetrisgame.java

📁 CreatLog luke 俄罗斯方块
💻 JAVA
📖 第 1 页 / 共 5 页
字号:
  int cnt ; 
  int nx = x * 3 + x_ofset ; 
  int ny = DISPLAY_HEIGHT - y_ofset - y * 3 ; 
  //System.out.println("   nx = "+nx+", ny = "+ny);
  g.setColor(lineColor);
  for ( cnt = 0 ; cnt < 2 ; cnt ++ ) 
  { 
    g.drawLine ( ( int ) ( nx + cnt ) , ( int ) ny , ( int ) ( nx + cnt ) , ( int ) ny ) ; 
    g.drawLine ( ( int ) ( nx + squareSize ) , ( int ) ( ny + cnt ) , ( int ) ( nx + squareSize ) , ( int ) ( ny + cnt ) ) ; 
    g.drawLine ( ( int ) ( nx + squareSize - cnt ) , ( int ) ( ny + squareSize ) , ( int ) ( nx + squareSize - cnt ) , ( int ) ( ny + squareSize ) ) ; 
    g.drawLine ( ( int ) ( nx ) , ( int ) ( ny + squareSize - cnt ) , ( int ) ( nx ) , ( int ) ( ny + squareSize - cnt ) ) ; 
  } 
} 


void 
TEDrawSplashBlock ( int cnt1 , 
int cnt2 ) 
{ 
    //System.out.println("TEDrawSplashBlock");
  int chCt ; 
  /* uns */ int count ; 
  final /* uns */ int splash_left_border = 128 ; 
  int square_ofset = 0 ; 
  

  final int [] letterOfset /* expr */ = { 6  , 6  , 6  , 6  , 2  , 6  } ; 
  int letterOfsetSum = 1 ; 
  int tempLine ; 
  

  for ( chCt = 0 ; chCt < cnt1 ; chCt ++ ) 
  { 
    letterOfsetSum += letterOfset [ chCt ] ; 
  } 
  
  for ( chCt = 0 ; chCt < 4 ; chCt ++ ) 
  { 
    tempLine = g_Shapes [ ( g_screen [ cnt1 ] ) . shape [ cnt2 ] ] [ ( g_screen [ cnt1 ] ) . rotation [ cnt2 ] ] [ chCt ] ; 
    tempLine <<= - ( g_screen [ cnt1 ] ) . x_pos [ cnt2 ] ; 
    
    for ( square_ofset = 0 , count = splash_left_border ; count > 0 ; square_ofset ++ , count >>= 1 ) 
    { 
      if ( ( count & tempLine ) > 0 ) 
      { 
        if ( ( g_screen [ cnt1 ] . y_pos [ cnt2 ] - ( TEGlobal_p . splash_cnt ) ) > ( g_screen [ cnt1 ] . y_stop [ cnt2 ] ) ) 
        { 
          TEDrawSplashSquare ( ( int ) ( letterOfsetSum + square_ofset ) , ( int ) ( ( g_screen [ cnt1 ] . y_pos [ cnt2 ] ) - ( TEGlobal_p . splash_cnt ) - chCt ) ) ; 
        } 
        else 
        { 
          TEDrawSplashSquare ( ( int ) ( letterOfsetSum + square_ofset ) , ( ( int ) ( g_screen [ cnt1 ] . y_stop [ cnt2 ] - chCt ) ) ) ; 
        } 
      } 
    } 
  } 
  if ( TEGlobal_p . splash_cnt >= 60 ) 
  { 
      g.setColor(lineColor);
    g.drawString ( "R" , DISPLAY_WIDTH - 7 , ( DISPLAY_HEIGHT - 20 - 8 * 4 + 5 ) , Graphics.TOP|Graphics.LEFT ) ; 
    g.drawArc ( ( int ) ( DISPLAY_WIDTH - 9 ) , ( int ) ( ( DISPLAY_HEIGHT - 20 - 8 * 4 + 5 ) - 2 ) , 
    ( int ) ( GAGetCurrfontWidth ( ) + 3 ) , ( int ) ( GAGetCurrfontWidth ( ) + 3 ) , 0 , 180 ) ; 
  } 
} 



void 
TETickScreen ( ) 
{ 
//System.out.println("TETickScreen");
  
  final int nbrOfLetters = 6 ; 
  
  int cnt1 ; 
  int cnt2 ; 
  
  ; 
  

  TEFillRect ( 0 , 0 , DISPLAY_WIDTH , DISPLAY_HEIGHT - 7 , GACOLOR_WHITE ) ; 
  
  for ( cnt1 = 0 ; cnt1 < nbrOfLetters ; cnt1 ++ ) 
  { 
    for ( cnt2 = 0 ; cnt2 < g_blocks [ cnt1 ] ; cnt2 ++ ) 
    { 
	//System.out.println("cnt1 = "+cnt1+". cnt2 = "+cnt2);
      if ( ( g_screen [ cnt1 ] . y_pos [ cnt2 ] - TEGlobal_p . splash_cnt ) < 16 ) 
      { 
        TEDrawSplashBlock ( cnt1 , cnt2 ) ; 
      } 
    } 
  } 

  if ( TEGlobal_p . splash_cnt > 80 ) 
  
  { 
    if ( TEGlobal_p . splash_cnt != 100 ) 
    { 
      GAKillTimer ( GATimer1 ) ; 
      TEGlobal_p . splash_cnt = 0 ; 
    } 
  } 
  ; 
} 






void 
IniTEMenu ( ) 
{ 
//System.out.println("IniTEMenu");
  ; 
  
  TEGlobal_p . mwait = false ; 
  
  TEGlobal_p . splash_cnt = 0 ; 
  TEGlobal_p . infoShown = false ; 
  
  TEGlobal_p . mchMenu = 0 ; 
  TEGlobal_p . mchSelection = 0 ; 
  TEGlobal_p . state = TMenuState ; 
  TETickScreen ( ) ; 
  
  GASetCurrColour ( GACOLOR_BLACK ) ; 
  GASetFillColour ( GACOLOR_BLACK ) ; 
  GASetBackgroundColour ( GACOLOR_WHITE ) ; 
  g.setColor(clearColor);
  g.fillRect ( 0 , 0 , DISPLAY_WIDTH , DISPLAY_HEIGHT ) ; 
  
  ; 

} 







void 
TerminateGameMain ( ) 
{ 
    //System.out.println("TerminateGameMain");
  ; 
  
  if ( TEGlobal_p != null ) 
  { 
    if ( !TEGlobal_p . bGameOver ) 
    { 
      TE_SaveData_p . chInfo = 2 ; 
      MenuObject . AllowStartMode = GAM_START_NEW | GAM_START_RESUME ; 
      MenuObject . SelStartMode = GAM_START_RESUME ; 
    } 
    else 
    { 
      TE_SaveData_p . chInfo = 1 ; 
      MenuObject . AllowStartMode = GAM_START_NEW ; 
      MenuObject . SelStartMode = GAM_START_NEW ; 
    } 
    TE_SaveData_p . sgSaveGame . BackGroundPicSelection = TEGlobal_p . BackGroundPicSelection ; 
    

    TEPostEE ( ) ; 
    GASaveNVData ( TE_SaveData_p ) ; 
  } 
  
  TetrisKillGame ( ) ; 
  
  ; 
} 




boolean 
TEMenu ( GAEvent event ) 
{ 
//System.out.println("TEMenu");
  
  ; 
  
  switch ( event . type ) 
  { 
    case GATimerEvent : 
    if ( TEGlobal_p . NormalSplash ) 
    { 
      TEGlobal_p . splash_cnt ++ ; 
      TETickScreen ( ) ; 
    } 
    else 
    { 
      TEEasterSplash ( ) ; 
    } 
    break ; 
    
    case GAKeyboardEvent : 
    if ( event . press ) 
    { 
      
      switch ( event . key ) 
      { 
        case KeyNo : 
        if ( TEGlobal_p . mchMenu == 3 ) 
        { 
          IniTEMenu ( ) ; 
          GASetTimer ( GATimer1 , 100 ) ; 
        } 
        else 
        { 
          TEGlobal_p . state = TTerminateState ; 
        } 
        break ; 
        
        case KeyThree : 
        if ( TEGlobal_p . mchMenu == 0 ) 
        { 
          TEGlobal_p . mchMenu = 1 ; 
        } 
        else 
        { 
          TEGlobal_p . mchMenu = 0 ; 
        } 
        break ; 
        
        case KeyNine : 
        if ( TEGlobal_p . mchMenu == 1 ) 
        { 
          TEGlobal_p . mchMenu = 2 ; 
        } 
        else 
        { 
          TEGlobal_p . mchMenu = 0 ; 
        } 
        break ; 
        
        case KeySeven : 
        if ( TEGlobal_p . mchMenu == 2 ) 
        { 
          TEGlobal_p . mchMenu = 3 ; 
          TEInitEasterSplash ( ) ; 
          TEGlobal_p . NormalSplash = false ; 
        } 
        else 
        { 
          TEGlobal_p . mchMenu = 0 ; 
        } 
        break ; 
        
        default : 
        
        GAKillTimer ( GATimerAll ) ; 
        TEGlobal_p . splash_cnt = 100 ; 
        if ( ( MenuObject . SelStartMode & GAM_START_RESUME ) != 0 ) 
        { 
          IniTEGame ( true ) ; 
        } 
        else 
        { 
          IniTEGame ( false ) ; 
        } 
        TERedraw ( ) ; 
        break ; 
      
      } 
    } 
    break ; 
    
    default : 
    TEGlobal_p . state = TTerminateState ; 
  } 
  
  ; 
  return ( true ) ; 
} 


void 
TEPrepEE ( ) 
{ 
    //System.out.println("TetrisGame.TEPrepEE()");
  ; 
  ; 
  ; 
} 



void 
InitiateGameMain ( ) 
{ 
  //System.out.println("TetrisGame.InitiateGameMain()");
  int x ; 
  
  ; 
  
  GASoundEffectPlay ( "tetris_start" ) ; 
  
  TEGlobal_p = new TEGlobals_t ();
  TE_SaveData_p = new TE_EEArray_t ();
  TE_HighScoreList_p = new GAPI_HighscoreList_t () ;

  //  TEGlobal_p = ( TEGlobals_t ) GAAlloc ( sizeof ( TEGlobals_t ) ) ; 
  //TE_SaveData_p = ( TE_EEArray_t ) GAAlloc ( sizeof ( TE_EEArray_t ) ) ; 
  //TE_HighScoreList_p = ( GAPI_HighscoreList_t ) GAAlloc ( sizeof ( GAPI_HighscoreList_t ) ) ; 
  

  TEGlobal_p . state = TStartState ; 
  
  TEGlobal_p . GameState = TGameStartInit ; 
  
  TEGlobal_p . bTerminate = false ; 
  
  TEGlobal_p . chBlockCnt = 0 ; 
  
  TEGlobal_p . bGameOver = true ; 
  
  GAHighScoreListInit ( TE_HighScoreList_p , TE_SaveData_p . HighScoreListEntries ) ; 
  



  TE_HighScoreList_p . DifficultType = false ; 
  

  GALoadNVData ( TE_SaveData_p ) ; 
  

  if ( TE_SaveData_p . chInfo != 1 && TE_SaveData_p . chInfo != 2 ) 
  { 
    GAHighScoreListClear ( TE_HighScoreList_p , TE_SaveData_p . HighScoreListEntries ) ; 
  } 
  
  GAHighScoreEntryCheck ( TE_HighScoreList_p , TE_SaveData_p . HighScoreListEntries ) ; 
  

  TEPrepEE ( ) ; 
  
  TEGlobal_p . NormalSplash = true ; 
  
  TEGlobal_p . Yoffset = 0 ; 
  

  TEGlobal_p . Yoffset = - 5 ; 
  
  TEGlobal_p . BlockSize = ( ( DISPLAY_HEIGHT - TEGlobal_p . Yoffset ) - 2 ) / 16 ; 
  
  x = TEGlobal_p . BlockSize * 8 ; 
  
  TEGlobal_p . LINE_POS = ( DISPLAY_WIDTH - x ) / 2 + 20 ; 
  
  if ( TEGlobal_p . LINE_POS < ( 7 * GAGetCurrfontWidth ( ) ) ) 
  { 
    TEGlobal_p . LINE_POS = 7 * GAGetCurrfontWidth ( ) + 20 ; 
  } 
  
  TEGlobal_p . LINE_POS_DY = TEGlobal_p . LINE_POS + x + 1 ; 
  

  TEGlobal_p . BackGroundPicSelection = TE_SaveData_p . sgSaveGame . BackGroundPicSelection ; 
  

  TE_SaveData_p . SoundOn = false ; 
  if ( ( MenuObject . SelOptions & GAM_OPT_SOUND ) == GAM_OPT_SOUND ) 
  { 
    TE_SaveData_p . SoundOn = true ; 
  } 
  

  GASetTimer ( GATimer1 , 100 ) ; 
  ; 
} 



boolean 
TetrisGetSetting ( ) 
{ 
//System.out.println("TetrisGetSetting");
  boolean Result = true ; 
  TE_EEArray_t SaveData = new TE_EEArray_t () ; 
  /* uns */ int t ; 
  
  ; 
  
  MenuObject = GAGetMenuSetting ( ) ; 
  
  GALoadNVData ( SaveData ) ; 
  
  if ( SaveData . chInfo == 2 ) 
  { 
    
    MenuObject . AllowStartMode = GAM_START_NEW | GAM_START_RESUME ; 
    MenuObject . SelStartMode = GAM_START_RESUME ; 
  } 
  else 
  { 
    MenuObject . AllowStartMode = GAM_START_NEW ; 
    MenuObject . SelStartMode = GAM_START_NEW ; 
  } 
  
  MenuObject . AllowOpponents = GAM_OPP_PHONE ; 
  MenuObject . SelOpponents = GAM_OPP_PHONE ; 
  
  MenuObject . AllowSingleLevels = GAM_LEVEL_EASY | GAM_LEVEL_MEDIUM | GAM_LEVEL_HARD ; 
  MenuObject . SelLevel = GAM_LEVEL_EASY ; 
  
  MenuObject . AllowOptions = GAM_OPT_NONE ; 
  MenuObject . SelOptions = GAM_OPT_NONE ; 
  
  if ( SaveData . SoundOn ) 
  { 
    MenuObject . SelOptions |= GAM_OPT_SOUND ; 
  } 
  

  t = SaveData . sgSaveGame . BackGroundPicSelection & ( GAM_OPT_BACKGROUND_PIC_NONE | GAM_OPT_BACKGROUND_PIC_TILE | GAM_OPT_BACKGROUND_PIC_CENTER ) ; 
  
  if ( t == 0 ) 
  { 
    t = GAM_OPT_BACKGROUND_PIC_NONE ; 
  } 
  
  if ( GAGetImageId ( "bkg_pic" ) < 1 ) 
  { 
    SaveData . sgSaveGame . BackGroundPicSelection = 
    SaveData . sgSaveGame . BackGroundPicSelection & ( GAM_OPT_ALL - ( GAM_OPT_BACKGROUND_PIC_TILE | GAM_OPT_BACKGROUND_PIC_CENTER ) ) ; 
    t = GAM_OPT_BACKGROUND_PIC_NONE ; 
  } 
  
  MenuObject . SelOptions |= t ; 
  
  MenuObject . AllowOptions = GAM_OPT_SOUND ; 
  MenuObject . AllowOptions |= GAM_OPT_BACKGROUND_PIC_NONE ; 
  MenuObject . AllowOptions |= GAM_OPT_BACKGROUND_PIC_TILE ; 
  MenuObject . AllowOptions |= GAM_OPT_BACKGROUND_PIC_CENTER ; 
  MenuObject . AllowOptions |= GAM_OPT_BACKGROUND_PIC_FILE ; 
  
  MenuObject . AllowHighScore = GAHighScoreCheckMenues ( SaveData . HighScoreListEntries ) ; 
  
  ; 
  return ( Result ) ; 
} 



public boolean 
gameMain ( GAEvent event ) 
{ 
  //System.out.println("TetrisGame.gameMain(): received new event of type "+event.type.toString());
  boolean Result = true ; 
  
  switch ( event . type ) 
  { 
    case GAStartEvent : 
    g_screen[0] = new Letter();
    g_screen[1] = new Letter();
    g_screen[2] = new Letter();
    g_screen[3] = new Letter();
    g_screen[4] = new Letter();
    g_screen[5] = new Letter();
    InitiateGameMain ( ) ; 
    break ; 
    
    case GARedrawEvent : 
    
    if ( TEGlobal_p != null ) 
    { 
      if ( ( TEGlobal_p . GameState == TGamePaused ) || ( TEGlobal_p . GameState == TGameRunning ) || ( TEGlobal_p . GameState == TGameOverWait ) ) 
      { 
        TERedraw ( ) ; 
      } 
    } 
    else if ( TE_HighScoreList_p != null && TE_SaveData_p != null ) 
    { 
      g.setColor(clearColor);
      g.fillRect ( 0 , 0 , DISPLAY_WIDTH , DISPLAY_HEIGHT ) ; 
      GAHighScoreListShow ( TE_HighScoreList_p , TE_SaveData_p . HighScoreListEntries ) ; 
    } 
    break ; 
    
    case GAMenuSettingsEvent : 
    TetrisGetSetting ( ) ; 
    break ; 
    
    case GAHighScoreEvent : 
    //System.out.println("TetrisGame.gameMain received a new HIGHSCORE event.");
    if ( TE_HighScoreList_p == null && TE_SaveData_p == null ) 
    { 

	TE_SaveData_p = new TE_EEArray_t ();
	TE_HighScoreList_p = new GAPI_HighscoreList_t () ;

	//TE_HighScoreList_p = ( GAPI_HighscoreList_t ) GAAlloc ( sizeof ( GAPI_HighscoreList_t ) ) ; 
	//TE_SaveData_p = ( TE_EEArray_t ) GAAlloc ( sizeof ( TE_EEArray_t ) ) ; 
      
      if ( GALoadNVData ( TE_SaveData_p ) == false )
      { 
        return false ; 
      } 
      
      GAHighScoreListInit ( TE_HighScoreList_p , TE_SaveData_p . HighScoreListEntries ) ; 
      

      if ( TE_SaveData_p . chInfo != 1 && TE_SaveData_p 

⌨️ 快捷键说明

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