和
MoveArea byte tempbyte; tempbyte= SelectArea[0];
SelectArea[0]=MoveArea[0]; MoveArea[0]=tempbyte; tempbyte= SelectArea[1];
SelectArea[1]=MoveArea[1]; MoveArea[1]=tempbyte; this.selected = false;
repaint(); } 增 加 处 理 悔 棋 的 按 钮 : HuaRongDaoMidlet.java:
private final static Command CMD_UNDO = new Command("上一步", Command.SCREEN, 1);
...... else if (c == CMD_UNDO) { //
“
”
处理 上一步 logic.unMove(); }
...... 注意:A.在 NetBeans 当中,有许多方便的按钮,当编辑代码的时候,代码编
辑区上面的最右边有两个注释和反注释的按钮,和 VS 的功能一样,只是没有 /*
*/形式的注释,还有缩进反缩进等按钮,编辑很方便,而且当函数参数输入完成后,直
接按";"就可以自动在行尾加入分号。同样,可以 加入标签: BookMark,使得快速
回到上一个位置成为可能。 B.NetBeans 把搜索也加到这个工具栏里面,可以搜索,
标记,非常方便。 (2).改变移动方式,程序提供的移动方块的方式非常难操作,
我希望能够点一下方块他就智能地自己寻找能够移动的位置。这里还有一点需要注意,就
是不能绕弯,也就是 A-B-A-B 这样来回走,如果还有其他走法,因此算法中加入了许多
判断,但是比原来的代码要简单清晰易懂,操作也比原来简单多了。 代码如下:
public class ControlLogic extends Canvas implements CommandListener { public
static final byte DIRECTION_UP = (byte) '1'; // 方 向 常 量 public static final byte
DIRECTION_DOWN = (byte) '2'; // 方 向 常 量 public static final byte
DIRECTION_LEFT = (byte) '3'; // 方 向 常 量 public static final byte
DIRECTION_RIGHT = (byte) '4'; // 方 向 常 量 private byte[] currentCursor = new
byte[4]; // 当 前 光 标 所 在 位 置 , 四 个 参 数 分 别 是 X,Y,width,height. private byte[]
nextCursor= new byte[4]; //要移动到的位置的光标区域,参数同上. private Map MyMap
= new Map();//地图类 private int level;//当前的关 public int moves=0;//所用的步
数 . private History history = new History(); public boolean isWin=false;
public ControlLogic(int gameLevel) {// 构 造 函 数 try { this.level =
gameLevel; isWin=false; nbInit();//NetBeans 定义的初始化函数 }
catch (Exception e) { e.printStackTrace(); } } private void
Init_game() { //初始化游戏,读取地图,设置选择区域,清空要移动到的区域
this.currentCursor = MyMap.read_map(this.level);//读取地图文件,并返回光标的初始位置
//0 为水平位置,1 为竖直位置, 2 为宽,3 为高. nextCursor[0]=currentCursor[0]; //初始
化
要
移
动
到
的
区
域
nextCursor[1]=currentCursor[1];
nextCursor[2]=currentCursor[2]; nextCursor[3]=currentCursor[3]; } private void
nbInit() throws Exception { //NetBeans 定义的初始化函数 //初始化实例变
量 Images.init();//初始化图片常量 Init_game();//初始化游戏,读取地图,设置
选择区域,清空要移 }