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

📄 gameobject.java

📁 手机版劲舞团,J2ME写的,里面人物动作比较多,游戏性比较高!
💻 JAVA
字号:
import javax.microedition.lcdui.game.*;
import javax.microedition.lcdui.*;
import javax.microedition.media.*;
import javax.microedition.media.control.*;
import java.util.*;
import java.io.*;

public class gameObject extends GameCanvas implements CommandListener,Runnable{
	
	Player player=null;					//player-player3,用于创建声音Player
	Player player1=null;
	Player player2=null;
	Player player3=null;
	myMIDlet a;									//类myMIDlet的对象
	Sprite sprite;							//人物精灵
	Command back;								//用于创建返回命令
	int x;											//X的值用于选择人物和Player
	Thread t;										//多线程
	int height;									//屏幕高度
	int width;									//屏幕宽度
	boolean gameover;						//判断游戏是否结束
	Graphics g;									//获得当前屏幕
	Image img;									//Image 用于创建人物图片和背景图片,箭头
	jiantou j;									//创建jiantou类的对象
	Image mm1;
	Image mm2;
	Image gg;
	Image o;
	//Image mm3;
	Image b;
	Image pass;
	Sprite p;
	long size;									//获得歌曲的长度,微秒为单位
	long nowsize;								//当前播放时间
	int all;										//歌曲长度转换为INT型
	int now;										//当前播放时间转换为INT型
	int score;									//得分
	Font f;											//字体设置
	int sleep;									//延时
	Image cool;
	Image miss;
	Sprite m;
	Sprite c;
	int scoreCool;							//COOL的累计
	int scoreMiss;							//MISS的累计



//构造函数用于初始化所有变量,得到相应资源
	
	public gameObject (myMIDlet g){
		super(false);
		setFullScreenMode(true);
		f=Font.getFont(Font.FACE_PROPORTIONAL,Font.STYLE_BOLD,Font.SIZE_LARGE);
		height=getHeight();
		width=getWidth();
		t=new Thread(this);
		back=new Command("返回",Command.BACK,1);
		addCommand(back);
		setCommandListener(this);
		a=g;
		InputStream is=getClass().getResourceAsStream("/sound/1.mid");			
		InputStream is1=getClass().getResourceAsStream("/sound/2.mid");					//	获得歌曲资源
		InputStream is2=getClass().getResourceAsStream("/sound/3.mid");
		InputStream is3=getClass().getResourceAsStream("/sound/4.mid");				
		try{
			o=Image.createImage("/image/o.png");
			miss=Image.createImage("/image/miss.png");
			cool=Image.createImage("/image/cool.png");
			pass=Image.createImage("/image/pass.png");
			b=Image.createImage("/image/back.png");
			gg=Image.createImage("/image/gg.png");						//获得图片资源
			mm1=Image.createImage("/image/mm1.png");
			mm2=Image.createImage("/image/mm2.png");
			//mm3=Image.createImage("/mm3.png");
			img=Image.createImage("/image/jiantou.png");
			player=Manager.createPlayer(is,"audio/midi");
			player1=Manager.createPlayer(is1,"audio/midi");
			player2=Manager.createPlayer(is2,"audio/midi");
			player3=Manager.createPlayer(is3,"audio/midi");
		}catch (Exception e){
			System.out.println(e.getMessage());
		}
		c=new Sprite(cool,69,29);
		m=new Sprite(miss,77,30);
		m.setPosition(-50,-50);					//创建相应资源
		c.setPosition(-50,-50);
		p=new Sprite(pass,75,12);
		p.setPosition(0,100);

	}
	
