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

📄 game.java

📁 j2me小游戏,入门级的学习很好:)
💻 JAVA
字号:
import java.util.Random;
import javax.microedition.lcdui.Image;
import javax.microedition.lcdui.Graphics;
import javax.microedition.lcdui.game.GameCanvas;
import javax.microedition.lcdui.game.Sprite;
import javax.microedition.lcdui.game.LayerManager;
import javax.microedition.media.MediaException;

public class Game extends GameCanvas implements Runnable {
	
	boolean conti = true;
	boolean hit = false;
	boolean des = false;
	boolean other = false;
	
	static int point;
	int c = 0,diff;
	int rate = 200;
	int x=32,y=70,v=0,position=0,hillX1 = 0,hillX2 = -128;
	int eX1=18,eX2=36,eX3=80,
		eY1=30,eY2=30,eY3=30;
	int bossTime = 2980;
	
	int day_backSeq[] = {1},night_backSeq[] = {3};
	int iSeq[] = {0,1},
		eSeq1[] = {240},eSeq2[] = {96},eSeq3[] = {246},eBoss1[] = {84},
		eSeq11[] = {241},eSeq22[] = {97},eSeq33[] = {247},eBoss2[] = {85},
		eSeq111[] = {242},eSeq222[] = {98},eSeq333[] = {248},eBoss3[] = {108},
		eSeq1111[] = {243},eSeq2222[] = {99},eSeq3333[] = {249},eBoss4[] = {109},
		eBoom1[] = {244},eBoom2[] = {100},eBoom3[] = {250},
		eBoom11[] = {245},eBoom22[] = {110},eBoom33[] = {251},
		eHit1[] = {265},eHit2[] = {111},eHit3[] = {271},
		sleepSeq1[] = {120,121,122},sleepSeq2[] = {48,49,50},sleepSeq3[] = {72,73,74},sleepSeq4[] = {144,145,146},sleepSeq5[] = {96,97,98},
		sleepD1[]= {123},sleepD2[]= {51},sleepD3[]= {75},sleepD4[]= {147},sleepD5[]= {99},
		wSeq1[]={1111,1062,1063,1064,1065,1066,1067,1068,1069,1110},wSeq2[]={1111,1062,1063,1064,1065,1066,1067,1068,1069,1110},wSeq3[]={1111,1063,1065,1067,1069},wSeq4[]={1111},
		g_day_Seq[] = {2,7,8},g_night_Seq[] = {9,10,11},
		hillSeq1[] = {4},hillSeq2[] = {5};
	
	Sprite i,e1,e2,e3,sleep1,sleep2,sleep3,sleep4,sleep5,back,ground1,ground2,w1,w2,w3,w4,hill1,hill2;
	LayerManager lm;

	public Game(int p) {
		super(true);
		
//=================================================================================
		if(p == -1) {
			point =0;
			other = true;
		}
		else point = p;
//=================================================================================
		
		lm = new LayerManager();
		
		Image img = null;
		try {
			img = Image.createImage("/all.png");
		}catch(Exception e) {
		}
		back = new Sprite(img,128,128);
		i = new Sprite(img,64,64);
		e1 = new Sprite(img,32,32);
		e2 = new Sprite(img,64,32);
		e3 = new Sprite(img,32,32);
		sleep1 = new Sprite(img,32,32);
		sleep2 = new Sprite(img,32,32);
		sleep3 = new Sprite(img,32,32);
		sleep4 = new Sprite(img,32,32);
		sleep5 = new Sprite(img,32,32);
		w1 = new Sprite(img,16,16);
		w2 = new Sprite(img,16,16);
		w3 = new Sprite(img,16,16);
		w4 = new Sprite(img,16,16);
		ground1 = new Sprite(img,128,128);
		ground2 = new Sprite(img,128,128);
		hill1 = new Sprite(img,128,32);
		hill2 = new Sprite(img,128,32);
		
		i.setFrameSequence(iSeq);
		sleep1.setFrameSequence(sleepSeq1);
		sleep2.setFrameSequence(sleepSeq2);
		sleep3.setFrameSequence(sleepSeq3);
		sleep4.setFrameSequence(sleepSeq1);
		sleep5.setFrameSequence(sleepSeq3);
		e1.setFrameSequence(eSeq1);
		e2.setFrameSequence(eSeq2);
		e3.setFrameSequence(eSeq3);
		w1.setFrameSequence(wSeq1);
		w2.setFrameSequence(wSeq2);
		w3.setFrameSequence(wSeq3);
		w4.setFrameSequence(wSeq4);
		ground1.setFrameSequence(g_day_Seq);
		ground2.setFrameSequence(g_night_Seq);
		hill1.setFrameSequence(hillSeq1);
		hill2.setFrameSequence(hillSeq2);
		back.setFrameSequence(day_backSeq);
		
		sleep1.setPosition(12,64);
		sleep2.setPosition(48,64);
		sleep3.setPosition(85,64);
		sleep4.setPosition(7,90);
		sleep5.setPosition(100,90);
		e1.setPosition(eX1,eY1);
		e2.setPosition(eX2,eY2);
		e3.setPosition(eX3,eY3);
		w1.setPosition(10,10);
		w2.setPosition(25,10);
		w3.setPosition(40,10);
		w4.setPosition(55,10);
		ground1.setPosition(0,0);
		ground2.setPosition(0,0);
		hill1.setPosition(hillX1,42);
		hill2.setPosition(hillX2,42);
		back.setPosition(0,0);
		
		e1.setVisible(false);
		e2.setVisible(false);
		e3.setVisible(false);
		ground2.setVisible(false);
//=================================================================	
		if(!other) {
			if(p == 0) {
				diff = 3;
			}
			else if(p == 320) {
				diff = 2;
				sleep4.setVisible(false);
				sleep5.setVisible(false);
				w2.setFrame(3);
			}
			else if(p == 1020) {
				diff = 1;
				sleep3.setVisible(false);
				sleep4.setVisible(false);
				sleep5.setVisible(false);
				w1.setFrame(1);
			}
		}else {
			diff = 1;
		}
//==================================================================		
		lm.append(i);
		lm.append(sleep1);
		lm.append(sleep2);
		lm.append(sleep3);
		lm.append(sleep4);
		lm.append(sleep5);
		lm.append(e1);
		lm.append(e2);
		lm.append(e3);
		lm.append(w1);
		lm.append(w2);
		lm.append(w3);
		lm.append(w4);
		lm.append(hill1);
		lm.append(hill2);
		lm.append(ground1);
		lm.append(ground2);
		lm.append(back);
	}

