📄 tetris.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 + -