mirror of
https://ghproxy.com/https://github.com/StreakingMan/solvable-sheep-game
synced 2025-05-25 07:11:51 +08:00
commit
90d0c91669
12
src/App.tsx
12
src/App.tsx
|
@ -83,9 +83,19 @@ const makeScene: (level: number, icons: Icon[]) => Scene = (level, icons) => {
|
||||||
return scene;
|
return scene;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// o(n) 时间复杂度的洗牌算法
|
||||||
|
const fastShuffle: <T = any>(arr: T[]) => T[] = (arr) => {
|
||||||
|
const res = arr.slice();
|
||||||
|
for (let i = 0; i < res.length; i++) {
|
||||||
|
const idx = (Math.random() * res.length) >> 0;
|
||||||
|
[res[i], res[idx]] = [res[idx], res[i]];
|
||||||
|
}
|
||||||
|
return res;
|
||||||
|
};
|
||||||
|
|
||||||
// 洗牌
|
// 洗牌
|
||||||
const washScene: (level: number, scene: Scene) => Scene = (level, scene) => {
|
const washScene: (level: number, scene: Scene) => Scene = (level, scene) => {
|
||||||
const updateScene = scene.slice().sort(() => Math.random() - 0.5);
|
const updateScene = fastShuffle(scene);
|
||||||
const offsetPool = [0, 25, -25, 50, -50].slice(0, 1 + level);
|
const offsetPool = [0, 25, -25, 50, -50].slice(0, 1 + level);
|
||||||
const range = [
|
const range = [
|
||||||
[2, 6],
|
[2, 6],
|
||||||
|
|
Loading…
Reference in New Issue
Block a user