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

📄 game.java

📁 这是本人学习java2个月后写的游戏
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
import javax.microedition.lcdui.game.GameCanvas;
import javax.microedition.lcdui.Graphics;
import javax.microedition.lcdui.Image;
import javax.microedition.lcdui.game.TiledLayer;
import javax.microedition.lcdui.game.LayerManager;
import javax.microedition.lcdui.game.Sprite;
import java.util.Random;


public class Game extends GameCanvas implements Runnable{

	Main_MIDlet m;
//	Menu mn = new Menu(m,l);
	private int score = 0;
	private int life = 0;
	private int bnum = 0;
	private int snum = 0;
	private int time = 0;
	private int dietime = 0;
	private boolean beg=true;
	private boolean b=false;
	private int num = 0;
	private Random ra = null;
	private Random ra2 = null;
	private Random ra3 = null;
	private Random ra4 = null;
	Graphics g = null;
	Image img  = null;
	Image img1 = null;
	Image img2 = null;
	Image img3 = null;
	Image img4 = null;
	Image img5 = null;
	Image img6 = null;
	Image img7 = null;
	Image img8 = null;
	Image img9 = null;
	LayerManager lm = null;//层管理器
	TiledLayer tl = null;//地图贴图
	TiledLayer tl1 = null;
	int index = 0;
	private final int UP         = 0;//怪物向上运动
	private final int DOWN       = 1;//怪物向下运动
	private final int LEFT       = 2;//怪物向左运动
	private final int RIGHT      = 3;//怪物向右运动
//	int x1 = 128, y1 = 128;
//	int x2 = 96, y2 = 128;
//	int x3 = 128,y3 = 144;
//	int x4 = 96, y4 = 144;
	Sprite s = null;
	Sprite s1 = null;
	Sprite s2 = null;
	Sprite s3 = null;
	Sprite s4 = null;
	Sprite s5 = null;
	Sprite s6 = null;
	Sprite s7 = null;
	Sprite s8 = null;
	Sprite s9 = null;
	int direction = -1;
	int direction1 = 0;
	int direction2 = 0;
	int direction3 = 0;
	int direction4 = 0;
	int direction5 = 0;
	int direction6 = 0;
	int direction7 = 0;
	int direction8 = 0;
	int array[] = {//地图数组
			 5, 3, 3, 3, 3, 3, 3, 1, 3, 3, 3, 3, 3, 3, 13 ,
			 11, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 11 ,
			 11, 0, 18, 15, 0, 8, 0, 4, 0, 8, 0, 18, 15, 0, 11 ,
			 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11 ,
			 17, 13, 0, 12, 0, 0, 0, 0, 0, 0, 0, 12, 0, 16, 14 ,
			 0, 11, 0, 11, 0, 5, 0, 0, 0, 13, 0, 11, 0, 11, 0 ,
			 3, 14, 0, 4, 0, 11, 0, 0, 0, 11, 0, 4, 0, 17, 3 ,
			 0, 0, 0, 0, 0, 11, 0, 0, 0, 11, 0, 0, 0, 0, 0 ,
			 3, 13, 0, 8, 0, 17, 3, 3, 3, 14, 0, 8, 0, 16, 3 ,
			 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0 ,
			 16, 14, 0, 8, 0, 18, 3, 1, 3, 15, 0, 8, 0, 17, 13 ,
			 11, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 11 ,
			 10, 15, 0, 18, 3, 15, 0, 4, 0, 18, 3, 15, 0, 18, 9 ,
			 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11 ,
			 17, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 14 
			  };
	int array1[] ={
			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ,
			 0, 7, 7, 7, 7, 7, 7, 0, 7, 7, 7, 7, 7, 7, 0 ,
			 0, 7, 0, 0, 7, 0, 7, 0, 7, 0, 7, 0, 0, 7, 0 ,
			 0, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 0 ,
			 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0 ,
			 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0 ,
			 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0 ,
			 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0 ,
			 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0 ,
			 0, 0, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 0, 0 ,
			 0, 0, 7, 0, 7, 0, 0, 0, 0, 0, 7, 0, 7, 0, 0 ,
			 0, 7, 7, 7, 7, 7, 7, 0, 7, 7, 7, 7, 7, 7, 0 ,
			 0, 0, 7, 0, 0, 0, 7, 0, 7, 0, 0, 0, 7, 0, 0 ,
			 0, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 0 ,
			 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 
			 
	};
	