	//start函数用于判断不同人物,歌曲的创建。多线程的运行。
	public void start(int i){
		gameover=true;
		g=getGraphics();
		x=i;
		switch(x){		
			case 0:    		sleep=100;
										sprite=new Sprite(mm1,110,100);
										sprite.setPosition(100,50); 
								try {	
										player.prefetch();
										size=player.getDuration();
										all=(int)size/1000000;
										player.setLoopCount(1);
										player.start();
									}catch(Exception e){
										System.out.println(e.getMessage());
									}

									  break;
			case 1: 
										sleep=80;
										sprite=new Sprite(mm2,128,128);
										sprite.setPosition(100,10); 
									try{  
										player1.prefetch();
										size=player1.getDuration();
										all=(int)size/1000000;
										player.setLoopCount(1);
							      player1.start();
							    }catch (Exception e){
							    	System.out.println(e.getMessage());
							    }
							    
									 break;
			case 2: 
										sleep=60;
										sprite=new Sprite(mm1,110,100);
										sprite.setPosition(100,50); 
									try{	
										player2.prefetch();
										size=player2.getDuration();
										all=(int)size/1000000;
										player.setLoopCount(1);
										player2.start();
									}catch (Exception e){
										System.out.println(e.getMessage());
									}
									
							break;
			case 3: 			sleep=40;
										sprite=new Sprite(mm2,128,128);
										sprite.setPosition(100,10); 
									try{	
										player3.prefetch();
										size=player3.getDuration();
										all=(int)size/1000000;
										player.setLoopCount(1);
										player3.start();
									}catch(Exception e){
										System.out.println(e.getMessage());
									}
									
							break;
						}
		t.start();
						
				
		}
		
		//用于停止多线程
		public void stop(){

			gameover=false;
		
	}
		
		//多线程
		public void run(){
			j=new jiantou(this,img,23,23);
			j.init();
			while(gameover){
			  //input();
			  isPlay();
			  getTime();
				draw(g);		
				try{
					t.sleep(sleep);
				}catch(Exception e){
					System.out.println(e.getMessage());
				}
			}
			if(gameover==false){
				sprite=new Sprite(gg,140,128);
				while(true){
				stopDraw(g);
				try{
					t.sleep(100);
				}catch (Exception e){
					System.out.println(e.getMessage());
				}
			}
		}		
	}
		
	/*	public void input(){

			int Key;
			Key=getKeyStates();
			if((Key&LEFT_PRESSED)!=0){
				if(j.coll(p,0)==0){
				System.out.println(j.coll(p,0));
			}
		}
			if((Key&RIGHT_PRESSED)!=0){
				if(j.coll(p,1)==1){
				System.out.println(j.coll(p,1));
			}
		}
			if((Key&UP_PRESSED)!=0){
				if(j.coll(p,2)==2){
				System.out.println(j.coll(p,2));
			}
		}
			if((Key&DOWN_PRESSED)!=0){
				if(j.coll(p,3)==3){
				System.out.println(j.coll(p,3));
			}
		}
	}*/
		
		//用于控制人物的帧
		public void isPlay(){
			if(j.bull[0][2]>93){
				sprite.setFrame(0);
				m.setPosition(10,30);
				scoreMiss++;
			}
		}		
	
	
			//判断用户键盘输入(用于按下状态)
		public void keyPressed(int code){
			int Key;
			Key=getGameAction(code);
			if(Key==Canvas.LEFT){
				j.coll(p,0);
				if(j.b==false){
				c.setPosition(10,30);
				score+=10;
				scoreCool++;
				//System.out.println(j.c);
				j.init();
			}
		}
		if(Key==Canvas.RIGHT){
			j.coll(p,1);
			if(j.b==false){
				score+=10;
				c.setPosition(10,30);
				scoreCool++;
				//System.out.println(j.c);
				j.init();
			}
		}
		if(Key==Canvas.UP){
			j.coll(p,2);
			if(j.b==false){
				score+=10;
				c.setPosition(10,30);
				scoreCool++;
				//System.out.println(j.c);
				j.init();
			}
		}
		if(Key==Canvas.DOWN){
			j.coll(p,3);
			if(j.b==false){
				score+=10;
			  c.setPosition(10,30);
			  scoreCool++;
				//System.out.println(j.c);
				j.init();
			}
		}
						
	}
	
				//判断用户键盘输入(用于松开状态)
	public void keyReleased(int code){
			if(j.b==false){
				j.b=true;
			}
			c.setPosition(-50,-50);	
	}
	
