【问题标题】:XNA random speed and position generating [closed]XNA随机速度和位置生成[关闭]
【发布时间】:2014-05-02 17:34:52
【问题描述】:

我正在做一个 2d 项目,我需要实施的一件事是: 3 个精灵(海马),在创建过程中,我应该根据可视屏幕(-400;0;400)分配一个随机 x 和随机 y 坐标。他们还应该被分配一个介于 5 和 10 之间的随机速度。 海马应该从中心点向上移动 100 像素,向下移动 100 像素。 所以我的问题是:如何?!我尝试使用随机 - 随机位置 = new Random();但是当我尝试使用它时,什么都没有发生。

【问题讨论】:

  • 欢迎来到 Stack Overflow!看起来您希望我们为您编写一些代码。虽然许多用户愿意为陷入困境的编码人员编写代码,但他们通常只有在发布者已经尝试自己解决问题时才会提供帮助。展示这项工作的一个好方法是包含您迄今为止编写的代码、示例输入(如果有的话)、预期输出和您实际获得的输出(控制台输出、堆栈跟踪、编译器错误 - 不管是什么适用的)。您提供的详细信息越多,您可能收到的答案就越多。检查FAQHow to Ask
  • 请不要破坏您的问题。我已经回滚了你的破坏性编辑。

标签: c# random xna sprite xna-4.0


【解决方案1】:
Random rnd = new Random()
rnd.Next(5, 10+1) // Exclusive upper bound

要生成新号码,只需重复使用rnd.Next(min, max+1)

MSDN:http://msdn.microsoft.com/en-us/library/system.random.aspx

【讨论】:

    【解决方案2】:

    我希望一些示例代码能让您朝着正确的方向前进。 这是在单元测试项目中编写的代码。由于您没有提供示例代码,因此这是我能为您做的最好的事情。

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using Microsoft.VisualStudio.TestTools.UnitTesting;
    
    namespace MyNamespace
    {
        [TestClass]
        public class OtherTests
        {
            readonly Random rand = new Random();
    
            [TestMethod]
            public void CoordTest()
            {
                double width = 400;
                double height = 400;
                double centerScreenX = width / 2;
                double centerScreenY = height / 2;
    
                double minSpeed = 5;
                double maxSpeed = 10;
    
                double offsetRangeX = 0;
                double offsetRangeY = 100; // Only up and down.
    
    
                List<double[]> vectors = new List<double[]>();
    
                int spritesToGenerate = 3;
                while (spritesToGenerate-- > 0)
                {
                    vectors.Add(new[]
                    {
                        centerScreenX + rand.NextDouble() * offsetRangeX * 2 - offsetRangeX,
                        centerScreenY + rand.NextDouble() * offsetRangeY * 2 - offsetRangeY,
                        rand.NextDouble() * (maxSpeed - minSpeed) + minSpeed,
                        rand.NextDouble() * (maxSpeed - minSpeed) + minSpeed
                    });
                }
                Console.WriteLine(string.Join("\r\n", vectors.Select(v => string.Join("\t", v))));
            }
        }
    }
    

    【讨论】:

    • 你应该使用全局 Random 否则如果方法调用非常快,random.next 可以返回相同的值。
    • 我同意并且我已经编辑了示例。
    猜你喜欢
    • 2011-10-26
    • 1970-01-01
    • 1970-01-01
    • 2016-04-04
    • 2018-05-20
    • 1970-01-01
    • 2014-07-26
    • 1970-01-01
    相关资源
    最近更新 更多