用户:小苏打_查看:21 回复:14 评论:21 创建时间:2023-03-18T19:14:05


小鹿UUyMconsole.clear();
const PlayerData = {
money: 0,
lv: 0,
item: []
};
(async () => {
await db.sql`
CREATE TABLE IF NOT EXISTS YJZTX (
datas TEXT NOT NULL,
userKey CHAR(16) PRIMARY KEY UNIQUE NOT NULL
)
`
})();
function initPlayer(entity = new Box3Entity) {
for (let i in PlayerData) {
entity[i] = PlayerData[i]
}
};
function getPlayerData(entity = new Box3Entity) {
var data = {};
for (let i in PlayerData) {
data[i] = entity[i]
}
return JSON.stringify(data)
};
async function savePlayer(entity = new Box3Entity) {
if (!entity.player.userKey) return;
await db.sql`
INSERT INTO YJZTX (
datas,
userKey
)
VALUES (
${getPlayerData(entity)},
${entity.player.userKey}
)
ON CONFLICT(userKey)
DO UPDATE SET
datas = excluded.datas
`
}
world.onPlayerJoin(async ({ entity }) => {
const [data] = await db.sql`SELECT * FROM YJZTX WHERE userKey = ${entity.player.userKey} LIMIT 1`;
if (data) {
var Data = JSON.parse(data.datas);
for (let i in PlayerData) {
Data[i] ? entity[i] = Data[i] : entity[i] = PlayerData[i]
};
console.log(getPlayerData(entity))
} else {
initPlayer(entity);
}
});
world.onPlayerLeave(async ({ entity }) => {
await savePlayer(entity)
})
用法:在PlayerData里随便增添新的要保存的数据即可(
点赞0
评论
就这么说矩阵就好比一个排序算法
排序有很多无数先人做出了属于他们的算法,拿一个最简单的例子:
function selectionSort(arr) {
var len = arr.length;
var minIndex, temp;
for (var i = 0; i < len - 1; i++) {
minIndex = i;
for (varj = i + 1; j < len; j++) {
if (arr[j] < arr[minIndex]) { // 寻找最小的数
minIndex = j; // 将最小数的索引保存
}
}
temp = arr[i];
arr[i] = arr[minIndex];
arr[minIndex] = temp;
}
return arr;
}
这个原理就是讲一大堆数组array依次检测,然后再取小的挪到前列,这个适合排行榜,但有sort函数了一般人都不用这个,这个最多就是地形生成排序
第二个就是你说的矩阵

代码:
/**
* 思路1 非原地算法,
* 第一次遍历将值为0的横坐标与纵坐标存入表中,
* 第二次遍历将横坐标与纵坐标对应的行与列置为0
* @param matrix
*/
var setZeroes = function (matrix) {
var s1 = new Set()
var s2 = new Set()
for (var i = 0; i < matrix.length; i++) {
for (var j = 0; j < matrix[i].length; j++) {
if (matrix[i][j] === 0) {
s1.add(i);
s2.add(j);
}
}
}
for (var i = 0; i < matrix.length; i++) {
if (s1.has(i)) {
matrix[i] = new Array(matrix[i].length).fill(0)
continue
}
for (var j = 0; j < matrix[i].length; j++) {
if (s2.has(j)) {
matrix[i][j] = 0
}
}
}
return matrix
};
var result = setZeroes([
[0, 1, 2, 0],
[3, 4, 5, 2],
[1, 3, 1, 5]
])
console.log(result)
点赞0
评论