Цикл while для поиска, когда переменные перестают существоватьC#

Место общения программистов C#
Ответить
Anonymous
 Цикл while для поиска, когда переменные перестают существовать

Сообщение Anonymous »

Для контекста: я спрашиваю об этом в отношении видеоигры Space Engineers. В данный момент у меня нет доступа к игре, поэтому я решил использовать онлайн-переводчик, чтобы приблизить свою цель, чтобы проверить, верна ли теория.
У меня есть ряд объектов, из которых я могу собрать данные. Точное число неизвестно и может измениться во время выполнения. На объекты ссылаются по имени, и хотя имена также неизвестны, они следуют соглашению об именах, поэтому их можно вычислить. Для аппроксимации я ввел пять переменных, соответствующих шаблону именования, и присвоил им значения. Затем я использовал цикл while для увеличения отдельной переменной и подсчета количества найденных переменных. Все, что мне нужно знать, это можно ли использовать цикл while, чтобы найти, где заканчиваются имена.

Код: Выделить всё

  int i = 0;

// These represent external sources (objects). How many there are is unknown
// but  they follow this naming convention.
int ex1 = 1;
int ex2 = 2;
int ex3 = 3;
int ex5 = 4; // This is to test the script’s limits; should fail and return ‘3’
int ex6 = 5; // Next test is rename this “ex4” and rerun the script. Should count all 5

// The purpose of this function is
// to count how many sources there are.
while("ex"+(i+1)){
i++;
}

Console.WriteLine(i);
Использование интерпретатора на сайте w3schools: не запускается, ошибок нет. Я пытался создать имена переменных в переменной строкового типа, но без изменений.
Да, кроме того, большая часть моего опыта работы с C исходит от Arduino и PHP с небольшим количеством BASH, разбросанного здесь и там.
[Редактировать]
Думаю, я понял путаницу в сообщении. Переменные в коде («ex1» — «ex6») заменяют отдельные источники данных. Имена переменных заменяют имена источников. На первый взгляд использование массивов звучит хорошо, но проблема с массивами заключается в том, что они имеют определенный размер во время компиляции и выполнения, а ключи постоянно нумеруются, независимо от того, какие манипуляции с данными вы выполняете. Там, где идет этот код, количество источников данных может измениться в любой момент в любую сторону, и новые источники данных уже будут пронумерованы при подключении (количество всегда увеличивается с каждым новым вложением). Я собираюсь манипулировать переменными в скрипте таким образом, чтобы имитировать то, что происходит в игре. Моя общая идея состоит в том, что я могу разобраться с логикой, пока я вдали от дома, а затем вернуться и модифицировать ее в игре, когда буду дома. Версия игры, которая у меня сейчас есть, приведена ниже.

Код: Выделить всё

 Runtime.UpdateFrequency = UpdateFrequency.Update10;
}

public void Main(){
IMyBatteryBlock battery;
float charge; // Current charge level
float totchrg = 0; // Total combined charge
float max; // Capacity
float totmax = 0; // Total capacity
float lvl; // Charge level (as a percentage)
float totlvl; // Overall charge level (as a percentage)
int cnt = 0;

while(GridTerminalSystem.GetBlockWithName(“Battery “+(cnt+1)) as ImyBatteryBlock){
battery = GridTerminalSystem.GetBlockWithName("Battery “+(cnt+1)) as ImyBatteryBlock;
charge = battery.CurrentStoredPower;
totchrg = totchrg + charge;
max = battery.MaxStoredPower;
totmax = totmax + max;
lvl = 100 * (charge / max);
Echo(lvl.ToString("0.00"));
}

totlvl = 100 * (totchrg/totmax);
Echo(cnt.ToString("0")+" batteries found with a charge of "+totlvl.ToString("0.00")+" percent.");
}
[Edit 2]
Я наконец-то вернулся домой после работы в двойную смену, в которую меня заставили, и наконец смог что-то делать в игре. Код не выполнен. После некоторого редактирования и попыток я сдался и начал исследовать что-то еще. Так я обнаружил, что в игре уже есть функция, которая делает то, что мне нужно (что-то похожее на то, что Понтус сказал в комментариях), так что все это в любом случае оказалось бесполезным экспериментом.


Подробнее здесь: https://stackoverflow.com/questions/797 ... p-existing
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»