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

📄 knight.java

📁 java遍历8*8棋盘源代码 运用哈密顿回路遍历
💻 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 + -