📄 knight.java
字号:
package cruise;
import java.util.*;
/**********类Knight,骑士漫游的主体,主要有前进后退等状态*/
public class Knight {
/****Attributes*/
Map chess = new Map(); /**chess,棋盘,Map类对象*/
int currentX,currentY; /**currentX,currentY表示当前行列*/
int step, /**step表示当前步数*/
next; /**next表示下一步*/
/**Knight()
* 功能:构造函数,初始化
* 参数返回值:无*/
public Knight()
{
do currentX=(int)(8*Math.random()); while(currentX==8);
do currentY=(int)(8*Math.random()); while(currentY==8);//初始位置随机获得
step=1;
chess.Path[currentX][currentY]=step;//将当前格设为第一步
}
/********Methods*/
/**Forward()
* 功能:向前走一步
* 参数:无
* 返回:成功返回true,若前面没有路返回false*/
boolean Forward()
{
chess.direction=true;//go ahead
next = chess.FindWay(currentX, currentY);//找最佳路径
if(next==-1)return false;//死路,返回false
currentX+=chess.horizontal[next];
currentY+=chess.vertical[next];//更新当前位置--向前走
step++;//步数+1
chess.Path[currentX][currentY]=step;//记录路径
chess.UpdatExit(currentX,currentY);//更新其它单元格出口数
return true;//向前走成功,返回true
}
/**Backward()
* 功能:向后走一步
* 参数:无
* 返回:无*/
void Backward()
{
chess.direction=false;//go backward
chess.Path[currentX][currentY]=0;//当前单元格设为"未走"
chess.UpdatExit(currentX,currentY);//更新其它临近单元格出口数
next=chess.FindWay(currentX, currentY, step);//找上一步位置
currentX+=chess.horizontal[next];
currentY+=chess.vertical[next];
chess.UpdateTried(currentX, currentY);//记录失败状态
}
/**MapPath()
* 功能:画出骑士走过的路径
* 参数:无
* 返回:无*/
void MapPath()
{
chess.PrintMap(chess.Path);
}
}//class Knight
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -