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

📄 mc.java

📁 java写的2.5D忍者游戏..涉及到深度缓冲技术...可控制玩家攻击,和npc的AI,碰撞等等
💻 JAVA
字号:
import java.io.IOException;

import javax.microedition.lcdui.Canvas;
import javax.microedition.lcdui.Graphics;
import javax.microedition.lcdui.Image;

public class MC extends Canvas implements Runnable 
{
	PL pl;
	
	Image im;
	int [][] pd;
	int [] fs;
	int x,y,z;
	boolean left,down,right,up;
	int cx,cy;
	boolean ig;
	int zz;
	BiaoManager bm;
	

	Image yin;
	BG bg;
	NPCManager nm;
	
	ZBuf zb;
	int vx;
	
	
	
	public static final int CW = 176;
	public static final int CH = 208;
	public static final int KEY_UP = -1;
	public static final int KEY_DOWN = -2;
	public static final int KEY_LEFT = -3;
	public static final int KEY_RIGHT = -4;
	public static final int KEY_FIRE = -5;
	
	
	public MC()
	{
		zb = new ZBuf ();
		bg = new BG();
		try {
			im = Image.createImage( "/player.png");
			yin = Image.createImage( "/ying.png");
		} catch (IOException e) {
			// TODO 自动生成 catch 块
			e.printStackTrace();
		}
		pd = new int[][]{{0,0,35,46     , 18 , 46},
				{35,0,35,42    , 18 , 41},
				{70,0,48,36    , 24 , 36},
				{118,0,55,35   , 26 , 36},
				{173,0,43,36   , 21 , 36},
				{216,0,57,41   , 28 , 41},
				{0, 46,44,49   , 22 , 49},
				{44,42,30,53   , 15 , 53},
				{74,36,31,29   , 15 , 29},
				{105,35,30,50  , 15 , 50},
				{135,36,50,50  , 25 , 50},
				{185,42,32,39  , 16 , 39},
				{217,42,41,47  , 20 , 47},
				{258,42,40,44  , 20 , 44},
				{0,95,38,38    , 19 , 39},
				{38,95,42,28   , 21 , 28},
				{90,86,51,21   , 25 , 21},
				{141,86,39,32  , 19 , 32},
				{180,86,28,45  , 14 , 45},
				{208,89,38,39  , 19 , 39},
				{246,89,36,58  , 18 , 58},
				{0, 133,28,55  , 14 , 55},
				{28,133,38,47  , 19 , 47},
				{66,122,30,59  , 14 , 55},
				{96,110,21,58 , 10 , 54},
				{117,122,29,55 ,14 , 55},
				{146,122,32,45 , 16 , 45},
				{180,134,35,54 , 18 , 53}, 
				{216,147,49,41 , 25 , 41},
				{0,0,0,0,0,0}};
		fs = new int[]{0,0,0,1,1,1};
		x = 20;
		z = 150;
		pl = new PL(im,pd,fs,x,y,z);
		ig = true;
		bm = new BiaoManager(10);
		vx = 7;
		nm = new NPCManager(20);
		this.setFullScreenMode( true);
		Thread  t = new Thread (this);
		t.start() ;
		
	}
	protected void paint(Graphics g) 
	{
		g.setColor( 0xffffff);
		g.fillRect( 0,0,500,500);
		
		g.setColor( 0x00ffff);
		g.fillRect( 0,110,176,98);
		
		bg.render1( g,cx,cy); //绘制下半部分地面
		
		bg.render5( g,cx,cy); //绘制上半部分背景
		bg.render7( g,cx,cy); //绘制月亮
		
		

		zb.render( g,this);
		bm.render( g,cx,cy);
		bg.render6( g,cx,cy);

		g.fillRect(25 , 18 , 75 , 7) ;
		g.setColor(0xff0000) ;
		g.drawRect(25 , 18 , 75 , 7) ;
		g.fillRect(25 , 18 , pl.hp*5 , 7) ;
	
		
		g.setColor(0x123456) ;
		g.drawString("HP:" , 5 , 15 , 0) ;
		
	
		g.setColor( 0x000000);
		g.fillRect( 176,0,500,500);
		g.fillRect( 0,208,500,500);
		
	}
	
