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

📄 menucanvas.java

📁 游戏的故事 一款适合学习用的RPG游戏 WTK运行,内有截图
💻 JAVA
字号:

import javax.microedition.lcdui.Canvas;
import javax.microedition.lcdui.Graphics;
import javax.microedition.midlet.MIDlet;
import javax.microedition.lcdui.Font;
import java.lang.Exception;
import javax.microedition.lcdui.Image;
import java.io.IOException;
import javax.microedition.lcdui.game.Sprite;
import java.lang.Thread;
import java.lang.InterruptedException;
import javax.microedition.lcdui.game.GameCanvas;
import java.lang.Thread;

public class MenuCanvas extends GameCanvas implements Runnable {
	private String[] menuItem=new String[6];
	private Rpg parent;
	private int sel;
	private Font font;
	private Image mback=null;
	private Image title=null;
	private Sprite chr=null;
	private Graphics vbuf=null;
	private byte state=0;
	//  0: cg		1:	menu
	private static int[][] walkSeq=new int[4][2];
	static{	
		walkSeq[0][0]=0;	walkSeq[0][1]=1;
		walkSeq[1][0]=2;	walkSeq[1][1]=3;
		walkSeq[2][0]=4;	walkSeq[2][1]=5;
		walkSeq[3][0]=6;	walkSeq[3][1]=7;
	}

	
	public MenuCanvas(Rpg p) {
		super(false);
		parent=p;
		sel=0;
		font=Font.getDefaultFont();
		try{
			mback=Image.createImage("/res/mback.png");
			title=Image.createImage("/res/title.png");
			chr=new Sprite(Image.createImage("/res/chr.png"),16,24);
			vbuf=this.getGraphics();
		}catch(IOException ioe){
		}
		menuItem[0]="新游戏";
		menuItem[1]="继续";
		menuItem[2]="帮助";
		menuItem[3]="退出";
	}	
	public void paint(Graphics g){
		if(state==0){
			flushGraphics();
		}else{
			g.drawImage(mback,0,0,Graphics.TOP|Graphics.LEFT);
			g.drawImage(title,22,80,Graphics.BOTTOM|Graphics.LEFT);
			chr.setPosition(74,100+sel*25);
			chr.nextFrame();
			chr.paint(g);
			g.setColor(0x0f0f0f);
			for(int i=0;i<4;i++){
				g.drawString(menuItem[i],94,100+i*25,Graphics.TOP|Graphics.LEFT);
			}
			g.setColor(244,224,34);
			for(int i=0;i<4;i++){
				g.drawString(menuItem[i],93,101+i*25,Graphics.TOP|Graphics.LEFT);
			}
			g.setColor(0xff0000);
			g.drawString(" For NEC N840",120,220,Graphics.TOP|Graphics.LEFT);
		}
	}
	public void keyPressed(int keyCode) {
		if(state==0) return;
		switch(keyCode){
		case UP:
			if(sel>0) sel-=1;	repaint();	break;
		case DOWN:
			if(sel<3) sel+=1;	repaint();	break;
		case FIRE:
			state=3;
			if(sel==0) parent.setState((byte)7);// new
			if(sel==1) parent.setState((byte)2);// continue
			if(sel==2) parent.setState((byte)4);// help
			if(sel==3) parent.setState((byte)6);// exit
		}
	}

	public void run() {
		vbuf.drawImage(mback,0,0,Graphics.TOP|Graphics.LEFT);
		repaint();
		chr.setFrameSequence(walkSeq[3]);
		for(int i=0;i<15;i++){
			vbuf.drawImage(mback,0,0,Graphics.TOP|Graphics.LEFT);
			chr.setPosition(240-6*i,50);
			chr.nextFrame();
			chr.paint(vbuf);
			repaint();
			pause(100);
		}
		chr.setFrameSequence(walkSeq[2]);
		vbuf.drawImage(mback,0,0,Graphics.TOP|Graphics.LEFT);
		chr.paint(vbuf);
		repaint();
		pause(700);
		chr.setFrameSequence(walkSeq[1]);
		vbuf.drawImage(mback,0,0,Graphics.TOP|Graphics.LEFT);
		chr.paint(vbuf);
		repaint();
		pause(700);
		chr.setFrameSequence(walkSeq[3]);
		vbuf.drawImage(mback,0,0,Graphics.TOP|Graphics.LEFT);
		chr.paint(vbuf);
		repaint();
		pause(700);
		chr.setFrameSequence(walkSeq[1]);
		for(int i=0;i<15;i++){
			vbuf.drawImage(mback,0,0,Graphics.TOP|Graphics.LEFT);
			chr.setPosition(150+6*i,50);
			chr.nextFrame();
			chr.paint(vbuf);
			repaint();
			pause(20);
		}
		chr.setFrameSequence(walkSeq[3]);
		for(int i=0;i<40;i++){
			vbuf.drawImage(mback,0,0,Graphics.TOP|Graphics.LEFT);
			chr.setPosition(240-6*i,50);
			chr.nextFrame();
			chr.paint(vbuf);
			vbuf.drawImage(title,256-6*i,80,Graphics.BOTTOM|Graphics.LEFT);
			repaint();
			pause(50);
		}
		chr.setFrameSequence(walkSeq[2]);
		for(int i=0;i<10;i++){
			vbuf.drawImage(mback,0,0,Graphics.TOP|Graphics.LEFT);
			vbuf.drawImage(title,22,80,Graphics.BOTTOM|Graphics.LEFT);
			chr.setPosition(6+i*7,50+i*5);
			chr.nextFrame();
			chr.paint(vbuf);
			repaint();
			pause(50);
		}
		state=1;
		repaint();
		int k;
		while(state==1){
			k=waitKeyRelease(this.UP_PRESSED|this.DOWN_PRESSED|this.FIRE_PRESSED);
			if((k&UP_PRESSED)!=0) keyPressed(UP);
			else if((k&DOWN_PRESSED)!=0) keyPressed(DOWN);
			else if((k&FIRE_PRESSED)!=0) keyPressed(FIRE);
		}
		return;
	}
	private void pause(long nMillis){
		try{
			Thread.currentThread().sleep(nMillis);
		}catch(InterruptedException ie){
		}
	}
	private int waitKeyRelease(int keyCode) {
		int ok,ck;
		while((ok=getKeyStates()&keyCode)!=0);
		while((ok=getKeyStates()&keyCode)==0);
		while(true){
			ck=getKeyStates()&keyCode;
			if(ck<ok) break;
		}
		return ok;
	}
	
}

⌨️ 快捷键说明

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