	public void ai() {
		Random r = new Random();
		int p = (r.nextInt()>>>1)%5;
		switch(p) {
		case 0:
			e1.setVisible(true);
			break;
		case 1:
			e2.setVisible(true);
			break;
		case 2:
			e3.setVisible(true);
			break;
		case 3:
			break;
		case 4:
			break;
		}
		position = p;
	}
	
	public void input(int p) {
		int key = getKeyStates();
		if(((key & LEFT_PRESSED)!=0)&(p==0)) {
			hit = true;
			if(!des)
				e1.setFrameSequence(eHit1);
		}else if(((key & FIRE_PRESSED)!=0&(p==1))) {
			hit = true;
			if(!des)
				e2.setFrameSequence(eHit2);
		}else if(((key & RIGHT_PRESSED)!=0&(p==2))) {
			hit = true;
			if(!des)
				e3.setFrameSequence(eHit3);
		}else if((key & DOWN_PRESSED)!=0) {
			boolean b = true;
			while(b) {
				int key2 = getKeyStates();
				if((key2 & DOWN_PRESSED)!=0)
					b = false;
			}
		}else {
			if((v==10)&(!des)&(p!=3)&(p!=4)) {
				if(sleep1.isVisible()) {
					sleep1.setFrameSequence(sleepD1);
					}
				else if((!sleep1.isVisible())&sleep2.isVisible()) {
					sleep2.setFrameSequence(sleepD2);
				}
				else if((!sleep2.isVisible())&sleep3.isVisible()) {
					sleep3.setFrameSequence(sleepD3);
				}
				else if((!sleep3.isVisible())&sleep4.isVisible()) {
					sleep4.setFrameSequence(sleepD4);
				}
				else if(!sleep4.isVisible()) {
					sleep5.setFrameSequence(sleepD5);
				}
			}
		}
		
		if(v==5) {
			if(sleep1.getFrameSequenceLength()==1)
				sleep1.setVisible(false);
			if(sleep2.getFrameSequenceLength()==1)
				sleep2.setVisible(false);
			if(sleep3.getFrameSequenceLength()==1)
				sleep3.setVisible(false);
			if(sleep4.getFrameSequenceLength()==1)
				sleep4.setVisible(false);
			if(sleep5.getFrameSequenceLength()==1)
				sleep5.setVisible(false);
		}
		
		if(hit) {
			++c;
			hit = false;
		}
		if(v == 10)
			c = 0;
		if(c == diff) {
			if(Text.music != 1) {//TODO
				try {
					Begin.playGun.start();
				}catch(MediaException me) {
				}
			}
			switch(p) {
			case 0:
				e1.setFrameSequence(eBoom1);
				break;
			case 1:
				e2.setFrameSequence(eBoom2);
				break;
			case 2:
				e3.setFrameSequence(eBoom3);
				break;
			}
			c =0;
			point += 20;
			des = true;
			w3.nextFrame();
			if(w3.getFrame() == 0) {
				w2.nextFrame();
				if(w2.getFrame() == 0)
					w1.nextFrame();
			}
		}
	}	
	
