コード例 #1
0
ファイル: Platform.cs プロジェクト: MrVovun/ShipGame
 public void OccupyPlatform()
 {
     shipGen         = GameObject.FindGameObjectWithTag("GameController").GetComponent <ShipGenerator> ();
     ship            = shipGen.GetFirstShipInList();
     ship.myPlatform = this;
     ship.StartCoroutine("MoveTo");
 }
コード例 #2
0
 private void OnTriggerStay2D(Collider2D collision)
 {
     if ((collision.CompareTag("Player")) && (Input.GetButtonDown("Interact")))
     {
         ShipGenerator.Generate(collision.transform, backgroundPrefab, alienPrefab, holderPrefab, platformPrefab, blockPrefab, pointPrefab, sizeX, sizeY, incrementX, incrementY, threshold, enemySpawnRate, exitSpawnRate);
     }
 }
コード例 #3
0
ファイル: Core.cs プロジェクト: XpArKeR/ldjam48
        public static void StartGame(GameState providedGameState = default)
        {
            var effectiveGameState = providedGameState;

            if (effectiveGameState == default)
            {
                effectiveGameState = new GameState();
                effectiveGameState.ConsumptionRates = consumptionRates;
                effectiveGameState.Ship             = ShipGenerator.GenerateShip(ShipGenerator.ShipTypes[0]);
                //{
                //    ConsumptionRates = consumptionRates,
                //    Ship = ShipGenerator.GenerateShip(ShipGenerator.ShipTypes[0]),
                //    Options = new GameStateOptions()
                //    {
                //        AreAnimationsEnabled = true,
                //        BackgroundVolume = 0.125f
                //    }
                //};

                effectiveGameState.Planets.AddRange(PlanetGenerator.GeneratePlanets(4));
                effectiveGameState.CurrentScene = SceneNames.Far;
            }

            GameState = effectiveGameState;
            ChangeScene(effectiveGameState.CurrentScene);
        }
コード例 #4
0
        public Result <int> CreateGame(List <ShipDto> ships, string connectionId)
        {
            var enemyShips = new ShipGenerator().GenerateShips();
            var model      = new GameDto
            {
                ConnectionId = connectionId,
                UserArea     = new AreaDto
                {
                    Ships = ships
                },
                ComputerArea = new AreaDto
                {
                    Ships = enemyShips
                }
            };

            try
            {
                var dbModel = _mapper.Map <GameDb>(model);

                _context.Games.Add(dbModel);
                _context.SaveChanges();

                return(Result.Success(dbModel.Id));
            }
            catch (DbUpdateException ex)
            {
                return(Result.Failure <int>(ex.Message));
            }
        }
コード例 #5
0
        public void GenerateShip_WithSmallerPanelThanShip_ThrowsInvalidArgumentException()
        {
            ShipGenerator generator = new ShipGenerator();
            var           panelSize = 3;

            Action a = () => generator.GenerateShip(new ShipType("Battleship", "B", 5), panelSize);

            a.Should().Throw <ArgumentException>();
        }
コード例 #6
0
        public void GenerateShipFields_ShipSize_ShouldCreateShipSizeFieldsCount()
        {
            PrepareSequenceForRandomShipsStartPoint();
            _random.Setup(r => r.GetRandomNumber(NUMBER_OF_DIRECTIONS)).Returns(0);
            var shipSize = 4;

            var sut    = new ShipGenerator(_random.Object);
            var result = sut.GenerateShipFields(shipSize);

            Assert.That(result, Has.Exactly(shipSize).Items);
        }
コード例 #7
0
ファイル: Ship.cs プロジェクト: MrVovun/ShipGame
    void Start()
    {
        transform.rotation = Quaternion.identity;
        gameManager        = GameObject.FindGameObjectWithTag("GameController");
        shipGen            = gameManager.GetComponent <ShipGenerator> ();
        thisShipNumber     = shipGen.nextShipNumber;
        Debug.Log("Ship №" + thisShipNumber + " has arrived");
        int randomIndex = Random.Range(0, shipGen.spriteList.Count);

        this.GetComponentInChildren <SpriteRenderer> ().sprite = shipGen.spriteList[randomIndex];
        isGoodShip = (Random.value > 0.5f);
    }
