用NetBeans平台开发J2ME游戏实例讲解2

极度暧昧

极度暧昧

2016-02-19 13:37

最近很多朋友喜欢上设计,但是大家却不知道如何去做,别担心有图老师给你解答,史上最全最棒的详细解说让你一看就懂。
(3).建立Draw类用来显示图形:
  
  public class Draw {
  
  /** Creates a new instance of Draw */
  
  public Draw(Canvas canvas) {
  
  }
  
  public static boolean paint(Graphics g, byte img, int x, int y) {
  
  //在地图的x,y点绘制img指定的图片
  
  try {
  
  paint(g, img, x, y, Images.UNIT);//把地图x,y点转化成画布的绝对坐标,绘图
  
  return true;
  
  }
  
  catch (Exception ex) {
  
  return false;
  
  }
  
  }
  
  public static boolean paint(Graphics g, byte img, int x, int y, int unit) {
  
  try {
  
  switch (img) {
  
  case Images.CAOCAO://画曹操
  
  //变成绝对坐标,并做调整
  
  g.drawImage(Images.image_Caocao, Images.LEFT + x * unit,
  
  Images.TOP + y * unit,Graphics.TOP Graphics.LEFT);
  
  break;
  
  case Images.GUANYU://画关羽
  
  g.drawImage(Images.image_Guanyu, Images.LEFT + x * unit,
  
  Images.TOP + y * unit,Graphics.TOP Graphics.LEFT);
  
  break;
  
  case Images.HUANGZHONG://画黄忠
  
  g.drawImage(Images.image_Huangzhong, Images.LEFT + x * unit,
  
  Images.TOP + y * unit,Graphics.TOP Graphics.LEFT);
  
  break;
  
  case Images.MACHAO://画马超
  
  g.drawImage(Images.image_Machao, Images.LEFT + x * unit,
  
  Images.TOP + y * unit, Graphics.TOP Graphics.LEFT);
  
  break;
  
  case Images.ZHANGFEI://画张飞
  
  g.drawImage(Images.image_Zhangfei, Images.LEFT + x * unit,
  
  Images.TOP + y * unit,Graphics.TOP Graphics.LEFT);
  
  break;
  
  case Images.ZHAOYUN://画赵云
  
  g.drawImage(Images.image_Zhaoyun, Images.LEFT + x * unit,
  
  Images.TOP + y * unit,
  
  Graphics.TOP Graphics.LEFT);
  
  break;
  
  case Images.ZU://画卒
  
  g.drawImage(Images.image_Zu, Images.LEFT + x * unit,
  
  Images.TOP + y * unit, Graphics.TOP Graphics.LEFT);
  
  break;
  
  case Images.BLANK://画空白
  
  g.drawImage(Images.image_Blank, Images.LEFT + x * unit,
  
  Images.TOP + y * unit, Graphics.TOP Graphics.LEFT);
  
  break;
  
  case Images.CURSOR://画光标
  
  g.drawRect(Images.LEFT + x * unit,
  
  Images.TOP + y * unit,Images.UNIT,Images.UNIT);
  
  break;
  
  }
  
  return true;
  
  }catch (Exception ex) {
  
  return false;
  
  }
  
  }
  
  }
  
  (4)建立Map类来读取布局信息:
  
  
  package HuaRongDao;
  
  import Java.io.InputStream;
  
  import javax.microedition.lcdui.*;
  
  /**
  
  *
  
  * @author lin
  
  */
  
  public class Map {
  
  //处理游戏的地图,负责从外部文件加载地图数据,存放地图数据,并按照地图数据绘制地图
  
  public byte Grid[][];//存放地图数据
  
  public Map() {//构造函数,负责初始化地图数据的存储结构
  
  this.Grid = new byte[Images.HEIGHT][Images.WIDTH];
  
  //用二维数组存放地图数据,注重第一维是竖直坐标,第二维是水平坐标
  
  }
  
  public int[] read_map(int i) {
  
  //从外部文件加载地图数据,并存放在存储结构中,返回值是光标点的位置
  
  //参数是加载地图文件的等级
  
  int[] a = new int[2];//光标点的位置,0是水平位置,1是竖直位置
  
  try {
  
  InputStream is = getClass().getResourceAsStream("/levels/level".concat(String.valueOf(i)));
  
  if (is != null) {
  
  for (int k = 0; k Images.HEIGHT; k++) {
  
  for (int j = 0; j Images.WIDTH; j++) {
  
  this.Grid[k][j] = (byte) is.read();
  
  if ( this.Grid[k][j] == Images.CURSOR ) {
  
  //判定出光标所在位置
  
  a[0] = j;//光标水平位置
  
  a[1] = k;//光标竖直位置
  
  this.Grid[k][j] = Images.BLANK;//将光标位置设成空白背景
  
  }
  
  }
  
  is.read();//读取回车(13),忽略掉
  
  is.read();//读取换行(10),忽略掉
  
  }
  
  is.close();
  
  }else {
  
  //读取文件失败
  
  a[0] = -1;
  
  a[1] = -1;
  
  }
  
  }catch (Exception ex) {
  
  //打开文件失败
  
  a[0] = -1;
  
  a[1] = -1;
  
  }
  
  return a;
  
  }
  
  public boolean draw_map(Graphics g) {
  
  //调用Draw类的静态方法,绘制地图
  
  try {
  
  for (int i = 0; i Images.HEIGHT; i++) {
  
  for (int j = 0; j Images.WIDTH; j++) {
  
  Draw.paint(g, this.Grid[i][j], j, i);//绘制地图
  
  }
  
  }
  
  return true;
  
  }catch (Exception ex) {
  
  return false;
  
  }
  
  }
  
  }
  
  注重这里的读文件操作的文件位置同样是相对于res文件夹的。
  
  (5) 建立主逻辑控制:
  
  package HuaRongDao;
  
  /**
  
  *
  
  * @author lin
  
  */
  
  import javax.microedition.lcdui.*;
  
  public class ControlLogic extends Canvas implements CommandListener {
  
  private int[] loc = new int[2]; //光标的当前位置,0是水平位置,1是竖直位置
  
  private int[] SelectArea = new int[4];//被选定的区域,即要移动的区域
  
  private int[] MoveArea = new int[4];//要移动到的区域
  
  private Map MyMap = new Map();//地图类
  
  private boolean selected;//是否已经选中要移动区域的标志
  
  private int level;//当前的关
  
  public ControlLogic() {//构造函数
  
  try {
  
  jbInit();//JBuilder定义的初始化函数
  
  }catch (Exception e) {
  
  e.printStackTrace();
  
  }
  
  }
  
  private void Init_game(){
  
  //初始化游戏,读取地图,设置选择区域,清空要移动到的区域
  
  this.loc = MyMap.read_map(this.level);//读取地图文件,并返回光标的初始位置
  
  //0为水平位置,1为竖直位置
  
  this.SelectArea[0] = this.loc[0];//初始化选中的区域
  
  this.SelectArea[1] = this.loc[1];
  
  this.SelectArea[2] = 1;
  
  this.SelectArea[3] = 1;
  
  this.MoveArea[0] = -1;//初始化要移动到的区域
  
  this.MoveArea[1] = -1;
  
  this.MoveArea[2] = 0;
  
  this.MoveArea[3] = 0;
  
  }
  
  private void jbInit() throws Exception {//JBuilder定义的初始化函数
  
  //初始化实例变量
  
  this.selected = false;//设置没有被选中的要移动区域
  
  this.level = 1;
  
  Images.init();//初始化图片常量
  
  Init_game();//初始化游戏,读取地图,设置选择区域,清空要移动到的区域
  
  //setCommandListener(this);//添加命令监听,这是Displayable的实例方法
  
  //addCommand(new Command("", Command.EXIT, 1));//添加“退出”按钮
  
  }
  
  public void commandAction(Command command, Displayable displayable) {
  
  //命令处理函数
  
  if (command.getCommandType() == Command.EXIT) {//处理“退出”
  
  //HuaRongDaoMidlet.quitApp();
  
  }
  
  }
  
  protected void paint(Graphics g) {
  
  //画图函数,用于绘制用户画面,即显示图片,勾画选中区域和要移动到的区域
  
  try {
  
  g.drawImage(Images.image_Frame, 0, 0,Graphics.TOP Graphics.LEFT);//画背景
  
  MyMap.draw_map(g);//按照地图内容画图
  
  if ( this.selected )
  
  g.setColor(0,255,
展开更多 50%)
分享

猜你喜欢

用NetBeans平台开发J2ME游戏实例讲解2

编程语言 网络编程
用NetBeans平台开发J2ME游戏实例讲解2

用NetBeans平台开发J2ME游戏实例讲解3

编程语言 网络编程
用NetBeans平台开发J2ME游戏实例讲解3

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

用NetBeans平台开发J2ME游戏实例讲解1

编程语言 网络编程
用NetBeans平台开发J2ME游戏实例讲解1

J2ME游戏开发实例讲解

编程语言 网络编程
J2ME游戏开发实例讲解

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

J2ME游戏开发实例讲解04

编程语言 网络编程
J2ME游戏开发实例讲解04

J2ME游戏开发实例讲解02

编程语言 网络编程
J2ME游戏开发实例讲解02

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

(CSS Frameworks) CSS框架相关的汇总

(CSS Frameworks) CSS框架相关的汇总

2.11 浅析ASP内置组件

2.11 浅析ASP内置组件
下拉加载更多内容 ↓