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

📄 npcsprite.java

📁 利用J2ME复刻FC经典RPG游戏<<重装机兵>>,基本实现了 该游戏的所有功能,如碰撞探测,地图转换,NPC对话,商店处理, 事件处理,横版回合制战斗系统,随机遇敌,并根
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
/**********************************************************

 File name:NpcSprite.java

 Author:夏文涛

 Version:Beta1.0

 Data:2007/10/16

 Description:

    Npc的位置设置及移动和对话处理

 Function List:

    1.setFrame(int)  根据方向设置Npc的动画数组

    2.moveUp()       Npc向上移动

    3.moveDown()     Npc向下移动

    4.moveLeft()     Npc向左移动

    5.moveRight()    Npc向右移动

    6.talk(Graphics) Npc对话

 *********************************************************/

package com.Izual.MetalMax;

import javax.microedition.lcdui.Graphics;
import javax.microedition.lcdui.Image;
import javax.microedition.lcdui.game.Sprite;
import java.util.*;

public class NpcSprite extends Sprite implements IData{

	private int npcID; /*Npc的编号*/

	private int mapID; /*地图编号*/

	private int npcSpeed = 2; /*Npc移动速度*/

	/*Npc四方向动画数组*/
	private int nowdown[]= {1};
	private int nowleft[]= {2};
	private int nowright[]={3};
	private int nowup[]  = {0};

	/*构造函数,根据地图编号和Npc编号设置不同的Npc*/
	public NpcSprite(Image img,int w,int h,int mapID,int npcID) {
		// TODO 自动生成构造函数存根
		super(img,w,h);
		this.mapID = mapID;
		this.npcID = npcID;

		/*根据地图编号和Npc编号设置Npc不同的位置的朝向*/
		switch(mapID){

		case WORLD_MAP:


			break;

		case LADUO_MAP:		

			switch(npcID){

			case 0:

				setPosition(15*16,12*16);
				setFrame(UP);

				break;

			case 1:

				setPosition(6*16,6*16);
				setFrame(UP);

				break;

			case 2:

				setPosition(3*16,12*16);
				setFrame(LEFT);

				break;

			case 3:

				setPosition(15*16,6*16);
				setFrame(UP);

				break;

			case 4:

				setPosition(20*16,7*16);
				setFrame(UP);
				break;
			}
			break;

		case ZHUJUE_2F_MAP:		

			switch(npcID){

			case 0:

				setPosition(7*16,9*16);
				setFrame(RIGHT);

				break;

			case 1:

				setPosition(9*16,9*16);
				setFrame(DOWN);

				break;

			}
			break;

		case ZHUJUE_1F_MAP:		

			switch(npcID){

			case 0:

				setPosition(10*16,11*16);
				setFrame(DOWN);

				break;

			case 1:

				setPosition(15*16,10*16);
				setFrame(UP);

				break;

			case 2:

				setPosition(6*16,4*16);
				setFrame(DOWN);

				break;

			case 3:

				setPosition(8*16,4*16);
				setFrame(DOWN);

				break;

			case 4:

				setPosition(7*16,8*16);
				setFrame(UP);

				break;
			}
			break;

		case LADUO_SHANGJIN_MAP:

			switch(npcID){

			case 0:

				setPosition(5*16,9*16);
				setFrame(UP);

				break;

			case 1:

				setPosition(11*16,8*16);
				setFrame(UP);

				break;

			case 2:

				setPosition(3*16,4*16);
				setFrame(LEFT);

				break;

			case 3:

				setPosition(10*16,3*16);
				setFrame(UP);

				break;

			case 4:

				setPosition(10*16,5*16);
				setFrame(DOWN);

				break;
			}
			break;

		case LADUO_HEROITEM_MAP:


			switch(npcID){

			case 0:

				setPosition(3*16,7*16);
				setFrame(UP);

				break;

			case 1:

				setPosition(8*16,8*16);
				setFrame(LEFT);

				break;

			case 2:

				setPosition(3*16,5*16);
				setFrame(UP);

				break;

			case 3:

				setPosition(9*16,5*16);
				setFrame(UP);

				break;

			case 4:

				break;
			}
			break;

		case LADUO_BAR_MAP:

			switch(npcID){

			case 0:

				setPosition(3*16,8*16);
				setFrame(DOWN);

				break;

			case 1:

				setPosition(5*16,8*16);
				setFrame(DOWN);

				break;

			case 2:

				setPosition(7*16,7*16);
				setFrame(UP);

				break;

			case 3:

				setPosition(4*16,6*16);
				setFrame(UP);

				break;

			case 4:

				setPosition(11*16,4*16);
				setFrame(UP);

				break;
			}
			break;

		case LADUO_INN_MAP:

			switch(npcID){

			case 0:

				setPosition(1*16,14*16);
				setFrame(RIGHT);

				break;

			case 1:

				setPosition(5*16,11*16);
				setFrame(LEFT);

				break;

			case 2:

				setPosition(10*16,12*16);
				setFrame(UP);

				break;

			case 3:

				setPosition(4*16,9*16);
				setFrame(UP);

				break;

			case 4:

				break;
			}
			break;

		case LADUO_CHUANSONG_MAP:

			switch(npcID){

			case 0:

				setPosition(5*16,12*16);
				setFrame(UP);

				break;

			case 1:

				break;

			case 2:

				break;

			case 3:

				break;

			case 4:

				break;
			}
			break;

		case LADUO_MINGQI_MAP:

			switch(npcID){

			case 0:

				setPosition(8*16,8*16);
				setFrame(UP);

				break;

			case 1:

				setPosition(2*16,3*16);
				setFrame(DOWN);

				break;

			case 2:

				setPosition(15*16,5*16);
				setFrame(UP);

				break;

			case 3:

				break;

			case 4:

				break;
			}
			break;

		default:

			break;
		}


	}

	/*根据方向设置Npc的动画数组*/
	public void setFrame(int dir){

		if(dir == UP){

			setFrameSequence(nowdown);
			nextFrame();
		}
		if(dir == DOWN){

			setFrameSequence(nowup);
			nextFrame();
		}
		if(dir == LEFT){

			setFrameSequence(nowright);
			nextFrame();
		}
		if(dir == RIGHT){

			setFrameSequence(nowleft);
			nextFrame();
		}

	}

	/*Npc向上移动*/
	public void moveUp(){

		setFrameSequence(nowup);
		move(0,-npcSpeed);
	}

	/*Npc向下移动*/
	public void moveDown(){

		setFrameSequence(nowdown);
		move(0,npcSpeed);
	}

	/*Npc向左移动*/
	public void moveLeft(){

		setFrameSequence(nowleft);
		move(-npcSpeed,0);
	}

	/*Npc向右移动*/
	public void moveRight(){

		setFrameSequence(nowright);
		move(npcSpeed,0);
	}

	/*Npc对话处理,根据不同的地图编号,设置不同Npc的对话内容*/

⌨️ 快捷键说明

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