📄 npcsprite.java
字号:
/**********************************************************
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 + -