예제 #1
0
 /// <summary>
 ///  Add player snake to game.
 /// </summary>
 public static void AddPlayerSnake(int startSnakeLength = 20)
 {
     Snakes.PlayerSnake = new Snakes(Form1.width / 2, Form1.height / 2, startSnakeLength, Color.Black)
     {
         snakeLength = 0
     };
 }
예제 #2
0
        /// <summary>
        /// Load saved snakes properites from database. (savegame_snakes table)
        /// </summary>
        /// <param name="loadName">saveGameNameID (name ID of saved game)</param>
        /// <param name="connection">MSSQL server connection</param>
        private static void LoadSaveGame_snakes(string loadName, SqlConnection connection)
        {
            connection.Open();
            string     cmdtext = "SELECT * FROM savegame_snakes WHERE saveGameNameID = @loadName";
            SqlCommand cmd     = new SqlCommand(cmdtext, connection);

            cmd.Parameters.AddWithValue("@loadName", loadName);
            SqlDataReader reader = cmd.ExecuteReader();

            while (reader.Read()) //nahraje tam všechny hady (kde je saveGameID == loadName a jede všechny snakeID)
            {
                int startSnakeLength = Convert.IsDBNull((int)reader["startSnakeLength"]) ? 0 : (int)reader["startSnakeLength"];
                if (!(bool)reader["playerSnake"] == true) //playerSnake
                {
                    Snakes snake = new Snakes(random.Next(Form1.width), random.Next(Form1.height), startSnakeLength, Snakes.snakeColorsList[(int)reader["snakeColorID"]], (int)reader["snakeID"]);
                    snake.x           = (int)reader["posX"];
                    snake.y           = (int)reader["posY"];
                    snake.snakeLength = (int)reader["snakeLength"];
                    //snake.direction = (string)reader["direction"];
                    snake.insideSnake = Convert.IsDBNull((bool)reader["insideSnake"]) ? false : (bool)reader["insideSnake"];
                    snake.superSnake  = Convert.IsDBNull((bool)reader["superSnake"]) ? false : (bool)reader["superSnake"];
                    Snakes.snakesList.Add(snake);
                }
                else //botSnakes
                {
                    Snakes.PlayerSnake             = new Snakes(Form1.width / 2, Form1.height / 2, startSnakeLength, Snakes.snakeColorsList[(int)reader["snakeColorID"]]);
                    Snakes.PlayerSnake.x           = (int)reader["posX"];
                    Snakes.PlayerSnake.y           = (int)reader["posY"];
                    Snakes.PlayerSnake.snakeLength = (int)reader["snakeLength"];
                    Snakes.PlayerSnake.direction   = (string)reader["direction"];
                    Snakes.snakesList.Add(Snakes.PlayerSnake);
                }
            }
            connection.Close();
        }
예제 #3
0
 /// <summary>
 /// Remove snake from game and explode him.
 /// </summary>
 /// <param name="snake">snake to remove</param>
 public static void RemoveSnake(Snakes snake)
 {
     Explode.explosions.Add(new Explode(4, 150, (snake.x + Explode.smerDictX[snake.direction]) * Form1.sizeX, (snake.y + Explode.smerDictY[snake.direction]) * Form1.sizeY, Color.OrangeRed));
     for (int a = 0; a < Form1.width; a++)             //remove snake from array
     {
         for (int b = 0; b < Form1.height; b++)
         {
             if (Form1.snakeArr[a, b] == snake.snakeNumber)
             {
                 Form1.snakeArr[a, b] = 0;
             }
         }
     }
     snakesList.Remove(snake);
 }
예제 #4
0
 /// <summary>
 /// Remove crashed bot snake, when playerSnake - "game over" annoucement on crash.
 /// </summary>
 /// <param name="snake">crashed snake</param>
 /// <returns>true when playerSnake crashed, false when any else snake crashed</returns>
 public static bool GameOver(Snakes snake)
 {
     snake.failPos = new Point(snake.x, snake.y);
     if (snake != Snakes.PlayerSnake) //bot snake
     {
         snake.dead = true; Snakes.RemoveSnake(snake);
     }
     else //playerSnake
     {
         Form1.timer.Enabled = false;
         gameover            = true;
         gameIsRunning       = false;
         return(true);
     }
     return(false);
 }
