Outcore

Outcore

68 ratings
Руководство по Idle Game
By Xannix
Просто руководство, где пишется о решении всех восьми этапов в Idle Game (собственно, почему бы и нет?)
2
4
2
   
Award
Favorite
Favorited
Unfavorite
Введение
Всем доброе утро/день/вечер (впрочем, неважно). Сегодня мы будем изучать (нет) JavaScript. Так как уже ночь, а мне нечем заняться, я решил по-быстрому написать это руководство, надеюсь оно кому-то поможет. Приступим.

Подготовка
Для начала хочу вставить сюда функцию, которую подробно разберу, если вы захотите дальше сами разбираться в этой игре. Если вам нужны готовые варианты для всех уровней - пролистывайте.
Однако сразу скажу, что вы можете использовать как обычные действия по типу MoveForward, так и их укороченные версии, представленные ниже:

Действие
Короткая версия
MoveForward
m
TurnLeft
l
TurnRight
r
DoNothing
n
GetWorkerInventoryItems
inv
ThrowItem
t
SyncWorkers
SW

Функция:

const m = MoveForward, l = TurnLeft, r = TurnRight, n = DoNothing; function todo(num, action) { let i = 0 for(i;i < num; i++) { action() } }

Первая строка - переменные для коротких вариантов действий.

function todo { ... } - непосредственно главная часть, которая позволит в будущем в разы сократить код (например, на 4 этапе код сокращается в общей сложности в два раза).

i - переменная, используемая в for.

for ( ... ) { ... } - цикл, который повторяет действие столько раз, сколько вам нужно.

action() - переменная, которая подставляет вместо себя любое нужное вам действие.

Обратите внимание, при использовании функции todo вам не нужно писать скобки после действия!

Вот, кстати, пример использования функции:
todo(1, m)
Где 1 - то, сколько раз вам нужно выполнить действие, m - само действие (в моём случае это сокращённый вариант MoveForward).




Надеюсь, что вам всё было понятно, а теперь переходим к непосредственно готовым вариантам текста. (Примечания к коду будут написаны после него, если таковые есть).
Этап 1
Worker1:

const m = MoveForward, l = TurnLeft, r = TurnRight, n = DoNothing; function todo(num, action) { let i = 0 for(i;i < num; i++) { action() } } todo(4, m)
Этап 2
Worker1:

const m = MoveForward, l = TurnLeft, r = TurnRight, n = DoNothing; function todo(num, action) { let i = 0 for(i;i < num; i++) { action() } } todo(6, m) todo(1, r) todo(6, m) todo(1, r) todo(4, m)
Этап 3
Worker1:

const m = MoveForward, l = TurnLeft, r = TurnRight, n = DoNothing; function todo(num, action) { let i = 0 for(i;i < num; i++) { action() } } todo(1, l) todo(2, m) todo(1, l) todo(4, m) todo(1, l) todo(4, m) todo(1, r) todo(2, m) todo(1, r) todo(9, m)
Этап 4
Worker1:

const m = MoveForward, l = TurnLeft, r = TurnRight, n = DoNothing; function todo(num, action) { let i = 0 for(i;i < num; i++) { action() } } todo(2, r) todo(2, m) while(true) { todo(8, m) todo(1, r) todo(2, m) todo(2, r) todo(5, m) todo(1, l) todo(8, m) todo(6, n) todo(1, l) todo(3, m) todo(1, l) }

Прим. while(true) { ... } - бесконечный цикл (как только закончит все действия, начнёт их заново, и так по кругу).
Этап 5
Worker1:

