摸鱼也摸鱼之求解马踏棋盘

地址

益智游戏网-马踏棋盘 (yzyx.info)

方案

1.新建文件夹Horse

2.打开Horse,新建脚本文件horse.js,内容如下

"use strict";

let map = [];
let over = false;
let direct = [
	[1, 2],
	[-1, 2],
	[1, -2],
	[-1, -2],
	[2, 1],
	[-2, 1],
	[2, -1],
	[-2, -1]
];

function initMap() {
	map = [];
	for (let i = 0; i < 8; i++) {
		map.push([]);
		for (let j = 0; j < 8; j++) {
			map[i].push(0);
		}
	}
}

function nextCount(i, j) {
	let c = 0;
	for (let k = 0; k < 8; k++) {
		let x = i + direct[k][0];
		let y = j + direct[k][1];
		if (x < 0 || y < 0 || x >= 8 || y >= 8) {
			continue;
		}

		if (map[i][j] == 0) {
			c++;
		}
	}
	return c;
}

function bfs(i, j, num) {

	if (map[i][j] != 0) {
		return;
	}

	map[i][j] = num;

	if (num >= 64) {
		over = true;
		return;
	}

	let nextPos = [];

	for (let k = 0; k < 8; k++) {
		let x = i + direct[k][0];
		let y = j + direct[k][1];
		if (x < 0 || y < 0 || x >= 8 || y >= 8) {
			continue;
		}
		if (map[x][y] != 0) {
			continue;
		}
		let c = nextCount(x, y);

		nextPos.push({
			pos: [x, y],
			c: c
		});
	}

	nextPos.sort((p1, p2) => {
		return p1.c - p2.c
	});

	for(let k=0;k= 8 || y >= 8) {
			continue;
		}
		bfs(x,y,num+1);
		if(over){
			break;
		}else{
			map[x][y]=0;
		}
	}
}

document.oncontextmenu=(e)=>{
	e.preventDefault();
	
	over=false;
	initMap();
	bfs(0,0,1);
	
	
	let cells=[];
	for(let i=0;i<64;i++){
		cells.push(document.querySelector("#cell"+i));
	}
	
	for(let i=1;i<=64;i++){
		let flag=false;
		for(let x=0;x<8;x++){
			for(let y=0;y<8;y++){
				if(map[x][y]==i){
					let index=x*8+y;
					cells[index].click();
					flag=true;
					break;
				}
			}
			if(flag){
				break;
			}
		}
	}
	
};

 3.在Horse文件夹下新建配置文件manifest.json,内容如下

{
	"name": "horse",
	"version": "1.0",
	"description": "单击鼠标右键求解马踏棋盘",
	"manifest_version": 2,
	"content_scripts": [{
		"matches": [
			"https://yzyx.info/mtqp.html"
		],
		"js": [
			"horse.js"
		]
	}]
}

4.如果你的操作无误,现在Horse文件夹下应该是这样的

摸鱼也摸鱼之求解马踏棋盘_第1张图片

5.把我们的Horse文件夹拖入Edge(这是我的浏览器)的扩展中

摸鱼也摸鱼之求解马踏棋盘_第2张图片

至此,插件安装完毕

测试

打开游戏网址,待游戏加载完毕后,点击鼠标右键,即可自动求解。

初始

鼠标右键点击后

 

你可能感兴趣的:(前端,javascript,开发语言)