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的。基本上不会出错。

  • 相关阅读:
    Android -- junit测试框架,logcat获取log信息
    【Android】ADB常用指令与logcat日志
    Android -- UI布局管理,相对布局,线性布局,表格布局,绝对布局,帧布局
    Unicode的解救方案
    第一个程序
    Windows程序设计第五版
    愉快的开始
    图形用户界面入门:EasyGui
    丰富的else语句及简洁的with语句
    异常处理:你不可能总是对的2
  • 原文地址:https://www.cnblogs.com/AlexCheng/p/2120267.html
Copyright © 2011-2022 走看看