	public Game(Main_MIDlet m)
	{
		super(false);
		try
		{
			img = Image.createImage("/cutpic.png");//地图资源图片
			img1 = Image.createImage("/sprite.png");
			img2 = Image.createImage("/bigb.png");
			img3 = Image.createImage("/victery.png");
			img4 = Image.createImage("/fail.png");
			img5 = Image.createImage("/lives.png");
			img6 = Image.createImage("/score.png");
			img7 = Image.createImage("/pac.png");
			img8 = Image.createImage("/pacman.png");
			img9 = Image.createImage("/pacdie.png");
		}catch(Exception e)
		{
			System.out.println("Test load error");
		}
		ra = new Random();//实例化随机数对象
		ra2 = new Random();
		ra3 = new Random();
		ra4 = new Random();

		lm = new LayerManager();
		s = new Sprite(img8,16,16);
		s1 = new Sprite(img1,16,16);
		s2 = new Sprite(img1,16,16);
		s3 = new Sprite(img1,16,16);
		s4 = new Sprite(img1,16,16);
		s5 = new Sprite(img2,16,16);
		s6 = new Sprite(img2,16,16);
		s7 = new Sprite(img2,16,16);
		s8 = new Sprite(img2,16,16);
		s9 = new Sprite(img9,16,16);
		tl1 = new TiledLayer(15,15,img,16,16);
//		index = tl1.createAnimatedTile(6);
		tl = new TiledLayer(15,15,img,16,16);
		tl.setVisible(true);//设置地图贴图为可见
		int i = 0;
		for(int col = 0; col < 15;col++)
		{
			for(int row = 0; row < 15; row++)
			{
				tl.setCell(row, col, array[i]);//为贴图单元格中填充图片
				tl1.setCell(row, col, array1[i]);
				i ++ ;
			}
		}
		s9.setPosition(-16, 0);
		s.setFrame(9);
		s1.setFrame(0);
		s2.setFrame(4);
		s3.setFrame(8);
		s4.setFrame(12);
		s5.setPosition(16, 208);
		s6.setPosition(208, 208);
		s7.setPosition(208, 16);
		s8.setPosition(16, 16);
		s.setPosition(112, 144);
		s1.setPosition(128, 96);
		s2.setPosition(96, 96);
		s3.setPosition(128, 112);
		s4.setPosition(96, 112);
		lm.append(s9);
		lm.append(s);
		lm.append(s1);
		lm.append(s2);
		lm.append(s3);
		lm.append(s4);
		lm.append(s5);
		lm.append(s6);
		lm.append(s7);
		lm.append(s8);
		lm.append(tl1);
		lm.append(tl);
		setFullScreenMode(true);
		this.m = m;
		g = getGraphics();
		render(g);
		new Thread(this).start();
	}
	
//	public void begin(){
//		while(beg == true){
//			
//			s.setFrameSequence(new int[]{18,20});
//			s.move(-16, 0);
//			num ++;
//			if(num == 3){
//			beg = false;
//			}
//		}
//	}
	
	public int catchPac1(){
		if(b){
			if(s.getX()==s1.getX() && s.getY()>s1.getY()){
				direction2 = UP;
			}else if(s.getX()==s1.getX() && s.getY()<s1.getY()){
				direction2 = DOWN;
			}else if(s.getY()==s1.getY() && s.getX()>s1.getX()){
				direction2 = LEFT;
			}else if(s.getY()==s1.getY() && s.getX()<s1.getX()){
				direction2 = RIGHT;
			}	
			snum ++;
			if(snum > 12){
				snum=0;
				b=false;
			}
		}else{
			if(s.getX()==s1.getX() && s.getY()>s1.getY()){
				direction2 = DOWN;
			}else if(s.getX()==s1.getX() && s.getY()<s1.getY()){
				direction2 = UP;
			}else if(s.getY()==s1.getY() && s.getX()>s1.getX()){
				direction2 = RIGHT;
			}else if(s.getY()==s1.getY() && s.getX()<s1.getX()){
				direction2 = LEFT;
			}		
		}
		return direction2;
	}
	
	public int catchPac2(){
		if(b){
			if(s.getX()==s2.getX() && s.getY()>s2.getY()){
				direction4 = UP;
			}else if(s.getX()==s2.getX() && s.getY()<s2.getY()){
				direction4 = DOWN;
			}else if(s.getY()==s2.getY() && s.getX()>s2.getX()){
				direction4 = LEFT;
			}else if(s.getY()==s2.getY() && s.getX()<s2.getX()){
				direction4 = RIGHT;
			}
		}else{
			if(s.getX()==s2.getX() && s.getY()>s2.getY()){
				direction4 = DOWN;
			}else if(s.getX()==s2.getX() && s.getY()<s2.getY()){
				direction4 = UP;
			}else if(s.getY()==s2.getY() && s.getX()>s2.getX()){
				direction4 = RIGHT;
			}else if(s.getY()==s2.getY() && s.getX()<s2.getX()){
				direction4 = LEFT;
			}
		}
		return direction4;
	}
	
	public int catchPac3(){
		if(b){
			if(s.getX()==s3.getX() && s.getY()>s3.getY()){
				direction6 = UP;
			}else if(s.getX()==s3.getX() && s.getY()<s3.getY()){
				direction6 = DOWN;
			}else if(s.getY()==s3.getY() && s.getX()>s3.getX()){
				direction6 = LEFT;
			}else if(s.getY()==s3.getY() && s.getX()<s3.getX()){
				direction6 = RIGHT;
			}	
		}else{
			if(s.getX()==s3.getX() && s.getY()>s3.getY()){
				direction6 = DOWN;
			}else if(s.getX()==s3.getX() && s.getY()<s3.getY()){
				direction6 = UP;
			}else if(s.getY()==s3.getY() && s.getX()>s3.getX()){
				direction6 = RIGHT;
			}else if(s.getY()==s3.getY() && s.getX()<s3.getX()){
				direction6 = LEFT;
			}	
		}
		return direction6;
	}
	