コード例 #8
0
        public void GenerateShip_WithNormalSizePanel_ReturnsValidShip()
        {
            ShipGenerator generator = new ShipGenerator();

            var panelSize = 10;
            var ship      = generator.GenerateShip(new ShipType("Battleship", "B", 5), panelSize);

            ship.HeadPoint.X.Should().BeLessThan(panelSize);
            ship.HeadPoint.Y.Should().BeLessThan(panelSize);
            ship.TailPoint.Y.Should().BeLessThan(panelSize);
            ship.TailPoint.Y.Should().BeLessThan(panelSize);
        }
コード例 #9
0
ファイル: Factory.cs プロジェクト: silviumarinca/BattleShips
        public static IDrawBoard CreateDrawBoard(bool has_debug)
        {
            int board_size = 10;
            var gen        = new ShipGenerator(board_size);//.EnableDebug();

            return(new DrawBoard(new List <IDestroyer>()
            {
                new Ships(5, gen.GenerateShipCoordonates(5)),
                new Ships(4, gen.GenerateShipCoordonates(4)),
                new Ships(4, gen.GenerateShipCoordonates(4))
            }, board_size));
        }
コード例 #10
0
        public void GenerateShipFields_ForColumnDirection_ShouldAllFieldsHaveSameColumnNumber(int columnNumber, string expectedColumnNumberResult)
        {
            _random.SetupSequence(r => r.GetRandomNumber(BOARD_SIZE))
            .Returns(columnNumber)
            .Returns(COMMON_ROW_NUMBER);
            _random.Setup(r => r.GetRandomNumber(NUMBER_OF_DIRECTIONS)).Returns((int)ShipDirection.Column);
            var shipSize = 3;

            var sut    = new ShipGenerator(_random.Object);
            var result = sut.GenerateShipFields(shipSize);

            result.ForEach(f => Assert.That(f.Substring(1), Is.EqualTo(expectedColumnNumberResult)));
        }
コード例 #11
0
        public void GenerateShipFields_ForRowDirection_ShouldAllFieldsHaveSameRowLetter(int rowNumber, string expectedLetter)
        {
            _random.SetupSequence(r => r.GetRandomNumber(BOARD_SIZE))
            .Returns(COMMON_COLUMN_NUMBER)
            .Returns(rowNumber);
            _random.Setup(r => r.GetRandomNumber(NUMBER_OF_DIRECTIONS)).Returns((int)ShipDirection.Row);
            var shipSize = 3;

            var sut    = new ShipGenerator(_random.Object);
            var result = sut.GenerateShipFields(shipSize);

            result.ForEach(f => Assert.That(f.Substring(0, 1), Is.EqualTo(expectedLetter)));
        }
コード例 #12
0
        public void GenerateShipFields_ShouldReturnProperRowLetters(int rowNumber, string expectedLetter)
        {
            _random.SetupSequence(r => r.GetRandomNumber(BOARD_SIZE))
            .Returns(COMMON_COLUMN_NUMBER)
            .Returns(rowNumber);
            _random.Setup(r => r.GetRandomNumber(NUMBER_OF_DIRECTIONS)).Returns(0);
            var shipSize = 1;

            var sut    = new ShipGenerator(_random.Object);
            var result = sut.GenerateShipFields(shipSize);

            Assert.That(result.First().Substring(0, 1), Is.EqualTo(expectedLetter));
        }
