private void RandomMoove(Collision collision) { Random rd = new Random(); DIRECTION tmp; List<DIRECTION> possibilites = collision.GetPossibleDirection(this); if(this.direction!=DIRECTION.NONE) { possibilites.Remove(this.direction); possibilites.Remove(this.OppositeDirection(this.direction)); } if(possibilites.Count!=0) { tmp = possibilites.ElementAt(rd.Next(possibilites.Count)); if (this.Direction == DIRECTION.UP || this.Direction == DIRECTION.DOWN || this.Direction == DIRECTION.NONE) { if (tmp == DIRECTION.UP || tmp == DIRECTION.DOWN) { this.Direction = (tmp == DIRECTION.UP ? DIRECTION.UP : DIRECTION.DOWN); } else if (tmp == DIRECTION.RIGHT || tmp == DIRECTION.LEFT) { if (this.GetCaseYSup(collision.Map.Tile_size) != -1 || this.GetCaseYInf(collision.Map.Tile_size) != -1) { this.Direction = (tmp == DIRECTION.RIGHT ? DIRECTION.RIGHT : DIRECTION.LEFT); } } } if (this.Direction == DIRECTION.RIGHT || this.Direction == DIRECTION.LEFT || this.Direction == DIRECTION.NONE) { if (tmp == DIRECTION.RIGHT || tmp == DIRECTION.LEFT) { this.Direction = (tmp == DIRECTION.RIGHT ? DIRECTION.RIGHT : DIRECTION.LEFT); } else if (tmp == DIRECTION.UP || tmp == DIRECTION.DOWN) { if (this.GetCaseXSup(collision.Map.Tile_size) != -1 || this.GetCaseXInf(collision.Map.Tile_size) != -1) { this.Direction = (tmp == DIRECTION.UP ? DIRECTION.UP : DIRECTION.DOWN); } } } } }