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

📄 scorescreen.java

📁 游戏超级玛丽的源码
💻 JAVA
字号:
import java.io.*;
import java.util.*;
import java.lang.*;
import javax.microedition.rms.*;
import javax.microedition.lcdui.*;

public class ScoreScreen extends Canvas implements CommandListener
{
	private supermario theMidlet;
	private Font f1 = Font.getFont(Font.FACE_SYSTEM,Font.STYLE_PLAIN,Font. SIZE_LARGE);
	private Font f2 = Font.getFont(Font.FACE_SYSTEM,Font.STYLE_PLAIN,Font. SIZE_MEDIUM);
	private boolean hasrecord=false;
	private Vector sds;
	private String dbname="scorebook";
	
  public ScoreScreen(supermario midlet)
  {
  	this.theMidlet=midlet;
  	Command back=new Command("返回",Command.BACK,1);
  	Command clear=new Command("清除记录",Command.SCREEN,0);
  	addCommand(back);
  	addCommand(clear);
  	setCommandListener(this);
  	
  	sds=new Vector();
  	
  	addData();//增加记录
  	readData();//读取记录
  	
  	Calendar ca=Calendar.getInstance();
  	TimeZone tz = TimeZone.getTimeZone("GMT+8:00");
  	int year,month,day,hour,minute,second;
		//获得时区ID
  	ca.setTimeZone(tz);
  	
  	year=ca.get(Calendar.YEAR);
  	month=ca.get(Calendar.MONTH)+1;
  	day=ca.get(Calendar.DATE);
  	hour=ca.get(Calendar.HOUR);
  	minute=ca.get(Calendar.MINUTE);
  	second=ca.get(Calendar.SECOND);
  }
  
  protected void paint(Graphics g)
  {
  	g.setColor(0,0,0);
		g.fillRect(0,0,getWidth(),getHeight());
		g.setColor(255,255,0);

		g.setFont(f1);
		g.drawString("最高记录",getWidth()/2-25,15,Graphics.TOP|Graphics.LEFT);
		g.drawRect(10,35,getWidth()-20,getHeight()-50);
		
		if(hasrecord==false)
			g.drawString("没有记录!",getWidth()/2-25,80,Graphics.TOP|Graphics.LEFT);
		else
		{
			g.setFont(f2);
			g.drawString("成绩",15,40,Graphics.TOP|Graphics.LEFT);
			g.drawString("姓名",65,40,Graphics.TOP|Graphics.LEFT);
			g.drawString("日期",125,40,Graphics.TOP|Graphics.LEFT);
			
			for(int i=0;i<sds.size();i++)
			{
				ScoreData tmpsd=(ScoreData)sds.elementAt(i);
				String sc=Integer.toString(tmpsd.sc);
				g.drawString(sc,15,(60+i*20),Graphics.TOP|Graphics.LEFT);
				g.drawString(tmpsd.na,65,(60+i*20),Graphics.TOP|Graphics.LEFT);
				g.drawString(tmpsd.da,110,(60+i*20),Graphics.TOP|Graphics.LEFT);
			}
		}
			
  }
  
  protected void keyPressed(int code)
  {
  	int keycode=getGameAction(code);
  }
  
  public void commandAction(Command c,Displayable s)
  {
  	if(c.getLabel().equals("返回"))
  		theMidlet.activateMenuScreen();
  	else if(c.getLabel().equals("清除记录"))
  		deleteAllData();
  		
  }
  
  public RecordStore openRSAnyway(String rsname)
  {
  	RecordStore rs=null;
  	if(rsname.length()>32)
  		return null;
  		
  	try{
  		rs=RecordStore.openRecordStore(rsname,true);
  		return rs;
  	}catch(Exception e){
  		System.out.println(e);
  		return null;
  	}
  }
  
  public void addData()
  {
  	ScoreData sd=new ScoreData();
  	sd.na="6";
  	sd.da="2006-07-08";
  	sd.sc=100;
  	byte[] tmp=sd.encode();
  	RecordStore rs=openRSAnyway(dbname);
  	if(rs==null)
  		theMidlet.activateMenuScreen();
  	else
  	{
  		try{
  			rs.addRecord(tmp,0,tmp.length);
  			rs.closeRecordStore();
  		}catch(Exception e){
  		}
  	}
  }
  
  public void deleteAllData()
  {
  	RecordStore rs=openRSAnyway(dbname);
  	if(rs==null)
  		theMidlet.activateMenuScreen();
  	else
  	{
  		try{
  			RecordEnumeration re=rs.enumerateRecords(null,null,false);
  			if(re.numRecords()!=0)//有记录
  			{
  				while(re.hasNextElement())
  				{
  					int id=re.nextRecordId();
  					System.out.println(id);
  					rs.deleteRecord(id);
  				}
  				rs.closeRecordStore();
  			}
  		}catch(Exception e){
  		}
  	}
  }
  
  public void paixu()
  {
  	int i,j,n;
  	n=sds.size();
  	
  	for(i=0;i<n-1;i++)
  	{
  		for(j=0;j<n-1-i;j++)
  		{
  			ScoreData sd1=(ScoreData)sds.elementAt(j);
  			ScoreData sd2=(ScoreData)sds.elementAt(j+1);
  			if(sd1.sc<sd2.sc)
  			{
  				sds.setElementAt(sd2,j);
  				sds.setElementAt(sd1,j+1);
  			}
  		}
  	}
  }
  
  public void readData()
  {
  	RecordStore rs=openRSAnyway(dbname);
  	if(rs==null)
  		theMidlet.activateMenuScreen();
  	else
  	{
  		try{
  			RecordEnumeration re=rs.enumerateRecords(null,null,false);
  			if(re.numRecords()==0)//没有记录
  				hasrecord=false;
  			else
  			{
  				hasrecord=true;
  				while(re.hasNextElement())
  				{
  					ScoreData sd=new ScoreData();
  					byte tmp[]=re.nextRecord();
  					sd.decode(tmp);
  					sds.addElement(sd);
  				}
  				rs.closeRecordStore();
  				paixu();//排序
  			}
  		}catch(Exception e){
  		}
  	}
  }
}

class ScoreData
{
	String na,da;
	int sc;
	
	public ScoreData()
	{
		na="";
		sc=0;
		da="";
	}
	
	public byte[] encode()
	{
		byte[] result=null;
		try{
			ByteArrayOutputStream bos=new ByteArrayOutputStream();
			DataOutputStream dos=new DataOutputStream(bos);
			dos.writeInt(sc);
			dos.writeUTF(na);
			dos.writeUTF(da);
			result=bos.toByteArray();
			dos.close();
			bos.close();
		}catch(Exception e){
		}
		
		return result;
	}
	
	public void decode(byte[] data)
	{
		try{
			ByteArrayInputStream bis=new ByteArrayInputStream(data);
			DataInputStream dis=new DataInputStream(bis);
			sc=dis.readInt();
			na=dis.readUTF();
			da=dis.readUTF();
			dis.close();
			bis.close();
		}catch(Exception e){
		}
	}
	
}

⌨️ 快捷键说明

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