コード例 #13
0
        public void GenerateShipFields_ShouldReturnColumnNumberStaredFromOne(int columnNumber, string expectedColumnNumberResult)
        {
            _random.SetupSequence(r => r.GetRandomNumber(BOARD_SIZE))
            .Returns(columnNumber)
            .Returns(COMMON_ROW_NUMBER);
            _random.Setup(r => r.GetRandomNumber(NUMBER_OF_DIRECTIONS)).Returns(0);
            var shipSize = 1;

            var sut    = new ShipGenerator(_random.Object);
            var result = sut.GenerateShipFields(shipSize);

            Assert.That(result.First().Substring(1), Is.EqualTo(expectedColumnNumberResult));
        }
コード例 #14
0
        // [Fact]
        public void BenchMarkShipGenerator()
        {
            File.Delete("generate.txt");
            var stopWatch = new Stopwatch();

            for (int i = 0; i < 10; i++)
            {
                stopWatch.Start();
                var ships = new ShipGenerator().Generate().ToList();
                stopWatch.Stop();

                File.AppendAllText("generate.txt", $"\n{i} \t {stopWatch.ElapsedMilliseconds} ms");
            }
        }
コード例 #15
0
ファイル: Core.cs プロジェクト: XpArKeR/ldjam48
        public static void InitGame()
        {
            if (Application.platform == RuntimePlatform.WebGLPlayer || Application.platform == RuntimePlatform.Android)
            {
                IsFileAccessPossible = false;
            }
            else
            {
                IsFileAccessPossible = true;
            }

            LoadPlayerOptions();
            LoadConsumptionRates();
            LoadSavegames();

            PlanetGenerator.LoadPlanetTypes();
            ShipGenerator.LoadShipTypes();
        }
コード例 #16
0
ファイル: ShipGenerator.cs プロジェクト: talford2/SpaceX
    private void Awake()
    {
        _current = this;

        parts = new Dictionary<ShipPartType, List<GameObject>>();
        parts.Add(ShipPartType.Front, LoadParts("Front"));
        parts.Add(ShipPartType.Centre, LoadParts("Centre"));
        parts.Add(ShipPartType.Back, LoadParts("Back"));

        if (GenerateOnAwake)
            Generate();
    }
コード例 #17
0
ファイル: Library.cs プロジェクト: pjhaugh/ftl-overdrive
 public void AddShipGenerator(string name, ShipGenerator gen)
 {
     gen.Name = name;
     dctShipGenerators.Add(name, gen);
 }
コード例 #18
0
 public LodiiisBot(ShipGenerator sg, HeatMapGenerator hmg, bool useOptimalization)
 {
     _sg  = sg;
     _hmg = hmg;
     _opt = useOptimalization;
 }
コード例 #19
0
ファイル: ShipSetter.cs プロジェクト: Solokeh/Opal-Sky
 public void Awake()
 {
     setter = this;
     ShipGenerator.SetExitPrefab(exitPrefab);
     Generate();
 }
