zoukankan      html  css  js  c++  java
  • 辅助类——随机函数(RandomHelper)辅助类

    随机函数(RandomHelper)辅助类

    看一下助手类之一的RandomHelper类。在单一项目中它不被经常使用,但几乎任何一个游戏都使用一些随机数生成,使得游戏内容看上去没有太多的周期性,并且给游戏带来更多变化。

    在Breakout游戏中,您将编写一些随机数,这里的砖块(block)就是随机生成的。level 1 的随机概率是10%,level 2使用的随机率是20%,以此类推。这样随着级别提升,游戏变得更难。您可以仅仅使用Random类,调用Next方法来生成一个新的随机数,但万一您想生成一个随机标准化向量,你就得编写如下的代码行:

    Random randomGenerator = new Random((int)DateTime.Now.Ticks);
    Vector3 randomNormalVector = new Vector3(
      (float)randomGenerator.NextDouble() * 2.0f - 1.0f,
      (float)randomGenerator.NextDouble() * 2.0f - 1.0f,
      (float)randomGenerator.NextDouble() * 2.0f - 1.0f);
    randomNormalVector.Normalize();

    取代再三重复这段代码,诸如RandomHelper的助手类会非常有用。图3-8显示了RandomHelper类的基本结构。

    1
    图 3-8

    如你所见,这些方法都很简单,只需花几分钟就可以写出整个类。可是,这个类非常有用,归功于Random类的内部globalRandomGenerator实例,RandomHelper类在产生随机数上比你每次需要随机数时就创建一个新的Random类要快得多。

    生成随机向量

    这里你看到的是RandomHelper类的一个方法:

    /// <summary>
    /// Get random Vector2
    /// </summary>
    /// <param name="min">Minimum for each component</param>
    /// <param name="max">Maximum for each component</param>
    /// <returns>Vector2</returns>
    public static Vector2 GetRandomVector2(float min, float max)
    {
      return new Vector2(
        GetRandomFloat(min, max),
        GetRandomFloat(min, max));
    } // GetRandomVector2(min, max)

    测试RandomHelper类中的任何方法没有太大意义,因为所有的返回值都是随机数,你没有必要检查GetRandomVector2方法是否返回一个Vector2;它就是返回Vector2的。基本上不会出错。

  • 相关阅读:
    10. Regular Expression Matching
    9. Palindrome Number
    6. ZigZag Conversion
    5. Longest Palindromic Substring
    4. Median of Two Sorted Arrays
    3. Longest Substring Without Repeating Characters
    2. Add Two Numbers
    链式表的按序号查找
    可持久化线段树——区间更新hdu4348
    主席树——树链上第k大spoj COT
  • 原文地址:https://www.cnblogs.com/AlexCheng/p/2120267.html
Copyright © 2011-2022 走看看