コード例 #1
0
ファイル: PlanetGenerator.cs プロジェクト: larnin/Worlds
    public static PlanetData generate(PlanetGeneratorData data)
    {
        Stopwatch sw = new Stopwatch();

        sw.Start();
        var planet = createSpherePlanet(data.sphereDivisionLevel);

        UnityEngine.Debug.Log("Elapsed sphere " + sw.Elapsed); sw.Reset(); sw.Start();

        planet.scale           = data.planetScale;
        planet.riverWidth      = data.riverWidth;
        planet.riverMoreHeight = data.riverMoreHeight;
        planet.biomes          = data.biomes;

        var gen = new DefaultRandomGenerator(data.seed);

        makePerlinElevation(planet, gen, data.elevationData.perlinFactors);
        UnityEngine.Debug.Log("Elapsed perlin " + sw.Elapsed); sw.Reset(); sw.Start();
        makeFinalElevation(planet, data.elevationData.minHeight, data.elevationData.maxHeight, data.elevationData.forcedOffsetElevation
                           , data.elevationData.oceanLevel, data.elevationData.lakeSize, data.elevationData.elevationCurve, gen, data.elevationData.randomizeElevation);
        UnityEngine.Debug.Log("Elapsed elevation " + sw.Elapsed); sw.Reset(); sw.Start();
        makeRivers(planet, gen, data.riverNb, data.riverTestCount);
        UnityEngine.Debug.Log("Elapsed rivers " + sw.Elapsed); sw.Reset(); sw.Start();
        makeMoisture(planet, data.riverMoistureMin, data.moisturePropagationResistance);
        UnityEngine.Debug.Log("Elapsed moisture " + sw.Elapsed); sw.Reset(); sw.Start();
        makeBiomes(planet, data.elevationData.maxHeight);
        UnityEngine.Debug.Log("Elapsed biomes " + sw.Elapsed); sw.Reset(); sw.Start();
        makeStructures(planet, gen);
        UnityEngine.Debug.Log("Elapsed structures " + sw.Elapsed); sw.Reset(); sw.Start();

        return(planet);
    }
コード例 #2
0
        /// <summary>
        /// Generete game field
        /// </summary>
        /// <param name="grid">Field member</param>
        /// <param name="player"Player member></param>
        /// <returns>Genereted game filed</returns>
        public IGrid GenerateGrid(IPlayer player, IGrid grid)
        {
            DefaultRandomGenerator random = DefaultRandomGenerator.Instance();
            int percentageOfBlockedCells  = random.Next(GlobalConstants.MinimumPercentageOfBlockedCells, GlobalConstants.MaximumPercentageOfBlockedCells);

            for (int row = 0; row < grid.TotalRows; row++)
            {
                for (int col = 0; col < grid.TotalCols; col++)
                {
                    int num = random.Next(0, 100);
                    if (num < percentageOfBlockedCells)
                    {
                        grid.SetCell(row, col, GlobalConstants.BlockedCellSymbol);
                    }
                    else
                    {
                        grid.SetCell(row, col, GlobalConstants.FreeCellSymbol);
                    }
                }
            }

            grid.SetCell(grid.TotalRows / 2, grid.TotalCols / 2, GlobalConstants.PlayerSignSymbol);

            this.MakeAtLeastOneExitReachable(grid, player);
            return(grid);
        }
コード例 #3
0
        public void TestSlotAllocationToUser()
        {
            DefaultRandomGenerator  defaultRandom            = new DefaultRandomGenerator();
            ISlotAssignmentStrategy lockerAssignmentStrategy = new RandomSlotAssignmentStrategy(defaultRandom);
            ILockerRepository       lockerRepository         = new InMemoryLockerRepository();
            ISlotFilteringStrategy  slotFilteringStrategy    = new SizeBasedSlotFilteringStrategy();
            InMemoryOtprepository   slotOtpRepository        = new InMemoryOtprepository();
            RandomOtpGenerator      otpGeneratorRandom       = new RandomOtpGenerator(5, defaultRandom);

            var lockerService = new LockerService(lockerAssignmentStrategy, lockerRepository, slotFilteringStrategy);

            CreateTestLockerWithSlots(new LockerController(lockerService), 2, new Size(10.0, 10.0));
        }
コード例 #4
0
ファイル: FrmRedpack.cs プロジェクト: manny2016/Sharing
        private void 全部发放ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            var generator = new DefaultRandomGenerator();

            foreach (var logging in this.lv_RewardLogging.SelectedItems ?? new ListView.SelectedListViewItemCollection(this.lv_RewardLogging))
            {
                var reward  = (logging as ListViewItem).Tag as RewardLogging;
                var redpack = new Redpack(nonce_str: generator.Genernate(),
                                          mch_billno: reward.RelevantTradeId,
                                          mch_id: "1520961881",
                                          wxappid: "wx20da9548445a2ca7",
                                          send_name: "东坡区丽群奶茶店",
                                          re_openid: reward.OpenId,
                                          total_amount: reward.RewardMoney,
                                          total_num: 1,
                                          wishing: "感谢你的推荐,请收下这笔推广佣金!",
                                          client_ip: "49.76.219.137", act_name: "推广赚佣金", remark: reward.Description);
                SendLuckMoney("EA62B75D5D3941C3A632B8F18C7B3575", redpack);
            }
        }
コード例 #5
0
        /// <summary>
        /// Маке аt least one possible way out of the maze
        /// </summary>
        /// <param name="generatedGrid">Genereted game field</param>
        /// <param name="player">Player member</param>
        public void MakeAtLeastOneExitReachable(IGrid generatedGrid, IPlayer player)
        {
            DefaultRandomGenerator random = DefaultRandomGenerator.Instance();

            int[] dirX = { 0, 0, 1, -1 };
            int[] dirY = { 1, -1, 0, 0 };
            int   numberOfDirections = 4;

            while (this.IsGameOver(player, generatedGrid) == false)
            {
                int randomIndex = random.Next(0, numberOfDirections);

                var nextPosition = new Position(player.Position.X + dirX[randomIndex], player.Position.Y + dirY[randomIndex]);

                if (this.IsInsideGrid(nextPosition, generatedGrid))
                {
                    player.Position = nextPosition;
                    generatedGrid.SetCell(player.Position.X, player.Position.Y, GlobalConstants.FreeCellSymbol);
                }
            }

            player.Position = new Position(generatedGrid.TotalRows / 2, generatedGrid.TotalCols / 2);
            generatedGrid.SetCell(generatedGrid.TotalRows / 2, generatedGrid.TotalCols / 2, GlobalConstants.PlayerSignSymbol);
        }