コード例 #20
0
    public void WriteFile(string jsonFile = "")    //Objective objective)
    {
        // List<InventoryData> objList = new List<InventoryData>();

        // foreach(QI_ItemData entry in itemDatabase.Items)
        // {
        //  if (inventory.GetStock(entry.Name) > 0) {
        //      InventoryData data = new InventoryData(entry.Name, inventory.GetStock(entry.Name));
        //      objList.Add(data);
        //  }
        // }
        if (jsonFile == "")
        {
            jsonFile = jsonFileName;
        }
        //Debug.Log("Saving -> " + jsonFile);
        //if (objList == null) objList = masterObjectiveList;
        string path = Application.persistentDataPath + "/" + jsonFile;
        //Write some text to the test.txt file
        StreamWriter writer = new StreamWriter(path, false);

        writer.Close();

        writer = new StreamWriter(path, true);
        Engines engine = characterData.shipEngine;
        //prefabManager.currentPrefab.GetComponent<ShipControls>().engine;
        Weapons       shipWeapon    = characterData.shipWeapon;
        ShipGenerator shipGenerator = characterData.shipGenerator;
        //prefabManager.currentPrefab.GetComponent<ShipControls>().weapon;
        Weapons groundWeapon = characterData.groundWeapon;

        //null;
        if (gameManager.playerLocation == locationType.Ground)
        {
            groundWeapon = gameManager.prefabManager.currentPrefab.GetComponent <SimpleTankController>().groundWeapon;
        }
        if (engine != null)
        {
            characterData.shipEngineName = engine.name;
        }
        if (shipWeapon != null)
        {
            characterData.shipWeaponName = shipWeapon.name;
        }
        if (shipGenerator != null)
        {
            //characterData.currentEnergy = shipGenerator.currentEnergy;
            characterData.shipGeneratorName = shipGenerator.name;
        }

        if (gameManager.playerLocation == locationType.Ground)
        {
            characterData.groundWeaponName = groundWeapon.name;
        }

        writer.WriteLine(CreateJSON(characterData));

        // foreach (NewCharacterData obj in objList) {
        //  //WriteFile(obj);
        //Debug.Log("Write -> " + CreateJSON(characterData));
        //  writer.WriteLine(CreateJSON(obj));
        // }

        writer.Close();
    }
コード例 #21
0
ファイル: Library.cs プロジェクト: thomasfn/ftl-overdrive
 public void AddShipGenerator(string name, ShipGenerator gen)
 {
     gen.Name = name;
     dctShipGenerators.Add(name, gen);
 }
コード例 #22
0
 protected MonteCarloPrediciton()
 {
     _shipGenerator = new ShipGenerator();
 }
コード例 #23
0
        public GameBoardBase CreateGameBoard()
        {
            var ships = new ShipGenerator().Generate().ToList();

            return(new GameBoardBase(new Player("test", PlayerType.Computer)).WithShips(ships));
        }
