2017-01-16 2 views
0

Так что я пытаюсь создать программу, которая использует API Лиги Легенд в C#.Выполнение кода останавливается после цикла?

Я нашел пакет NuGet, который упрощает использование API.

Все работает нормально до тех пор, пока выполнение кода не прекращается после первого использования цикла .

Вот код: (конечно, я вынул ключ API)

string[] summnames; 
long[] champids; 
long[] teamids; 
long[] champs; 

CreepScoreAPI.ParticipantLive[] enemy; 
CreepScoreAPI.ParticipantLive[] ally; 
CreepScoreAPI.ParticipantLive centsumm; 
CreepScoreAPI.ParticipantLive[] champsss; 
CreepScoreAPI.ChampionStatic[] champions; 
CreepScoreAPI.Summoner[] sumners; 
CreepScoreAPI.League[] leaguesz; 

Dictionary<string, List<CreepScoreAPI.League>>[] leagues; 

int[] champidsint; 
string[] champnames; 

int s; 
int se; 

public async Task<string> game(string summname) 
{ 
    string data; 

    CreepScoreAPI.CreepScore cs = new CreepScoreAPI.CreepScore("api key"); 

    var summoner = await cs.RetrieveSummoner(CreepScoreAPI.CreepScore.Region.EUNE, summname); 
    long summid = summoner.id; 
    var thegame = await summoner.RetrieveCurrentGameInfo(); 

    CreepScoreAPI.ParticipantLive[] participants = thegame.participants.ToArray(); 

    for (int i = 0; i <= 9; i++) { summnames[i] = participants[i].summonerName;} 

    for (int i = 0; i <= 9; i++) { champids[i] = participants[i].championId;} 

    for (int i = 0; i <= 9; i++) { teamids[i] = participants[i].teamIdLong;} 

    for (int i = 0; i <= 9; i++) { champids[i] = participants[i].championId;} 

    for (int i = 0; i <= 9; i++) { champidsint[i] = Convert.ToInt32(champids[i]);} 

    for (int i = 0; i <= 9; i++) { champions[i] = await cs.RetrieveChampionData(CreepScoreAPI.CreepScore.Region.EUNE, champidsint[i], CreepScoreAPI.Constants.StaticDataConstants.ChampData.All, "en_US", "7.1.1",false); } 

    for (int i = 0; i <= 9; i++) { champnames[i] = champions[i].name; } 

    for (int i = 0; i <= 9; i++) { sumners[i] = await cs.RetrieveSummoner(CreepScoreAPI.CreepScore.Region.EUNE, summnames[i]); } 

    for (int i = 0; i <= 9; i++) { leagues[i] = await sumners[i].RetrieveLeague(); } 

    /* teamsorter */ 
    foreach (CreepScoreAPI.ParticipantLive p in participants) 
    { 
     if (p.summonerId == summid) 
     { 
      centsumm = p; 
     } 

     if (p.teamIdLong == centsumm.teamIdLong) 
     { 
      ally[s] = p; 
      s++; 
     } 
     if (p.teamIdLong != centsumm.teamIdLong) 
     { 
      enemy[se] = p; 
      se++; 
     } 
    } 

    data = " I'LL FORMAT A STRING THAT OUTPUTS ALL THE DATA I NEED HERE"; 
    return data; 
} 

Когда я вызываю функцию игры и введите имя в призывателе я получаю в первый цикл и Безразлично» t даже заполняет массив summnames [] и останавливает выполнение без кода ошибки.

То, что я пытаюсь сделать со всеми циклами, заполняет переменные, которые я сделал перед функцией, поэтому я могу использовать их позже для других целей.

+6

Вы никогда не назначаете массив 'summnames' или любому другому массиву. И если вы сделаете и сделаете их все размером 10, вы можете просто использовать один цикл 'for'. – juharr

ответ

0

Я думаю, вы должны назначить все массивы и установить их длину по меньшей мере 10

это могло бы решить эту проблему.

+1

Как вы думаете, «назначить все массивы» означает, что кто-то такой зеленый, что он не знает достаточно, чтобы инициализировать их? Вы не можете предположить, что это будет означать что-то очень конкретное. –

+0

... на второй мысли, если бы ОП принял ответ, это явно означало в его случае достаточно. –

Смежные вопросы