const m = MoveForward, l = TurnLeft, r = TurnRight, n = DoNothing, inv = GetWorkerInventoryItems; function todo(num, action) { let i = 0 for(i;i < num; i++) { action() } } todo(1, m) todo(1, l) todo(1, m) todo(1, r) todo(3, m) todo(2, r) while(true) { todo(3, m) todo(1, l) todo(4, m) todo(1, l) todo(2, m) todo(2, l) todo(2, m) todo(1, r) todo(1, m) todo(1, l) todo(7, m) todo(1, l) todo(4, m) todo(2, r) todo(2, m) todo(1, r) todo(3, m) todo(2, l) todo(3, m) todo(1, r) todo(5, m) todo(1, r) todo(2, m) todo(1, l) todo(5, m) todo(1, r) todo(7, m) todo(1, r) todo(1, m) todo(1, l) todo(1, m) todo(10, n) todo(2, r) todo(1, m) todo(1, r) todo(3, m) todo(1, r) todo(1, m) todo(2, l) todo(4, m) todo(1, l) todo(7, m) todo(1, r) todo(2, m) todo(2, r) todo(6, m) todo(2, l) }
Этап 6
Worker1:
const m = MoveForward, l = TurnLeft, r = TurnRight, n = DoNothing, inv = GetWorkerInventoryItems, t = ThrowItem, SW = SyncWorkers; function todo(num, action) { let i = 0 for(i;i < num; i++) { action() } } todo(1, r) while(true) { todo(10, n) todo(3, m) todo(1, r) todo(2, m) todo(2, l) todo(4, m) todo(2, r) todo(2, m) todo(1, r) todo(5, m) todo(5, n) todo(2, l) todo(2, m) todo(36, n) }

Worker2:
const m = MoveForward, l = TurnLeft, r = TurnRight, n = DoNothing, inv = GetWorkerInventoryItems, t = ThrowItem, SW = SyncWorkers; function todo(num, action) { let i = 0 for(i;i < num; i++) { action() } } todo(2, r) while(true) { todo(5, m) todo(1, l) todo(3, m) todo(1, l) todo(4, m) todo(1, l) todo(1, m) todo(1, r) todo(2, m) todo(1, r) todo(1, m) todo(1, l) todo(4, m) todo(1, l) todo(5, m) todo(1, l) todo(13, n) todo(6, m) todo(1, l) todo(8, m) todo(1, l) todo(1, m) todo(4, n) todo(1, m) todo(1, l) todo(6, m) todo(1, l) todo(1, m) }
Этап 7
Worker1:
const m = MoveForward, l = TurnLeft, r = TurnRight, n = DoNothing, inv = GetWorkerInventoryItems, t = ThrowItem, SW = SyncWorkers; function todo(num, action, int) { let i = 0 for(i;i < num; i++) { action(int) } } while(true) { todo(5, m) todo(1, r) todo(2, m) todo(2, l) todo(3, m) todo(1, r) todo(2, m) todo(25, n) todo(1, l) todo(5, m) todo(1, l) todo(1, m) todo(4, n) todo(1, l) todo(8, m) todo(1, r) todo(1, m) todo(2, l) todo(2, m) todo(22, n) todo(2, r) todo(4, m) todo(1, r) todo(7, m) todo(12, n) todo(1, l) todo(1, m) todo(1, r) todo(3, m) todo(1, r) todo(3, m) todo(1, l) todo(1, m) todo(1, r) todo(2, m) todo(2, t, 0) todo(2, r) todo(7, m) todo(1, l) todo(9, m) todo(1, l) }

Worker2:
const m = MoveForward, l = TurnLeft, r = TurnRight, n = DoNothing, inv = GetWorkerInventoryItems, t = ThrowItem, SW = SyncWorkers; function todo(num, action, int) { let i = 0 for(i;i < num; i++) { action(int) } } todo(1, r) while(true) { todo(5, n) todo(4, m) todo(1, l) todo(2, m) todo(1, r) todo(3, m) todo(1, r) todo(6, m) todo(1, r) todo(2, m) todo(2, l) todo(6, m) todo(1, r) todo(1, m) todo(5, t, 0) todo(1, l) todo(5, m) todo(1, l) todo(6, m) todo(1, r) todo(6, m) todo(2, l) todo(3, m) todo(1, r) todo(2, m) todo(2, l) todo(8, m) todo(1, r) todo(5, m) todo(1, l) todo(5, t, 0) todo(1, r) todo(11, m) todo(1, l) todo(29, n) todo(1, r) todo(3, m) todo(1, r) todo(5, m) todo(1, l) todo(2, m) todo(3, n) todo(2, l) todo(2, m) }