コード例 #24
0
    void OnGUI()
    {
        if (!gameManager.gameStarted)
        {
            return;
        }
        GUILayout.BeginArea(uiManager.inventoryUIRect);
        GUILayout.BeginHorizontal();
        if (GUILayout.Button("Save"))
        {
            inventoryManager.WriteFile("");
        }
        if (GUILayout.Button("Load"))
        {
            inventoryManager.ReadFile("");
        }
        GUILayout.EndHorizontal();
        scrollPosition = GUILayout.BeginScrollView(
            scrollPosition, GUILayout.Width(MaxScrollWidth), GUILayout.Height(MaxScrollHeight));
        foreach (QI_ItemData entry in inventoryManager.itemDatabase.Items)
        {
            // do something with entry.Value or entry.Key
            if (inventoryManager.inventory.GetStock(entry.Name) > 0)
            {
                GUILayout.BeginHorizontal();
                GUILayout.Box(string.Format("{0}", inventoryManager.inventory.GetStock(entry.Name)), GUILayout.Width(35));
                GUILayout.Box(entry.Name, GUILayout.Width(MaxItemWidth));
                QI_ItemData item = inventoryManager.itemDatabase.GetItem(entry.Name);
                if (item.ItemPrefab != null)
                {
                    Projectile    projectile = item.ItemPrefab.gameObject.GetComponent <Projectile>();
                    Weapons       weapon     = item.ItemPrefab.gameObject.GetComponent <Weapons>();
                    Engines       engine     = item.ItemPrefab.gameObject.GetComponent <Engines>();
                    ShipGenerator generator  = item.ItemPrefab.gameObject.GetComponent <ShipGenerator>();
                    //ShipControls shipControls = prefabManager.currentPrefab.GetComponent<ShipControls>();
                    //SimpleTankController tankController = prefabManager.currentPrefab.GetComponent<SimpleTankController>();

                    if (projectile != null)
                    {
                        GUILayout.Box("Ammo");
                    }
                    if (generator != null)
                    {
                        GUILayout.Box("Ship Generator", GUILayout.Width(MaxTypeWidth));
                        if (characterManager.characterData.shipGenerator != generator)
                        {
                            if (GUILayout.Button("Equip", GUILayout.Width(EquipButtonWidth)))
                            {
                                characterManager.characterData.shipGenerator = item.ItemPrefab.gameObject.GetComponent <ShipGenerator>();
                                inventoryManager.Drop(entry.Name);
                            }
                        }
                    }

                    if (weapon != null)
                    {
                        if (weapon.weaponPlacement == WeaponPlacement.Ship)
                        {
                            GUILayout.Box("Ship Weapon", GUILayout.Width(MaxTypeWidth));
                            if (characterManager.characterData.shipWeapon != weapon)
                            {
                                if (GUILayout.Button("Equip", GUILayout.Width(EquipButtonWidth)))
                                {
                                    characterManager.characterData.shipWeapon = item.ItemPrefab.gameObject.GetComponent <Weapons>();
                                    inventoryManager.Drop(entry.Name);
                                }
                            }
                        }
                        if (weapon.weaponPlacement == WeaponPlacement.Person)
                        {
                            GUILayout.Box("Personal Weapon", GUILayout.Width(MaxTypeWidth));
                            if (characterManager.characterData.groundWeapon != weapon)
                            {
                                if (GUILayout.Button("Equip", GUILayout.Width(EquipButtonWidth)))
                                {
                                    characterManager.characterData.groundWeapon = item.ItemPrefab.gameObject.GetComponent <Weapons>();
                                    inventoryManager.Drop(entry.Name);
                                }
                            }
                        }
                    }

                    if (engine != null)
                    {
                        GUILayout.Box("Engine", GUILayout.Width(MaxTypeWidth));
                        if (characterManager.characterData.shipEngine != engine)
                        {
                            if (GUILayout.Button("Equip", GUILayout.Width(EquipButtonWidth)))
                            {
                                characterManager.characterData.shipEngine = item.ItemPrefab.gameObject.GetComponent <Engines>();
                                inventoryManager.Drop(entry.Name);
                            }
                        }
                    }


                    //GUILayout.Box(item.ItemPrefab.gameObject.name, GUILayout.Width(MaxItemWidth));
                }

                if (inventoryManager.inventory.GetStock(entry.Name) >= 1)
                {
                    if (GUILayout.Button("Drop", GUILayout.Width(DropButtonWidth)))
                    {
                        inventoryManager.Drop(entry.Name, 1);
                    }
                }
                if (inventoryManager.inventory.GetStock(entry.Name) > 1)
                {
                    if (GUILayout.Button("Drop All", GUILayout.Width(DropAllButtonWidth)))
                    {
                        inventoryManager.Drop(entry.Name, inventoryManager.inventory.GetStock(entry.Name));
                    }
                }
                else
                {
                    GUILayout.Box("Drop All", GUILayout.Width(DropAllButtonWidth));
                }
                GUILayout.EndHorizontal();
            }

            // End the scrollview we began above.
        }
        GUILayout.EndScrollView();

        //GUILayout.Box(entry.Key);

        //GUILayout.Box(string.Format("{0}",inventoryManager.inventory.GetStock("ShipEngine1")));
        //GUILayout.Box(string.Format("{0}",inventoryManager.inventory.GetStock("Health Potion")));
        //if (GUILayout.Button("+Potion")) inventoryManager.PickupPotion("nothing");
        //if (GUILayout.Button("=Potion")) inventoryManager.DropPotion("nothing");
        GUILayout.EndArea();
    }
コード例 #25
0
ファイル: ShipSetter.cs プロジェクト: Solokeh/Opal-Sky
 public void Generate()
 {
     ShipGenerator.Generate(player, backgroundPrefab, alienPrefab, holderPrefab, platformPrefab, blockPrefab, pointPrefab, sizeX, sizeY, incrementX, incrementY, threshold);
 }