/// <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 }; }
/// <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(); }
/// <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); }
/// <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); }
/// <summary> /// shoot slowing poison on target snake /// </summary> public void castSlowingPoison(Snakes target) { target.slowed = false; }
//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; } }