javascript - 棋盘Java脚本建议需要
问题描述
我需要优化我的棋盘代码(JS),以避免为同一个棋子(如典当)和其他棋子复制太多行代码。
我认为我需要创建更好的数据结构,但我不知道如何迭代我的数据结构以定位板上的所有部分。这是该项目的codepen 链接。
例如,这是我将骑士棋子放在棋盘上的功能。
function addKnight() {
//piece create function
var KnightFirst = oneKnight[8];
var KnightSecond = oneKnight[15];
var KnightThird = oneKnight[48];
var KnightFour = oneKnight[55];
pieceKnight1 = document.createElement("i");
pieceKnight1.classList.add("fas");
pieceKnight1.classList.add("fa-chess-knight");
pieceKnight2 = document.createElement("i");
pieceKnight2.classList.add("fas");
pieceKnight2.classList.add("fa-chess-knight");
pieceKnight3 = document.createElement("i");
pieceKnight3.classList.add("fas");
pieceKnight3.classList.add("fa-chess-knight");
pieceKnight4 = document.createElement("i");
pieceKnight4.classList.add("fas");
pieceKnight4.classList.add("fa-chess-knight");
KnightFirst.appendChild(pieceKnight1);
KnightSecond.appendChild(pieceKnight2);
pieceKnight2.classList.add("color");
KnightThird.appendChild(pieceKnight3);
KnightFour.appendChild(pieceKnight4);
pieceKnight4.classList.add("color");
}
解决方案
我会做这样的事情。它不是完整的代码,而只是结构。
var piece = {
x, y,
type,
color,
sprite: new Image(),
}
var pieces = [];
function addPieces () {
if (i < 16) {
for (let i = 0; i < 32; i++) {
for (let j = 0; j < 16; j++) {
pieces.push(piece);
pieces[i].type = "pawn";
if (j < 4) {
//set position for white pawns
} else {
//set position for black pawns
}
} }
if (i >= 16 && i < 20) {
for (let j = 0; j < 4; j++) {
pieces.push(piece);
pieces[i].type = "knight";
if (j < 2) {
//set position for white knights
} else {
//set position for black knights
}
}}
if (i >= 20 && i < 24) {
for (let j = 0; j < 4; j++) {
pieces.push(piece);
pieces[i].type = "rook";
if (j < 2) {
//set position for white rooks
} else {
//set position for black rooks
}
}}
if (i >= 24 && i < 28) {
for (let j = 0; j < 4; j++) {
pieces.push(piece);
pieces[i].type = "bishop";
if (j < 2) {
//set position for white bishops
} else {
//set position for black bishops
}
}}
if (i >= 28 && i < 30) {
for (let j = 0; j < 2; j++) {
pieces.push(piece);
pieces[i].type = "queen";
if (j < 1) {
//set position for white queen
} else {
//set position for black queen
}
}}
if (i >= 30 && i < 32) {
for (let j = 0; j < 2; j++) {
pieces.push(piece);
pieces[i].type = "king";
if (j < 1) {
//set position for white king
} else {
//set position for black king
}
} }
}
}
您可以为每一帧的更新应用相同类型的函数,但这是您的决定。希望这可以帮助!
推荐阅读
- python - 添加批量标准化会降低性能
- image-processing - 如何将 DynamicImage 转换为 Base64?
- reactjs - 检测 React 组件外部的点击和悬停的单个状态
- android - 如何使用 Dagger 2 @Provide 提供服务
- vue.js - 下载文件时如何重命名?
- javascript - Sharepoint:如何使用一组项目 ID 检查每个项目是否存在于列表中?
- wordpress - 如何在前端加快 wordpress ajax?
- android-billing - getPriceAmountMicros() 是否包括订阅类型的 skus 的地方税?
- c# - 信息系统;在与 IUSR 用户共享的打印机上打印
- groovy - Java中Excel的YIELD公式