	public void move(int i) {
		switch(i) {
		case 0:
			eX1 -= 2;
			eY1 += 1;
			break;
		case 1:
			eY2 += 1;
			break;
		case 2:
			eX3 += 2;
			eY3 += 1;
			break;
		}
		if(!des) {
			if((eY1>32)&(eY1<36)) {//e1
				e1.setFrameSequence(eSeq11);
			}else if((eY2>35)&(eY2<38)) {
				e1.setFrameSequence(eSeq111);
			}else if((eY3>37)&(eY2<40)) {
				e1.setFrameSequence(eSeq1111);
			}else if((eY2>32)&(eY2<36)) {//e2
				if(point==bossTime)
					e2.setFrameSequence(eBoss2);
				else e2.setFrameSequence(eSeq22);
			}else if((eY2>35)&(eY2<38)) {
				if(point==bossTime)
					e2.setFrameSequence(eBoss3);
				else e2.setFrameSequence(eSeq222);
			}else if((eY2>37)&(eY2<40)) {
				if(point==bossTime)
					e2.setFrameSequence(eBoss4);
				else e2.setFrameSequence(eSeq2222);
			}else if((eY3>32)&(eY2<36)) {//e3
				e3.setFrameSequence(eSeq33);
			}else if((eY3>35)&(eY2<38)) {
				e3.setFrameSequence(eSeq333);
			}else if((eY3>37)&(eY2<40)) {
				e3.setFrameSequence(eSeq3333);
			}
		}
		if(eY1>39) {
			eX1=18;
			eY1=30;
			e1.setVisible(false);
			e1.setFrameSequence(eSeq1);
		}else if(eY2>39) {
			eX2=36;
			eY2=30;
			e2.setVisible(false);
			e2.setFrameSequence(eSeq2);
		}else if(eY3>39) {
			eX3=80;
			eY3=30;
			e3.setVisible(false);
			e3.setFrameSequence(eSeq3);
		}
		hillX1 += 10;
		hillX2 += 10;
		if(hillX1 > 128) {
			hillX1 = -128;
		}
		if(hillX2 > 128) {
			hillX2 = -128;
		}
	}
	
	public void boss(int po) {
		if(po == bossTime) {
			e2.setVisible(true);
			e2.setFrameSequence(eBoss1);
			position = 1;
			diff = 5;
		}
	}
	
	public void render(Graphics g) {
		
		i.nextFrame();
		sleep1.nextFrame();
		sleep2.nextFrame();
		sleep3.nextFrame();
		sleep4.nextFrame();
		sleep5.nextFrame();
		e1.nextFrame();
		e2.nextFrame();
		e3.nextFrame();
		ground1.nextFrame();
		ground2.nextFrame();
		
		i.setPosition(x,y);
		e1.setPosition(eX1,eY1);
		e2.setPosition(eX2,eY2);
		e3.setPosition(eX3,eY3);
		hill1.setPosition(hillX1,30);
		hill2.setPosition(hillX2,30);
		
		lm.paint(g,0,0);
		flushGraphics();
	}
	
	public void day_night() {
		if(point == 100) {
			ground1.setVisible(false);
			ground2.setVisible(true);
			back.setFrameSequence(night_backSeq);
		}else if(point == 200) {
			ground1.setVisible(true);
			ground2.setVisible(false);
			back.setFrameSequence(day_backSeq);
		}
	}
	
	public void run() {
		long st = 0;
		long et = 0;
		Graphics g = getGraphics();
		while(conti) {
			st = System.currentTimeMillis();
			if(Text.music != 1) {//TODO
				try {
					Begin.playV.stop();
					Begin.playFight.start();
				}catch(MediaException me) {
				}
			}
			if(v > 9) {
				if((point ==bossTime)&(!other))//======================================
					boss(point);
				else ai();
				v = 1;
				hit = false;
				des = false;
			}else {
				++v;
			}
			move(position);
			input(position);
			day_night();
			render(g);
//=======================================================================
			if(!other) {
				if(point == 300) {
					exit();
					Begin.display.setCurrent(new Text(3));
				}else if(point == 1000) {
					exit();
					Begin.display.setCurrent(new Text(4));
				}else if(point == 3000) {
					exit();
					Text.save(point);
					Begin.display.setCurrent(new Text(5));
				}
			}else {
				if(point ==100) {
					diff = 2;
				}else if(point ==200) {
					diff = 3;
				}else if(point ==300) {
					diff = 4;
				}else if(point ==400) {
					diff = 5;
				}else if(point ==500) {
					diff = 6;
				}
			}
//	=======================================================================	
			if(!((sleep1.isVisible())|(sleep2.isVisible())|(sleep3.isVisible())|(sleep4.isVisible())|(sleep5.isVisible()))) {
				exit();
				Text.save(point);
				if(other)
					Begin.display.setCurrent(new Text(9));
				else Begin.display.setCurrent(new Text(6));
			}
	
			et = System.currentTimeMillis();
			if((et-st)<rate) {
				try {
					Thread.sleep(rate-(et-st));
				}catch(Exception e) {
				}
			}
		}
	}

	public void start() {
		Thread t = new Thread(this);
		t.start();
	}
	
	public void exit() {
		conti = false;
	}
}

⌨️ 快捷键说明

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