反应字母游戏
React letter game
react.js 开发的具有功能组件的命中注定游戏**
您缺少的是点击按钮的顺序以及正确答案的顺序。
创建一个状态来维护按钮的 ID 序列,按它们被点击的顺序排列:
const [sequence, setSequence] = useState([]);
按正确(预期)顺序创建一个包含按钮 ID 的数组:
const correctSequence = [1, 5, 3, 8, 2, 4];
然后在 buttonClickHandler
中添加此代码:
setSequence([...sequence, id]);
也在resetGame
函数中添加这段代码:
setSequence([]);
最后将 checkIfCorrect
函数更改为:
const checkIfCorrect = () => {
if (correctSequence.length === sequence.length) {
for (let i = 0; i < sequence.length; i++) {
if (sequence[i] !== correctSequence[i]) {
setCorrect(false);
return;
}
}
setCorrect(true);
} else {
setCorrect(false);
}
};
我们可以通过向 buttons
添加另一个道具来实现这一点,点击后无需更改 initialState
:
我只发布了修改后的代码,完整示例在 codesandbox.
const buttonClickHandler = (id) => {
if (count === 0) {
return;
}
setCount(count - 1);
// Update an array of objects
setButtons(
initialState.map((element) =>
[...buttons]
.sort((a, b) => (b.label < a.label ? 1 : -1))
.map((item, index) =>
item.id === id
? {
...item,
clicked: true,
inOrder: !index
? item.isRight
: item.isRight &&
buttons.sort((a, b) => (b.label < a.label ? 1 : -1))[
index - 1
].clicked,
disabled: true
}
: item
)
.find((item) => item.id === element.id)
)
);
};
...
const checkIfCorrect = () => {
let correct = buttons.filter(
(item) => item.clicked === true && item.isRight === true && item.inOrder
).length;
if (correct === 6) {
setCorrect(true);
} else {
setCorrect(false);
}
};
react.js 开发的具有功能组件的命中注定游戏**
您缺少的是点击按钮的顺序以及正确答案的顺序。
创建一个状态来维护按钮的 ID 序列,按它们被点击的顺序排列:
const [sequence, setSequence] = useState([]);
按正确(预期)顺序创建一个包含按钮 ID 的数组:
const correctSequence = [1, 5, 3, 8, 2, 4];
然后在 buttonClickHandler
中添加此代码:
setSequence([...sequence, id]);
也在resetGame
函数中添加这段代码:
setSequence([]);
最后将 checkIfCorrect
函数更改为:
const checkIfCorrect = () => {
if (correctSequence.length === sequence.length) {
for (let i = 0; i < sequence.length; i++) {
if (sequence[i] !== correctSequence[i]) {
setCorrect(false);
return;
}
}
setCorrect(true);
} else {
setCorrect(false);
}
};
我们可以通过向 buttons
添加另一个道具来实现这一点,点击后无需更改 initialState
:
我只发布了修改后的代码,完整示例在 codesandbox.
const buttonClickHandler = (id) => {
if (count === 0) {
return;
}
setCount(count - 1);
// Update an array of objects
setButtons(
initialState.map((element) =>
[...buttons]
.sort((a, b) => (b.label < a.label ? 1 : -1))
.map((item, index) =>
item.id === id
? {
...item,
clicked: true,
inOrder: !index
? item.isRight
: item.isRight &&
buttons.sort((a, b) => (b.label < a.label ? 1 : -1))[
index - 1
].clicked,
disabled: true
}
: item
)
.find((item) => item.id === element.id)
)
);
};
...
const checkIfCorrect = () => {
let correct = buttons.filter(
(item) => item.clicked === true && item.isRight === true && item.inOrder
).length;
if (correct === 6) {
setCorrect(true);
} else {
setCorrect(false);
}
};