Прим. В функцию добавлен параметр int, отвечающий за id предметов в действии ThrowItem.

Пример:
todo(5, t, 0)
где todo - функция, 5 - кол-во раз, сколько нужно выполнить действие, t - действие ThrowItem, 0 - id предмета.
Этап 8
Worker1:
const m = MoveForward, l = TurnLeft, r = TurnRight, n = DoNothing, inv = GetWorkerInventoryItems, t = ThrowItem, SW = SyncWorkers; function todo(num, action, int) { let i = 0 for(i;i < num; i++) { action(int) } } todo(1, r) todo(5, m) todo(1, l) todo(1, m) while(true) { todo(1, m) todo(2, r) todo(1, m) todo(2, l) }

Worker2:
const m = MoveForward, l = TurnLeft, r = TurnRight, n = DoNothing, inv = GetWorkerInventoryItems, t = ThrowItem, SW = SyncWorkers; function todo(num, action, int) { let i = 0 for(i;i < num; i++) { action(int) } } todo(2, r) while(true) { todo(23, n) todo(1, m) todo(1, l) todo(7, m) todo(1, r) todo(2, m) todo(1, l) todo(9, m) todo(1, r) todo(2, m) todo(1, r) todo(1, m) todo(1, l) todo(4, n) todo(3, m) todo(1, r) todo(3, m) todo(1, r) todo(7, n) todo(7, m) todo(1, l) todo(16, m) todo(1, r) todo(1, m) todo(3, n) todo(1, m) todo(1, r) todo(4, m) todo(1, r) todo(1, m) }

Worker3:
const m = MoveForward, l = TurnLeft, r = TurnRight, n = DoNothing, inv = GetWorkerInventoryItems, t = ThrowItem, SW = SyncWorkers; function todo(num, action, int) { let i = 0 for(i;i < num; i++) { action(int) } } todo(2, m) while(true) { todo(4, m) todo(1, l) todo(5, m) todo(25, n) todo(1, m) todo(1, r) todo(2, m) todo(5, n) todo(1, r) todo(1, m) todo(1, r) todo(1, m) todo(2, l) todo(23, n) todo(2, m) todo(1, l) todo(1, m) todo(2, r) todo(3, n) todo(6, m) todo(1, r) todo(7, m) todo(2, l) todo(9, n) }
Окончание
Вот и конец руководства. Надеюсь, что оно было полезным для вас!

(тут должна была быть гифка с Люми, но lumi.gif украли)

Руководство special for Катер.
32 Comments
Moti 11 Dec, 2024 @ 5:45am 
хах, я просто перезапустил игру и всё работает. Спасибо за гайд:celeste_strawberry:
Moti 11 Dec, 2024 @ 5:29am 
у меня у одного не работает 7 этап? Воркеры делают рандомные действия, половина из которых failed
Xannix  [author] 5 Aug, 2023 @ 5:59am 
Алгоритм всегда можно оптимизировать/переписать самостоятельно. Я просто писал тот, что первым пришёл в голову. Всё равно главная часть - это функция todo, которая и сокращает код в разы
да паебать мне 5 Aug, 2023 @ 5:42am 
почему так много бесполезных действий в этапах?( :isaac:
medoviq 6 Jul, 2023 @ 12:36pm 
Спасибо тебе большое за красивый и аккуратный код, а не как в этом руководстве https://gtm.steamproxy.vip/sharedfiles/filedetails/?id=2868444224
Xannix  [author] 22 Jun, 2023 @ 1:44pm 
Честно, не помню. Помню только то, что за это достижение дают
Æçëpzæ 22 Jun, 2023 @ 12:12pm 
Скажите пожалуйста сейчас 8 этап скопировал и жду, а когда пройдешь будет ли реакция люми? Просто так долго все это проходил может хоть удивится?
DeniZRť 31 May, 2023 @ 12:36pm 
Когда узнаешь о програмирование в руководстве больше, чем на уроках
+rep
Splatboy0612 21 Mar, 2023 @ 10:58am 
я настоящий программист
Xannix  [author] 21 Mar, 2023 @ 10:48am 
можно просто прямоугольник нарисовать, подходящий по размеру