C # Как генерировать случайные большие или низкие числа, и чтобы каждое последующее число основывалось на последнем случайно сгенерированном числе - PullRequest
0 голосов
/ 16 октября 2018

В настоящее время я создаю Guess Game с помощью курса Udemy на основе C # с использованием Unity Engine.То, что я пытаюсь сделать, выходит за рамки курса.

Я попал в точку, которую вы видите ниже, где, когда я нажимаю «стрелку вверх» или «стрелку вниз», случайное число генерируется между двумячисла: (avg, max) и (avg, min).

В настоящее время генерируемые числа всегда выше или ниже, чем 'avg' на основе нажатой клавиши, но каждое сгенерированное числопосле этого не обязательно будет выше или ниже ранее сгенерированного числа.

Например.Я мог бы выбрать ниже 393 ('avg') и получить 242. Но если я нажму еще раз ниже, это может быть 345. Хотя это ниже, чем 'avg', я хочу, чтобы каждое случайно сгенерированное число было ниже, чем последнее случайно сгенерированноеномер (или выше, в зависимости от нажатия клавиши).

Я подумал, что, возможно, назначение переменной для функции было правильным решением.У меня есть неиспользованное целое число «c», которое я собирался использовать.

Не уверен, как это сделать ....

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class NumberWizard : MonoBehaviour

{
    int max = 734;
    int min = 52;
    int avg = 393;
    int a;
    int b;
    int c;


    // Use this for initialization
    void Start()

    {
        StartGame();
    }

    void StartGame()

    {
        max = 734;
        min = 52;
        avg = 393;

        Debug.Log("Welcome to Number Wizard you filthy son of a bitch.");
        Debug.Log("Pick a goddamn number.");
        Debug.Log("The highest number is: " + max);
        Debug.Log("The lowest number is: " + min);
        Debug.Log("Tell me if your number is higher or lower than " + avg);
        Debug.Log("Push Up = Higher, Push Down = Lower, Push Enter = Correct!");
        max = max + 1;
    }

    // Update is called once per frame
    void Update()

    {

        if (Input.GetKeyDown(KeyCode.UpArrow))

        {
            Debug.Log("You chose higher. What is your guess? ");
            NextGuess();
        }

        else if (Input.GetKeyDown(KeyCode.DownArrow))

        {
            Debug.Log("You chose lower. What is your guess?");
            NextGuess2();
        }

        else if (Input.GetKeyDown(KeyCode.Return))

        {
            Debug.Log("You are correct.");
            StartGame();
        }

        else if (Input.GetKeyDown(KeyCode.KeypadEnter))

        {
            Debug.Log("You are correct.");
            StartGame();
        }

        else if (Input.anyKeyDown)

        {
            Debug.Log("Input invalid. Try again.");
        }

    }

    void NextGuess()

    {
        a = Random.Range(avg, max);
        Debug.Log(a);
    }

    void NextGuess2()

    {
        b = Random.Range(avg, min);
        Debug.Log(b);
    }

}

1 Ответ

0 голосов
/ 16 октября 2018

Попробуйте обновить значение avg на ключе вниз, чтобы получить значение.Так что в вашем примере выберите ниже 393 («avg») и получите 242, теперь обновите avg до 242.

avg = NextGuess2();


public NextGuess2()

{
    b = Random.Range(avg, min);
    Debug.Log(b);
    return b;
}
...