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

📄 tetris.java

📁 最经典的游戏——俄罗斯方块的手机游戏 带有中文注释
💻 JAVA
字号:
package code; 
import javax.microedition.midlet.*;    //j2me MIDlet程序必须继承MIDlet类,所以要引入此包 

 import javax.microedition.lcdui.*;    //Display这个类所在包
 
 import javax.microedition.rms.*;
 import java.io.*;
 import java.util.*; 
 import java.util.Calendar;
 import java.util.Date;

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.util.Calendar;
import java.util.Date;

import javax.microedition.lcdui.Display;
import javax.microedition.midlet.MIDlet;
import javax.microedition.rms.RecordStore;

public class Tetris extends MIDlet  

{
   static Tetris s_midlet;    //MIDlet类的静态对象,方便实用 MIDlet类方法 

   static Display s_display = null;//用来显示 Canvas
   static cGame s_game = null;        //Canvas类对象,主要实现游戏的类 

   
   public Tetris()
    { 

       s_midlet = this;
   }
   
    /** 

    * 程序开始 系统会调用这个函数
    * 也有些手机 可以把程序初始化部分放到构造函数里,这连个地方应视手机的不同而定!
    */
   public void startApp()             
    { 

       ReadData();
       if (s_display == null) 
        { 

           s_display = Display.getDisplay(this);//创建Display对象,参数是MIDlet类对象,也就是我们当前写的这个Minesweeper类
       }

       if (s_game == null)  
        { 
           s_game = new cGame();                //创建 Canvas对象
           s_display.setCurrent(s_game);        //把Canvas对象设置成当前显示
       }  
       else 
        { 
           s_display.setCurrent(s_game);
       }
   }

    /** 

    * 程序暂停 系统会自动调用这个函数,不是所有手机都支持,
    * 手机在接到中断,如 来电,来短信时候会调用这个函数,这个函数 通常是空的!
    */
   public void pauseApp()         
    { 

       
   }

    /** 

    * 程序关闭 系统会调用这个函数,如果希望关闭程序的时候保存数据,可在这个函数里添加保存数据的方法
    * 比如游戏进行中,按了关机键,程序就会调用这个函数,也可以在程序中调用这个函数来结束游戏!
    */
   public void destroyApp(boolean unconditional) 
    { 

       WriteData();
       notifyDestroyed();
   }
   

   static Calendar    cal        = Calendar.getInstance();
   static Date        date    = null; 
   public static String getDate()
    { 
       date = new Date( System.currentTimeMillis() );
       cal.setTime( date );
       return "" +( cal.get( Calendar.MONTH ) + 1 )+"月"+cal.get( Calendar.DAY_OF_MONTH )+"日"+cal.get( Calendar.YEAR ); 
   }
   public static String getTime()
    { 

       date = new Date( System.currentTimeMillis() );
       cal.setTime( date );
       return "_" + cal.get( Calendar.HOUR_OF_DAY ) + "_" + cal.get( Calendar.MINUTE ) + "_" 

               + cal.get( Calendar.SECOND );
   }
   
   public static final String         gameName     = "Tetris"; 
   public static final int            recoreMax     = 8;
   public static         int[]        success     = new int[recoreMax]; 

   public static         String[]    dateTime    = new String[recoreMax];
    /** 

   * 读取存档记录
   */
   public void ReadData()
    { 
       String rmsName = gameName;
       try
        { 
           RecordStore rs = RecordStore.openRecordStore(rmsName, false);    //人物数据
           //<读取人物数据>
           byte[] data = rs.getRecord(1); 
           ByteArrayInputStream bais = new ByteArrayInputStream(data);
           DataInputStream in = new DataInputStream(bais);
           for(int i=0; i<success.length; i++ ) 
            { 
               success    [i] = in.readInt();                    //分数
               dateTime[i] = in.readUTF();                    //日期 
           }
//----------------2.0--------------            
           int k;
           k = in.readInt(); // 11备用 
           k = in.readInt(); // 12备用
           //</读取人物数据>
       }
        catch (Exception e)    {  }//新建档案 

   }
    /** 

   * 写记录
   */
   public void WriteData()
    { 
       String rmsName = gameName;
       try
        { 

           RecordStore rs = RecordStore.openRecordStore(rmsName, true); //如不存在数据库,则创建
           //<写人物数据>
           ByteArrayOutputStream baos = new ByteArrayOutputStream(); 
           DataOutputStream out = new DataOutputStream(baos);
           for(int i=0; i<success.length; i++ )
            { 

               out.writeInt( success    [i] );             // 分数
               out.writeUTF( dateTime    [i] );             // 日期
           } 

//            ----------------2.0--------------            
           out.writeInt(0); //11 预留
           out.writeInt(0); //12 预留 

           
           byte[] data = baos.toByteArray(); //转换成byte数组
           if (rs.getNumRecords() != 0)//已经有记录存在 

               rs.setRecord(1, data, 0, data.length);
           else
               rs.addRecord(data, 0, data.length);

           out.close(); 
           baos.close();
           rs.closeRecordStore();
           //</写人物数据>
       }
        catch (Exception e2){} 
   }
}

⌨️ 快捷键说明

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