javascript-从每次 React 时不断刷新的函数中收集数据
发布时间:2022-05-29 19:52:57 242
相关标签: # 前端
**import { controls } from "../../../constants/controls";
import { useKeyPress } from "../../../hooks/useKeyPress";
import { useArena } from "./useArena";
const getDamage = (attacker, defender) => {
let damage = attacker - defender;
return damage;
};
const getHitPower = (fighter) => {
let criticalHitChance = Math.random() * 2;
let power = fighter.attack * criticalHitChance;
return power;
};
const getBlockPower = (fighter) => {
let dodgeChance = Math.random() * 2;
let power = fighter.defense * dodgeChance;
return power;
};
export const useFight = () => {
const { selectedPair } = useArena();
const { keysPressed } = useKeyPress();
const {
playerOneAttack,
playerOneBlock,
playerTwoAttack,
playerTwoBlock,
playerOneCriticalHitCombination,
playerTwoCriticalHitCombination,
} = controls;
var initialHealthOne = selectedPair.playerOne.health;
var initialHealthTwo = selectedPair.playerTwo.health;
if (keysPressed === playerTwoAttack) {
var firstDamage = getHitPower(selectedPair.playerTwo);
var firstProtect = getBlockPower(selectedPair.playerOne);
var demagePlayerOne = getDamage(firstDamage, firstProtect);
initialHealthOne = initialHealthOne - demagePlayerOne;
// updateHealthPlayerOne(demagePlayerOne);
if (keysPressed === playerOneBlock) {
firstDamage = 0;
firstProtect = 0;
demagePlayerOne = getDamage(firstDamage, firstProtect);
initialHealthOne = initialHealthOne - demagePlayerOne;
}
}
if (
keysPressed ===
(playerTwoCriticalHitCombination[0] ||
playerTwoCriticalHitCombination[1] ||
playerTwoCriticalHitCombination[2])
) {
firstDamage = 4 * getHitPower(selectedPair.playerTwo);
firstProtect = getBlockPower(selectedPair.playerOne);
demagePlayerOne = getDamage(firstDamage, firstProtect);
initialHealthOne = initialHealthOne - demagePlayerOne;
}
if (keysPressed === playerOneAttack) {
var secondDemage = getHitPower(selectedPair.playerOne);
var secondBlock = getBlockPower(selectedPair.playerTwo);
var demagePlayertwo = getDamage(secondDemage, secondBlock);
initialHealthTwo = initialHealthTwo - demagePlayertwo;
if (keysPressed === playerTwoBlock) {
secondDemage = 0;
secondBlock = 0;
demagePlayertwo = getDamage(secondDemage, secondBlock);
initialHealthTwo = initialHealthTwo - demagePlayertwo;
}
}
if (
keysPressed ===
(playerOneCriticalHitCombination[0] ||
playerOneCriticalHitCombination[1] ||
playerOneCriticalHitCombination[2])
) {
secondDemage = 4 * getHitPower(selectedPair.playerOne);
secondBlock = getBlockPower(selectedPair.playerTwo);
demagePlayertwo = getDamage(secondDemage, secondBlock);
initialHealthTwo = initialHealthTwo - demagePlayertwo;
}
// getwinner
var winner;
if (initialHealthOne === 0) {
winner = selectedPair.playerOne;
}
if (initialHealthTwo === 0) {
winner = selectedPair.playerTwo;
}
const fighterOneDetails = {
selectedPair,
initialHealthOne,
};
const fighterTwoDetails = {
selectedPair,
initialHealthTwo,
};
return {
fighterOneDetails,
fighterTwoDetails,
winner,
};
};**
我的目标是在 initialHealthOne 和 initialHealthTwo 变量中计算玩家的健康状况,但它不会向其中添加其他更新,每次只会采用和更新默认值。而我需要每个函数和每个 if 块的结果中的计算变量。
我从其他函数中获取了我的 selectedPair,其中包括玩家的数据,而 keysPressed 包含 eventclicklisteners 的数据,每个键的作用。我有一个页面,两个人在打架,我需要计算他们的健康状况。
特别声明:以上内容(图片及文字)均为互联网收集或者用户上传发布,本站仅提供信息存储服务!如有侵权或有涉及法律问题请联系我们。
举报