📄 drawcanvas.java
字号:
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
import javax.microedition.lcdui.game.*;
import javax.microedition.media.*;
import javax.microedition.rms.*;
import java.util.Random;
import java.io.*;
public class DrawCanvas extends GameCanvas implements Runnable,CommandListener{
private Graphics _scene;
private MIDlet midlet;
private Display game_display;
private DrawList drawlist;
private Timer_Thread timer_thread;
private Seeking_expressions seeking_expressions;
private Thread thread;
private Command exit,back,help,repeat;
private static final int FPS=16;
private Image backImage1,backImage2,branceImage;
private Image heitao,hongtao,meihua,fangkuai;
private Image scrollcard;
private Image font_count;
private Image titleimage;
private Image fatcardimage;
private Image helpimage;
private Image alertimage;
private LayerManager layermanager;
private Sprite brance_mark;
private Sprite brance_sprite[];
private Sprite title_sprite[];
private Sprite help_sprite;
private Sprite alert_sprite;
private final int SCREEN_WIDTH,SCREEN_HEIGHT;
private InputStream is;
private int card_frame=0;
private int card_step1_x=125,card_step2_x=-132;
private int card_step1_y=5,card_step2_y=-28;
private short font_width=0,index_title=0;
public byte scene_ID,card_ID,word_ID;
private boolean thread_stop=false,_initData1,_initData2,_initData3,card_move,on_off;
private byte[] cardArrays;
private byte[] copy_cardArrays=new byte[4];
private int card_x,card_y,word_x;
private Player player;
private String str_num="";
private StringBuffer string_time;
private int temp=0;
private byte temp_num=0;
private char ch=' ',old_ch=' ';
private byte kuo_left_num,kuo_right_num;
private byte correct_num;
private int score_now,score_old;
private String answer_correct,answer_old_score,answer_now_score;
public DrawCanvas(MIDlet midlet,Display display){
super(false);
this.midlet=midlet;
game_display=display;
_scene=getGraphics();
repeat=new Command("重新开始",Command.SCREEN,4);
help=new Command("帮助",Command.HELP,3);
back=new Command("返回",Command.BACK,2);
exit=new Command("退出",Command.EXIT,1);
this.addCommand(exit);
this.setCommandListener(this);
SCREEN_WIDTH=this.getWidth();
SCREEN_HEIGHT=this.getHeight();
try{
backImage1=Image.createImage("/scene1_background.png");
backImage2=Image.createImage("/scene3_background.png");
branceImage=Image.createImage("/branceimage.png");
heitao=Image.createImage("/heitao.png");
hongtao=Image.createImage("/hongtao.png");
meihua=Image.createImage("/meihua.png");
fangkuai=Image.createImage("/fangkuai.png");
scrollcard=Image.createImage("/scrollcard.png");
font_count=Image.createImage("/font_count.png");
titleimage=Image.createImage("/title.png");
fatcardimage=Image.createImage("/fatcard.png");
helpimage=Image.createImage("/help.png");
alertimage=Image.createImage("/alert.png");
}catch(Exception e){
System.out.println("无法载入图片");
}
seeking_expressions=new Seeking_expressions();
layermanager=new LayerManager();
brance_mark=new Sprite(branceImage,97,84);
alert_sprite=new Sprite(alertimage,88,30);
alert_sprite.setPosition(46, 73);
help_sprite=new Sprite(helpimage);
title_sprite=new Sprite[]{
new Sprite(titleimage,73,39),
new Sprite(titleimage,73,39)
};
title_sprite[0].setPosition(12, 94);
title_sprite[1].setPosition(12, 124);
brance_mark.setPosition(70, 12);
brance_mark.setVisible(false);
brance_sprite=new Sprite[]{
new Sprite(heitao,42,58),
new Sprite(hongtao,42,58),
new Sprite(meihua,42,58),
new Sprite(fangkuai,42,58)
};
}
public void run(){
while(!thread_stop){
long time_start=System.currentTimeMillis();
//input();
data_logic();
if(scene_ID==0)
scene1_animation();
else if(scene_ID==1)
scene2_animation();
else if(scene_ID==3)
scene3_animation();
long time_end=System.currentTimeMillis();
long time_interval=time_end-time_start;
if(time_interval<1000/FPS)
try{
Thread.sleep(1000/FPS-time_interval);
}catch(InterruptedException e){
System.out.println(e.getMessage());
}
}
}
public void data_logic(){
if(scene_ID==0){
card_step1_x-=5;
card_step1_y+=5;
if(card_step1_x<-42){
card_step1_x=120;
card_step1_y=10;
}
card_step2_x+=5;
card_step2_y-=5;
if(card_step2_x>30){
card_step2_x=-132;
card_step2_y=-28;
}
}
else if(scene_ID==1){
if(card_move==true){
switch(card_ID){
case 0:
if(card_x>6){
card_x-=6;
card_y+=5;
}else{
card_ID=1;
card_x=80;
card_y=8;
}
break;
case 1:
if(card_x>49){
card_x-=3;
card_y+=6;
}else{
card_ID=2;
card_x=80;
card_y=8;
}
break;
case 2:
if(card_x<91){
card_x+=1;
card_y+=6;
}else{
card_ID=3;
card_x=80;
card_y=8;
}
break;
case 3:
if(card_x<132){
card_x+=5;
card_y+=6;
}else{
card_ID=4;
}
break;
default:
card_move=false;
}
}
}
else if(scene_ID==3){
switch(word_ID){
case 0:
if(word_x<40){
word_x+=5;
}else{
word_x=-100;
word_ID=1;
}
break;
case 1:
if(word_x<40){
word_x+=5;
}else{
word_x=-80;
word_ID=2;
}
break;
case 2:
if(word_x<40){
word_x+=5;
}else{
word_ID=3;
}
break;
}
}
}
public void keyPressed(int keyCode){
if(scene_ID==0 && card_frame==10){
if(getGameAction(keyCode)==DOWN){
index_title++;
if(index_title==2)index_title=0;
}
else if(getGameAction(keyCode)==UP){
index_title--;
if(index_title==-1)index_title=1;
}
else if(getGameAction(keyCode)==FIRE){
if(index_title==0){ //游戏开始
scene_ID=1;
card_ID=0;
card_x=86;card_y=3;
_initData1=true;
_initData2=true;
_initData3=true;
card_move=true;
str_num="";
temp=0;
temp_num=0;
ch=' ';
old_ch=' ';
kuo_left_num=0;
kuo_right_num=0;
correct_num=0;
word_x=-140;
word_ID=0;
this.removeCommand(exit);
this.addCommand(back);
this.addCommand(help);
timer_thread=new Timer_Thread(this);
thread=new Thread(timer_thread);
thread.start();
}
else if(index_title==1){ //游戏设置
scene_ID=2;
_initData1=true;
player=null;
is=null;
drawlist.list_dos=false;
_scene.drawImage(backImage1 , 0 , 0, Graphics.TOP|Graphics.LEFT); //清除缓冲区
game_display.setCurrent(drawlist.get_form());
}
}
}
else if(scene_ID==1){
boolean bAction=false;
switch(keyCode){
case Canvas.KEY_NUM0:
str_num+="0";
break;
case Canvas.KEY_NUM1:
str_num+="1";
break;
case Canvas.KEY_NUM2:
str_num+="2";
break;
case Canvas.KEY_NUM3:
str_num+="3";
break;
case Canvas.KEY_NUM4:
str_num+="4";
break;
case Canvas.KEY_NUM5:
str_num+="5";
break;
case Canvas.KEY_NUM6:
str_num+="6";
break;
case Canvas.KEY_NUM7:
str_num+="7";
break;
case Canvas.KEY_NUM8:
str_num+="8";
break;
case Canvas.KEY_NUM9:
str_num+="9";
break;
case Canvas.KEY_STAR:
str_num+="(";
kuo_left_num++;
break;
case Canvas.KEY_POUND:
str_num+=")";
kuo_right_num++;
break;
case -1:
str_num+="+";
break;
case -2:
str_num+="-";
break;
case -3:
str_num+="*";
break;
case -4:
str_num+="/";
break;
case -5:
str_num+="=";
break;
case -8:
temp=0;
temp_num=0;
ch=' ';
old_ch=' ';
kuo_left_num=0;
kuo_right_num=0;
str_num="";
System.arraycopy(cardArrays, 0, copy_cardArrays, 0, 4);
break;
default:
bAction=true;
}
if(bAction==false && keyCode!=-8){
ch=str_num.charAt(str_num.length()-1);
if(Character.isDigit(ch)){
temp=temp*10+(ch-48);
if(drawlist.modal==0 && String.valueOf(temp).length()==1)
temp_num++;
else if(drawlist.modal==1 && String.valueOf(temp).length()==1)
temp_num++;
}
check_syntax();
old_ch=ch;
}
}
}
public void check_syntax(){
boolean errorAction=false;
if(old_ch==' ' && !Character.isDigit(ch) && ch!='(' && ch!='='){
errorAction=true;
alert_sprite.setFrame(1);
layermanager.insert(alert_sprite, 0);
}
else if(old_ch!=' ' && !Character.isDigit(old_ch) && old_ch!=')' && !Character.isDigit(ch) && ch!='('){
errorAction=true;
alert_sprite.setFrame(1);
layermanager.insert(alert_sprite, 0);
}
else if(!Character.isDigit(old_ch) && old_ch!=')' && Character.isDigit(ch)){
if(drawlist.modal==0){
int i=0;
for(;i<4;i++){
if(copy_cardArrays[i]+1==temp){
copy_cardArrays[i]=-1;
break;
}
}
if(i==4){
errorAction=true;
alert_sprite.setFrame(0);
layermanager.insert(alert_sprite, 0);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -