Возникли проблемы при выборе спрайта для рисования случайным образом - PullRequest
1 голос
/ 28 марта 2012

Я пытаюсь разработать свою первую игру для XNA своими руками, просто ищу учебники и обдумываю собственные реализации и решения. В настоящее время я делаю игру в стрелялки с пузырьками и рисую пузыри в их соответствующей позиции.

Дело в том, что я реализовал два типа пузырьков. Программа выбирает, какой тип рисовать, используя генератор случайных чисел (0 или 1 означает синий или красный), и в зависимости от результата выбранный тип отображается на экране. Этот подход не работает, и я исчерпал свои поисковые ресурсы. Код следующий

for (int colBubCounter = 0; colBubCounter < maxVerticalBubNumber / 2; colBubCounter++)
        {
            for (int rowBubCounter = 0; rowBubCounter < maxHorizontBubNumber; rowBubCounter++)
            {

                Rectangle bubbleDrawRectangle = new Rectangle(initDrawCoordX, initDrawCoordY, bubbleWidth, bubbleHeight);
                //Randomizamos el tipo de burbujar a dibujar ( 0 = blue, 1 = red)
                bubbleType = randomGenerator.Next(0, 1);
                if (bubbleType == 0) spriteBatch.Draw(blueBubbleSprite, bubbleDrawRectangle, Color.White);
                else if (bubbleType == 1) spriteBatch.Draw(redBubbleSprite, bubbleDrawRectangle, Color.White);

                //Cada vez que dibujamos uno, corremos la coordenada a dibujar en el otro ciclo en 10 pixeles
                initDrawCoordX += bubbleWidth;
            }

            initDrawCoordX = 0;
            initDrawCoordY += bubbleHeight;
        }

С

System.Random randomGenerator = new System.Random();

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

Спасибо за вашу помощь, и, пожалуйста, дайте мне знать, если я сделал что-то не так в этом вопросе, это мой первый опыт в StackOverflow. :)

Ответы [ 2 ]

1 голос
/ 28 марта 2012

randomGenerator.Next(0, 1); всегда будет возвращать 0, так как maxValue (верхняя) граница является исключительной.Вам нужно использовать randomGenerator.Next(0, 2) для создания нулей и единиц.

1 голос
/ 28 марта 2012

Вы используете случайный метод Next () с двумя перегрузками, сообщающими, что диапазон находится в диапазоне от 0 до 1, что означает, что он всегда будет return 0

это потому, что верхняя граница (в данном случае 1) является исключительной, например, от 0 до 1, но не включая 1 ... так что от 0 до 0.

попробуй bubbleType = randomGenerator.Next(2);

или bubbleType = randomGenerator.Next(0, 2);

и подсказку для случайного класса, попробуйте сделать его уровнем класса и использовать только 1 объект для получения более случайного числа (создание нового объекта часто дает те же числа чаще, чем его псевдослучайные числа)

...