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

📄 drawcanvas.java

📁 自已编的算24点的小游戏,原码和图片都已附上
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
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 + -