	//用于获得歌曲当前时间
	public void getTime(){
		switch(x){
			case 0: nowsize=player.getMediaTime();
							now=(int)nowsize/1000000;
							//System.out.println(now);
							//System.out.println(all);
							if(all!=0){
								if(now==all){								
								stop();
							}
						}
							break;
			case 1: nowsize=player1.getMediaTime();
							now=(int)nowsize/1000000;
							if(all!=0){
								if(now==all){
								stop();
							}
						}
							break;
			case 2: nowsize=player2.getMediaTime();
							now=(int)nowsize/1000000;
							if(all!=0){
								if(now==all){
								stop();
							}
						}
							break;
			case 3: nowsize=player3.getMediaTime();
							now=(int)nowsize/1000000;
							if(all!=0){
								if(now==all){
								stop();
							}
							break;
						}
					}
				}
				
		//屏幕所有图像的绘制
		public void draw(Graphics g){
			g.setColor(255,255,255);
			g.fillRect(0,0,width,height);
			g.drawImage(b,0,0,0);
			g.setColor(255,145,53);
			g.setFont(f);
			g.drawString("分数"+score,width/2,height/2,0);
			g.drawString("总时间"+all+"秒",0,290,0);
			g.drawString("当前时间"+now+"秒",130,290,0);
			g.drawString("COOL:"+scoreCool,0,height/2,0);
			g.drawString("MISS:"+scoreMiss,0,height/2+20,0);
      sprite.paint(g);
      sprite.nextFrame();
			p.nextFrame();
      p.paint(g);
      c.paint(g);
      m.paint(g);
			j.updata();
			j.draw(g);
			flushGraphics();
		}
		
		//歌曲完后的屏幕的绘制
		public void stopDraw(Graphics g){
			g.setColor(255,255,255);
			g.fillRect(0,0,width,height);
			g.setColor(0,0,0);
			g.drawString("游戏结束,按返回键继续...",0,height/2+30,0);
			g.drawString("得分:"+score,width/2-30,260,0);
			g.drawString("MISS:"+scoreMiss,width/2-30,240,0);
			g.drawString("COOL:"+scoreCool,width/2-30,220,0);
			switch(x){
				
			case 0:	if(scoreCool>180){
							sprite.setPosition(50,50);
							sprite.paint(g);
						}else {
							g.drawImage(o,80,60,0);
							g.drawString("真遗憾~!",80,140,0);
						}
							break;
			case 1: if(scoreCool>200){
							sprite.setPosition(50,50);
							sprite.paint(g);
						}else {
							g.drawImage(o,80,60,0);
							g.drawString("真遗憾~!",80,140,0);
						}
							break;
			case 2: if(scoreCool>220){
							sprite.setPosition(50,50);
							sprite.paint(g);
						}else {
							g.drawImage(o,80,60,0);
							g.drawString("真遗憾~!",80,140,0);
						}
							break;
			case 3: if(scoreCool==0){
							sprite.setPosition(50,50);
							sprite.paint(g);
						}else {
							g.drawImage(o,80,60,0);
							g.drawString("真遗憾~!",80,140,0);
						}
							break;							
		
		}
		
			sprite.nextFrame();
			flushGraphics();
	}
			//监听用户命令		
	public void commandAction(Command c,Displayable d){
		if(c==back){
			switch(x){
								
			case 0:try {
						 //player.setMediaTime(size);
						 stop();
						 player.stop();
						}catch (Exception e){
							System.out.println(e.getMessage());
						}
						 player.close();
						 System.gc();
						 break;
			case 1:try {
						 //player1.setMediaTime(size);
						 stop();
						 player1.stop();
						}catch (Exception e){
							System.out.println(e.getMessage());
						}
						 player1.close();
						 System.gc();
			       break;
			case 2:try{
						 //player2.setMediaTime(size);
						 stop();
						 player2.stop();
						}catch(Exception e){
							System.out.println(e.getMessage());
						}
			       player2.close();
			       System.gc();
						 break;
			case 3:try{
						 //player3.setMediaTime(size);
						 stop();
				     player3.stop();
				    }catch(Exception e){
				    	System.out.println(e.getMessage());
				    }
			       player3.close();
			       System.gc();
			       break;
		}
		a.startMenu();
	}
}
}
		

⌨️ 快捷键说明

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