예제 #5
0
 /// <summary>
 /// shoot slowing poison on target snake
 /// </summary>
 public void castSlowingPoison(Snakes target)
 {
     target.slowed = false;
 }
예제 #6
0
        //level-control:
        /// <summary>
        /// Select default defined game level.
        /// </summary>
        /// <param name="lvl">selected level</param>
        public static void SelectLevel(int lvl)
        {
            selectedLevelName = defaultLevelNames[lvl]; //change selected level name
            switch (lvl)
            {
            case 1:     //custom level
            {
                Snakes.AddVenomSnake(20, 20, 10, Color.Crimson, "left");
                for (int i = 1; i < 3; i++)
                {
                    Snakes.AddSnake(random.Next(Form1.width - 1), random.Next(Form1.height - 1), 10, colorArr[random.Next(colorArr.Length)]);
                }
                break;
            }

            case 2:
            {
                passableEdges = false;
                //for (int i = 0; i < 4; i++)
                //{
                //    Snakes.AddSnake(random.Next(Form1.width - 1), random.Next(Form1.height - 1), 10, colorArr[random.Next(colorArr.Length)]);
                //    //Snakes.AddSnake(random.Next(Form1.width - 1), random.Next(Form1.height - 1), 0, colorArr[random.Next(colorArr.Length)]);
                //}
                //CreateBlocks(Form1.width / 3 - 5, Form1.height / 3, 42, 2);
                //CreateBlocks(Form1.width / 3 - 5, Form1.height / 3 + 12, 42, 2);
                Snakes.AddSnake(30, 30, 10, Color.Red);
                Snakes.AddSnake(10, 10, 1, Color.Orange);
                break;
            }

            case 3:
            {
                for (int i = 0; i < 10; i++)
                {
                    Snakes.AddSnake(random.Next(Form1.width - 1), random.Next(Form1.height - 1), 10, Color.Black);
                    Snakes.AddSnake(random.Next(Form1.width - 1), random.Next(Form1.height - 1), 0, Snakes.snakeColorsList[random.Next(Snakes.snakeColorsList.Count)], super: true);;
                }
                CreateBlocks(Form1.width / 2 + 10, 0, 4, Form1.height);
                break;
            }

            case 4:
            {
                Snakes.AddSnake(random.Next(Form1.width), random.Next(Form1.height), 0, Color.Black);
                Snakes.AddSnake(random.Next(Form1.width), random.Next(Form1.height), 0, Color.Indigo);
                Snakes.AddSnake(random.Next(Form1.width - 1), random.Next(Form1.height - 1), 42, Color.Indigo, super: true);
                Snakes.AddSnake(random.Next(Form1.width - 1), random.Next(Form1.height - 1), 42, Color.IndianRed, inside: true);
                Snakes.AddSnake(random.Next(Form1.width - 1), random.Next(Form1.height - 1), 42, Color.IndianRed, inside: true, super: true);
                //Snakes.AddSnake(89, 25, 42, colorArr[random.Next(colorArr.Length)], super: true);
                //passableEdges = false;
                break;
            }

            case 5:
            {
                //killOnMyself = false;
                for (int i = 0; i < 4; i++)         //some snakes to game
                {
                    Snakes.AddSnake(random.Next(Form1.width - 1), random.Next(Form1.height - 1), 10, Snakes.snakeColorsList[random.Next(Snakes.snakeColorsList.Count)]);
                }
                CreateBlocks(Form1.width / 3 - 5, Form1.height / 3, 42, 2);
                CreateBlocks(Form1.width / 3 - 5, Form1.height / 3 + 12, 42, 2);
                break;
            }

            default: { Snakes.AddSnake(random.Next(Form1.width - 1), random.Next(Form1.height - 1), 0, Color.Black, inside: false); } break;
            }
        }