返回

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 的数据,每个键的作用。我有一个页面,两个人在打架,我需要计算他们的健康状况。

特别声明:以上内容(图片及文字)均为互联网收集或者用户上传发布,本站仅提供信息存储服务!如有侵权或有涉及法律问题请联系我们。
举报
评论区(1)
按点赞数排序
用户头像