	public void run()
	{
		while (true)
		{
			pl.upData( up,down,left,right,this);
			nm.upData( this);
			zb.upData( this);
			bm.upData(this) ;
			
			
			
			repaint();
			try {
				Thread.sleep( 50);
			} catch (InterruptedException e) {
				// TODO 自动生成 catch 块
				e.printStackTrace();
			}
		}
	}
	public void keyPressed(int k)
	{
		if (k == KEY_UP)
		{
			up = down = left = right =false;
			up = true;
			pl.setfs( new int[]{2, 2, 3, 3, 4, 4, 5, 5});
		}
		if (k == KEY_DOWN)
		{
			up = down = left = right =false;
			down = true;
			pl.setfs( new int[]{2, 2, 3, 3, 4, 4, 5, 5});
		}
		if (k == KEY_LEFT)
		{
			vx = -7;
			up = down = left = right =false;
			left = true;
			pl.f = true;
			pl.setfs( new int[]{2, 2, 3, 3, 4, 4, 5, 5});
		}
		if (k == KEY_RIGHT)
		{
			vx = 7;
	
			up = down = left =false ;
			right = true;
			pl.f = false;

			pl.setfs( new int[]{2, 2, 3, 3, 4, 4, 5, 5});
	
			
		}
		if (k == 49 && pl.m != 1 )
		{
			up = down = left = right =false;
			
				pl.m = 1;
				pl.vy = -15;

				pl.setfs(new int[]{8,8,8,7,7,6,6,6,6,6,6,8,8});
			
			
		}
		if (zz < 3&&k == 50&&pl.m != 2 ) //玩家普通攻击
		{
			pl.m = 2;
			pl.n =5;
			pl.setfs(new int[]{12,12,12,13,13,13});
			zz++;
			
		}
		if (zz >= 3&& k == 50&&pl.m != 2) //玩家连续技能
		{
			pl.m = 2;
			zz = -1;
			pl.n =5;

			pl.setfs(new int[]{20,20,20,21,21,21,22,22,22});
		}
		
		if (k == 51)  //发镖
		{
			bm.create( pl,pl.x+3,pl.z-18+pl.y,vx);
			pl.setfs(new int[]{28});
			pl.m = 3;
			pl.n = 8;
		}
	}
	public void keyReleased(int k)
	{
		if (k == KEY_UP)
		{
			up = false;
			
			if(up == false && down == false && left == false && right == false && pl.m == 0 )//当上,下,左,右全都没按下时,动画为站立动画
			{
				pl.setfs(new int[]{0 , 0 , 0 , 0 , 1}) ;
			}
			
		}
		if (k == KEY_DOWN)
		{
			down = false;
			
			if(up == false && down == false && left == false && right == false && pl.m == 0 )//当上,下,左,右全都没按下时,动画为站立动画
			{
				pl.setfs(new int[]{0 , 0 , 0 , 0 , 1}) ;
			}
			
		}
		if (k == KEY_LEFT)
		{
			
			left = false;
			
			if(up == false && down == false && left == false && right == false && pl.m == 0 )//当上,下,左,右全都没按下时,动画为站立动画
			{
				pl.setfs(new int[]{0 , 0 , 0 , 0 , 1}) ;
			}
		}
		if (k == KEY_RIGHT)
		{
			
			right = false;
			
			if(up == false && down == false && left == false && right == false && pl.m == 0 )//当上,下,左,右全都没按下时,动画为站立动画
			{
				pl.setfs(new int[]{0 , 0 , 0 , 0 , 1}) ;
			}
		}
		
	}
	
}

⌨️ 快捷键说明

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