Для контекста: я спрашиваю об этом в отношении видеоигры 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.");
}
Подробнее здесь: https://stackoverflow.com/questions/797 ... p-existing
Цикл while для поиска, когда переменные перестают существовать ⇐ C#
Место общения программистов C#
-
Anonymous
1760063075
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.");
}
Подробнее здесь: [url]https://stackoverflow.com/questions/79786899/while-loop-to-find-when-variables-stop-existing[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия