📄 maincanvas.java
字号:
package demo;
import javax.microedition.lcdui.Font;
import javax.microedition.lcdui.Graphics;
import javax.microedition.lcdui.Image;
import javax.microedition.lcdui.game.GameCanvas;
import javax.microedition.lcdui.game.Sprite;
public class MainCanvas extends GameCanvas implements Runnable{
private boolean m_bRunning; //控制线程运行
public Sprite m_spButton; //按钮对象
public RMSScore m_Score; //记录对象
public int m_nTimes = 0; //管理时间
public Font m_Font; //字体对象
public MainCanvas(){
super(false);
m_Score = new RMSScore(); //分配内存空间
m_Score.LoadHighScore(); //读取最高分
try{//创建字体
m_Font = Font.getFont(Font.FACE_PROPORTIONAL,
Font.STYLE_BOLD, Font.SIZE_LARGE);
}
catch(Exception e){//创建失败,则采用系统默认字体
m_Font = Font.getDefaultFont();
}
try{//读取图片资源,注意资源的路径
Image image = Image.createImage("/demo/Button.png");
m_spButton = new Sprite( image, 25, 25 );
m_spButton.setFrame( 0 );
m_spButton.setPosition( getWidth()/2 - 12, 90 );
}
catch(Exception e){}
Start(); //启动线程
}
public void Start(){
m_bRunning = true;
Thread thread = new Thread(this); //分配新线程
thread.start(); //线程启动
}
public void run() { //新线程自动调用此方法
//获取系统当前时间,并将时间换算成以毫秒为单位的数
long T1 = System.currentTimeMillis();
long T2 = T1;
while(m_bRunning){
T2 = System.currentTimeMillis();
if( T2 - T1 > 100 ){ //间隔100毫秒
T1 = T2;
Input();
Logic();
Paint();
}
}
}
public void Stop(){ //终止游戏
m_bRunning = false;
}
public void StartTime(){ //开始计时
m_nTimes = 600; //600*100=60000毫秒=1分钟
m_Score.m_nCurScore = 0;
}
protected void keyPressed(int keyCode){
if( m_nTimes <= 0 ){ //计时尚未开始
if( keyCode == KEY_NUM0 ) //按下0号键
StartTime();
return;
}
m_Score.m_nCurScore ++; //增加分数
m_spButton.setFrame( 1 ); //设置按钮
}
public void Input(){
}
public void Logic(){
if( m_nTimes > 0 ){ //计时
m_nTimes --;
if( m_nTimes <= 0 ){ //结束游戏
m_Score.SaveHighScore();
}
}
}
public void Paint(){
Graphics g = getGraphics();
//用黑色清屏
g.setColor(0);
g.fillRect( 0, 0, getWidth(), getHeight() );
//设置当前颜色及当前字体
g.setColor(0xFFFFFFFF);
g.setFont(m_Font);
StringBuffer temp = new StringBuffer();
StringBuffer temp2 = new StringBuffer();
StringBuffer temp3 = new StringBuffer();
//拼接字符
temp2.append( "最高分:" );
temp2.append( m_Score.m_nHighScore );
temp3.append( "本次得分:" );
temp3.append( m_Score.m_nCurScore );
if( m_nTimes <= 0 )
temp.append( "按0号键开始计时" );
else{
temp.append( "剩余时间" );
temp.append( m_nTimes / 10 );
temp.append( "秒" );
}
//显示文字信息
g.drawString( temp.toString(), 20, 10, 0 );
g.drawString( temp2.toString(), 20, 30, 0 );
g.drawString( temp3.toString(), 20, 50, 0 );
//显示按钮
m_spButton.paint(g);
m_spButton.setFrame( 0 );
flushGraphics();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -