Когда строитель занят..
| |
minepecraft | Дата: Четверг, 02 Июля 2015, 11:37 | Сообщение # 1 |
участник
Сейчас нет на сайте
| Ребят,проблема вот в чем,если строитель занят,то не показывает его занятость,т.е. не отнимается от переменной свободных строителей 1 единица.Раньше все работало ,но сейчас.........В общем вот исходник:http://rghost.ru/8G8RRbmrF , зарание спасибо!С меня плюсик)
|
|
| |
Леонид | Дата: Четверг, 02 Июля 2015, 16:57 | Сообщение # 2 |
постоянный участник
Сейчас нет на сайте
| Я ни капли не понял из твоего описания, даже отдаленно. "Не показывает, т.е. не отнимается"?
|
|
| |
Rikstone26 | Дата: Четверг, 02 Июля 2015, 19:19 | Сообщение # 3 |
частый гость
Сейчас нет на сайте
| Цитата Леонид ( ) Я ни капли не понял из твоего описания, даже отдаленно. "Не показывает, т.е. не отнимается"? Я так понял у него в игре есть индикатор, на котором написано количество свободных "рабочих", как только игрок дает команду рабочего, что-то делать, на индикаторе снижается количество рабочих. Код на индикаторе 12 рабочих свободно -игрок даёт приказ на индикаторе 11 рабочих свободно Исходник его не смотрел.
|
|
| |
minepecraft | Дата: Пятница, 03 Июля 2015, 18:50 | Сообщение # 4 |
участник
Сейчас нет на сайте
| Rikstone26, да,именно,верно понял))) Добавлено (02 июля 2015, 19:22) --------------------------------------------- Ребят,сразу разъясню: переменная global.workersmax-макс кол-во рабочих(т.е. чтобы показывало сколько рабочих вообще)а global.workers-рабочие,которые свободны. Добавлено (03 июля 2015, 18:50) --------------------------------------------- Ну ребят,вы где?)
|
|
| |
USeR14 | Дата: Суббота, 04 Июля 2015, 17:27 | Сообщение # 5 |
RUSOriginal Studio
Сейчас нет на сайте
| Пока не смог до конца разобраться в работе кода, но выявил несколько ошибок: - Во первых, у тебя в коде рабочего события Step стоит на 4 строке переменная wasFree вместо wasfree. - Во вторых, переменные isfree и wasfree никогда не меняются и всегда равны 1 (true).
|
|
| |
Rean | Дата: Суббота, 04 Июля 2015, 20:14 | Сообщение # 6 |
участник
Сейчас нет на сайте
| USeR14 всё правильно заметил. Не забывайте, что имена переменных чувствительны к регистру! Ко всему прочему, значения "global.workers" и "global.workersmax" каждую секунду увеличивается на 1. Так и должно быть? В общем, логика работы программы не очевидна. Сперва имеет смысл рассказать что и как должно работать, что мы должны увидеть во время функционирования приложения, какие параметры в какой момент времени должны изменяться и прочее. Ведь сейчас лето. А летом, насколько мне известно, все телепаты в отпуске.
Взглянул более подробно по скрипту: всё же переменные "wasfree" и "isfree" меняются. И если изменить у объекта "o_worker" в событии "step" на 4 строке скрипта с на , то получится именно то, что требовалось. Но всё же, оформление кода оставляет желать лучшего Старайтесь комментировать код более подробно. И желательно на английском. (у меня, видимо, из-за steam версии съехала кодировка). Не забывайте выравнивать строки табуляцией, давать переменным говорящие имена (а не просто "global.p") и разделять команды точкой с запятой ";" - всё это помогает при прочтении вашего кода другими программистами. Следовательно, больше шансов, что вам помогут в решении ваших задач.
Сообщение отредактировал Rean - Суббота, 04 Июля 2015, 20:50 |
|
| |
minepecraft | Дата: Суббота, 04 Июля 2015, 21:29 | Сообщение # 7 |
участник
Сейчас нет на сайте
| Rean, да,комментарии и код оставляют желать лучшего,странно,что это все так работает,ведь раньше все работало...Ну и лови плююс) Добавлено (04 июля 2015, 21:26) --------------------------------------------- Да,могу и на английском делать комментарии,я его знаю довольно таки хорошо)Но некоторые его знают плохо,по этому и не знаю как быть)))) Добавлено (04 июля 2015, 21:27) --------------------------------------------- Кстати,у меня там проблемка,ну это не проблема вовсе,но все же стоит ли менять dir(1) на false,когда dir(2)становится true?Эти массивы отвечают за передвижение Добавлено (04 июля 2015, 21:29) --------------------------------------------- USeR14, меняются:^
|
|
| |
Rean | Дата: Воскресенье, 05 Июля 2015, 10:32 | Сообщение # 8 |
участник
Сейчас нет на сайте
| minepecraft, мягко говоря, код не оптимизирован и очень запутан для понимания. Большое количество нетривиально используемых массивов. По-хорошему, надо брать и всё переписывать, предварительно обдумав все необходимые алгоритмы. Коль опыт пока не позволяет просчитывать всё в голове - составляйте алгоритмы на бумаге, просчитывайте их. Не думайте, что это скучно и неинтересно - напротив! Во-первых, это облегчит понимание протекающих процессов, а также повысит ваши навыки как программиста и разработчика. Во-вторых, сократит (да, именно!) время на решение как отдельно взятых задач, так и воплощение всего задуманного в целом. А это значит, что ценный энтузиазм не будет расходоваться попросту на "тупиковых" решениях.
Что касательно "dir[]". На первый взгляд, данный массив вообще не имеет смысла. Давайте попробуем перечислить случаи использования массива: 1)Код dir[0] = true; dir[1] = false; 2)Код dir[0] = false; dir[1] = true; 3)Код dir[0] = false; dir[1] = false;
Как видно выше - у нас всего три случая использования массива, которые дают три разных варианта. А ведь можно сделать проще, используя только одну переменную: Код dir = 0; //Объект стоит dir = 1; //Объект направлен влево dir = 2; //Объект направлен вправо И в нужный момент времени можно проверять/менять значение переменной (так называемый "флаг"). Для наглядности кода можно использовать перечисления "enum": Код // Объявляем перечисления direction где-нибудь в событии Create enum direction { none, left, right }
//Пример использования ... global.currentWorker.dir = direction.none; ...
Код становится прозрачным и легкочитаемым. Не то что сам не запутаешься - другим будет легко читать ваш код, как художественную книгу.
P.S. В своих примерах выше я использовал индексы массива "dir", начиная с 0, потому что именно так принято. Если вы используете только индексы 1 и 2, в памяти всё равно хранится значение для 0 индекса. Даже, если вы к нему не обращаетесь. Это не рационально.
|
|
| |
|