首页 > 解决方案 > 如何为我的猜谜游戏实现一个随机数,直到用户猜到它才会不断变化?

问题描述

每次我单击“确认”时,它都会生成一个新的随机数,因此您实际上无法猜到。以及如何显示用户尝试猜测数字的次数?请帮忙,因为我已经坚持了几个小时。谢谢!

const Home = () => {
  const [enteredValue, setEnteredValue] = useState("");
  const [confirmed, setConfirmed] = useState(false);
  const [selectedNumber, setSelectedNumber] = useState();

  const input = inputText => {
    setEnteredValue(inputText.replace(/[^0-9]/g, ""));
  };

  const reset = () => {
    setEnteredValue("");
    setConfirmed(false);
  };

  const confirm = () => {
    const chosenNum = parseInt(enteredValue);
    setConfirmed(true);
    setSelectedNumber(chosenNum);
    setEnteredValue("");
    let x = Math.floor(Math.random() * 100) + 1;
    let count = 0;
    if (!enteredValue) {
      Alert.alert("Please Enter a Number");
    } else if (chosenNum > x) {
      Alert.alert("Guess Lower");
      count+=1
    } else if (chosenNum < x) {
      Alert.alert("Guess Higher");
      count+=1
    } else if (chosenNum == x) {
      Alert.alert("You Guessed Correctly");
    }
  };

  let confirmedOutput;
  if (confirmed) {
    confirmedOutput = (
      <View>
        <Text style={styles.output}>Chosen Number: {selectedNumber}</Text>
        <Text>Tries: </Text>
      </View>
    );
  }

标签: javascriptreactjsreact-native

解决方案


您正在confirm函数内部生成 x 数。所以每次用户猜测(正确与否)x都会改变。

你应该带上这个:

let x = Math.floor(Math.random() * 100) + 1;
let count = 0;

出函数,当游戏开始时,它会被调用。

当用户猜对时,重新生成新的 x 并重置计数:

// ...
 } else if (chosenNum == x) {
      Alert.alert("You Guessed Correctly");
      x = Math.floor(Math.random() * 100) + 1;
      count = 0;
 }

count是用户尝试尝试,将其显示在视图中。


推荐阅读