	public int catchPac4(){
		if(b){
			if(s.getX()==s4.getX() && s.getY()>s4.getY()){
				direction8 = UP;
			}else if(s.getX()==s4.getX() && s.getY()<s4.getY()){
				direction8 = DOWN;
			}else if(s.getY()==s4.getY() && s.getX()>s4.getX()){
				direction8 = LEFT;
			}else if(s.getY()==s4.getY() && s.getX()<s4.getX()){
				direction8 = RIGHT;
			}		
		}else{
			if(s.getX()==s4.getX() && s.getY()>s4.getY()){
				direction8 = DOWN;
			}else if(s.getX()==s4.getX() && s.getY()<s4.getY()){
				direction8 = UP;
			}else if(s.getY()==s4.getY() && s.getX()>s4.getX()){
				direction8 = RIGHT;
			}else if(s.getY()==s4.getY() && s.getX()<s4.getX()){
				direction8 = LEFT;
			}		
		}
		return direction8;
	}
	
	public void input()
	{
		int keyState = getKeyStates();
		
		if((keyState & LEFT_PRESSED) != 0)
		{	
			if(direction != LEFT){
				direction = LEFT;
	        	s.setFrameSequence(new int[]{9,10,11});
	        }			
		}else if((keyState & UP_PRESSED) != 0)
		{
			if(direction != UP){
				direction = UP;
	    		s.setFrameSequence(new int[]{6,7,8});
	    	}
		}else if((keyState & DOWN_PRESSED) != 0)
		{
			if(direction != DOWN){
				direction = DOWN;
	        	s.setFrameSequence(new int[]{0,1,2});
	        	}
		}else if((keyState & RIGHT_PRESSED) != 0)
		{
			if(direction != RIGHT){
				direction = RIGHT;
	        	s.setFrameSequence(new int[]{3,4,5});
	        }
		}
		switch(direction){
    	case UP://小球向上运动
//    		if(direction != UP){
//    		s.setFrameSequence(new int[]{16,20});
//    		}
    		s.nextFrame();

        	s.move(0, -16);
            break;
        case DOWN://小球向下运动
//        	if(direction != DOWN){
//        	s.setFrameSequence(new int[]{17,20});
//        	}
        	s.nextFrame();

        	s.move(0, 16);
            break;
        case LEFT://小球向左运动
//        	if(direction != LEFT){
//        	s.setFrameSequence(new int[]{18,20});
//        	}
        	s.nextFrame();

        	s.move(-16, 0);
        	if(s.getX()<0){
				s.setPosition(224, 112);
			}
            break;
        case RIGHT://小球向右运动
//        	if(direction != RIGHT){
//        	s.setFrameSequence(new int[]{19,20});
//        	}
        	s.nextFrame();
        	s.move(16, 0);
        	if(s.getX()>224){
				s.setPosition(0, 112);
			}
            break;
    	}
		if(s.collidesWith(tl, true)){
			switch(direction){
        	case UP://小球向上运动
            	s.move(0, 16);
                break;
            case DOWN://小球向下运动
            	s.move(0, -16);
                break;
            case LEFT://小球向左运动         
            	s.move(16, 0);
                break;
            case RIGHT://小球向右运动
            	s.move(-16, 0);
                break;
        	}
		}
		if(s.collidesWith(tl1, true)){
			tl1.setCell(s.getX()/16, s.getY()/16, 0);
			score +=10;
			bnum ++;
//			System.out.println(s.getX()+","+s.getY());
		}
		if(s.collidesWith(s1, false) || s.collidesWith(s2, false) || s.collidesWith(s3, false) || s.collidesWith(s4, false)){
			life ++;
			s9.setPosition(s.getX(), s.getY());
			dietime = 1;
//			if(dietime == 11){
//				s.setPosition(112, 144);
//				dietime = 0;
//			}
		}
//		if(s.collidesWith(s2, false)){
//			life ++;
//			s.setPosition(112, 144);
//		}
//		if(s.collidesWith(s3, false)){
//			life ++;
//			s.setPosition(112, 144);
//		}
//		if(s.collidesWith(s4, false)){
//			life ++;
//			s.setPosition(112, 144);
//		}		
		if(s.collidesWith(s5, false)){
			s5.setPosition(0, 0);
			lm.remove(s5);
			score +=40;
			b = true;
		}
		if(s.collidesWith(s6, false)){
			s6.setPosition(0, 0);
			lm.remove(s6);
			score +=40;
//			b = true;
		}
		if(s.collidesWith(s7, false)){
			s7.setPosition(0, 0);
			lm.remove(s7);
			score +=40;
			b = true;
		}
		if(s.collidesWith(s8, false)){
			s8.setPosition(0, 0);
			lm.remove(s8);
			score +=40;	
			b = true;
		}

⌨️ 快捷键说明

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