我如何创建一个循环来检查棋子是否可以相互碰撞?



我的目标是制作一款国际象棋游戏,你可以放置多个塔或车,游戏应该检查棋子是否可以击中对方,到目前为止,我已经制作了代码,你可以在下面看到,但我被困在循环中,检查一个车是否可以击中另一个车。我很困惑如何检查这个。如果有人能帮助我或给我任何提示如何使循环,这将意味着很多!(对不起挪威变量名称,如果你需要翻译或任何我很乐意帮助它!!)

提前感谢!!

<!doctype html>
<html lang="no">
<head> 
<title> Standardoppsett </title>
<meta charset="utf-8">
</head>

<style>
body{
font-size: 25px;
}
.board {
width: 360px;
height: 360px;
border: 32px solid;
border-color: darkslategray;
border-radius: 5px;
}
.firkant {
height:calc(100% / 8);
width: calc(100% / 8);
text-align: center;
border: 1px black solid;
}
.hvit{
background:white;
}
.svart{
background:grey;
}
td:hover {
background: lightgreen;
cursor: pointer
}
</style>
<body>
<table class="board"></table>
<script>
let tableEl = document.querySelector("table")
let liste = []
for(let i = 1; i < 9; i++) {
let trEl = document.createElement('tr');
for(let j = 1; j < 9; j++) {
let tdEl = document.createElement('td');
tdEl.setAttribute("id","rute"+i+j)
tdEl.addEventListener("click",plasserTårn)
trEl.appendChild(tdEl);
// Bare på grunn av css
tdEl.className = (i%2 === j%2) ? "hvit firkant" : "svart firkant";
}
tableEl.appendChild(trEl);
}
function plasserTårn(e){
let trykketFirkant = e.target
let plassertBrikke = {rad:trykketFirkant.id.substring(5,4), kolonne:trykketFirkant.id.substring(6,5)}
liste.push(plassertBrikke)
console.log(liste)
console.log(plassertBrikke)
for(let i = 0;i<liste.length;i++){
let rekkefolgehusker = i 
for (let k = rekkefolgehusker;k<liste.length;k++) {
if(liste[i].rad == liste.rad[k]) {
console.log("tårn blir slott");
}
}  
}
}
</script>
</body>
</html>

我不是100%确定你想要什么,但在将plassertBrikke推到liste之前,你可以这样做,看看plassertBrikke是否可以采取任何已经在棋盘上的白鸦。

const piecesUpForGrabs = liste.filter(rook => {
return plassertBrikke.rad === rook.rad || plassertBrikke.kolonne === rook.kolonne;
})
console.log('plassertBrikke can take these pieces:', piecesUpForGrabs);

最新更新