ÿþ <html> <head> <style> table {counter-reset: rowNumber;font-family: "FreeMono", monospace;} table tr {counter-increment: rowNumber; color: black;} table tr td:first-child::before { content: counter(rowNumber); min-width: 1em; margin-right: 0.5em;} a:link {color: black;} a:visited {color: gray; </style> <meta name="KeyWords" content="javascript java script programowanie tutorial jak przykBad gra telefon canvas"> <meta name="Description" content="Kopalnia zBota - gra w ~200 liniach czystego JavaScript"> <meta HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8"> <meta property="og:image" content="https://i.imgur.com/voxolb2.png" /> <title>Kopalnia zBota - gra w ~200 liniach czystego JavaScript</title> </head> <body> <font face="Arial,Helvetica,Sans-Serif"> <center> <script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script> <!-- 728x90 --> <ins class="adsbygoogle" style="display:inline-block;width:728px;height:90px" data-ad-client="ca-pub-6354658871288161" data-ad-slot="2045626349"></ins> <script> (adsbygoogle = window.adsbygoogle || []).push({}); </script> <br><br> <canvas id='canvas' width='600' height='600' > </canvas> <script> const canvas = document.getElementById('canvas'); const context = canvas.getContext('2d'); context.font = 'bold 16px sans-serif'; const backgroundImg = new Image(); backgroundImg.src = 'background.png'; const liftImg = new Image(); liftImg.src = 'lift.png'; const arrowLeftImg = new Image(); arrowLeftImg.src = 'arrow.png'; const arrowRightImg = new Image(); arrowRightImg.src = 'arrow_right.png'; const spritesheetImg = new Image(); spritesheetImg.src = 'spritesheet.png'; const closeImg = new Image(); closeImg.src = 'close.png'; const workerActiveButtonsImg = new Image(); workerActiveButtonsImg.src = 'worker_active.png'; const workerInactiveButtonsImg = new Image(); workerInactiveButtonsImg.src = 'worker_inactive.png'; const shaftActiveButtonsImg = new Image(); shaftActiveButtonsImg.src = 'shaft_active.png'; const shaftInactiveButtonsImg = new Image(); shaftInactiveButtonsImg.src = 'shaft_inactive.png'; const shaftHeight = 60, shaftWidth = 450, liftWidth = 40, workerCost = 5, max_workers = 3, shaftCost = 20, max_shafts = 10, buttonWidth = 150, spriteSize = 60, max_frames = 19; let aspectX=1, aspectY=1; let score, shaftsOpen; let shafts = []; let frame = 0; let lift = { speed: .5, arrivedAtShaft: function(shaftNumber) { let shaft = shafts[shaftNumber]; if (shaftNumber > 0) { if (shaft.chest > 0) { this.chest = this.chest + shaft.chest; shaft.chest = 0; this.loadingCounter = 100; } } else { if (this.chest > 0) this.loadingCounter = 100; shaft.chest = shaft.chest + this.chest; this.chest = 0; } }, move: function() { this.y = this.y + this.speed; let currentShaft = this.y / shaftHeight; if (currentShaft == Math.floor(currentShaft)) this.arrivedAtShaft(currentShaft); if (this.y >= (shaftsOpen - 1) * shaftHeight || this.y <= 0) this.speed = -this.speed; }, update: function() { context.drawImage(liftImg, 0, this.y); context.fillText(this.chest, 10, this.y + 25); if (this.loadingCounter) { if (this.y > 0) context.drawImage(arrowLeftImg, liftWidth * .5, this.y); else context.drawImage(arrowRightImg, liftWidth * .5, this.y); this.loadingCounter--; } else { this.move(); } }, }; function Shaft() { this.workers = []; this.chest = 0; this.closed = true; this.draw = function(shaftNumber) { if (shafts[shaftNumber].workers.length < shafts[shaftNumber].max_workers) if (score >= workerCost) context.drawImage(workerActiveButtonsImg, shaftWidth, shaftHeight * shaftNumber); else context.drawImage(workerInactiveButtonsImg, shaftWidth, shaftHeight * shaftNumber); }; this.open = function() { this.closed = false; shaftsOpen++; this.workers.push(new Worker()); score = score - shaftCost; }; } function Worker() { this.x = Math.floor(Math.random() * liftWidth); this.mode = 'goRight'; this.counter = 0; this.load = 0; this.update = function(shaftNumber) { let row; switch (this.mode) { case 'dig': this.counter++; row = 4; if (this.counter > 100) { this.counter = 0; this.mode = 'goLeft'; } break; case 'goRight': row = 0; this.x++; if (this.x >= shaftWidth - spriteSize * 1.5 + Math.random() * spriteSize) { if (shaftNumber > 0) this.mode = 'dig'; else { score = score + this.load; this.load = 0; this.mode = 'goLeft'; } } break; case 'goLeft': row = 1; this.x--; if (this.x <= 2 * liftWidth) { this.mode = 'goRight'; if (shaftNumber > 0) { shafts[shaftNumber].chest = shafts[shaftNumber].chest + 1; } else { if (shafts[0].chest > 0) { this.load = 1; shafts[0].chest = shafts[0].chest - 1; } } } break; } if (shaftNumber == 0) { row = row + 2; if (this.load == 0 && this.mode == 'goRight') row = 0; } context.drawImage(spritesheetImg, frame * spriteSize, row * spriteSize, spriteSize, spriteSize, this.x, shaftNumber * shaftHeight, spriteSize, spriteSize); }; } function drawScreen() { context.drawImage(backgroundImg, 0, 0, shaftWidth + buttonWidth, shaftHeight * shaftsOpen, 0, 0, shaftWidth + buttonWidth, shaftHeight * shaftsOpen); context.fillText(score, 300, 15); shafts.forEach((shaft, shaftNumber) => { if (!shaft.closed) { context.fillText(shaft.chest, liftWidth + 15, shaftNumber * shaftHeight + 25); shaft.draw(shaftNumber); } }); if (score >= shaftCost) context.drawImage(shaftActiveButtonsImg, shaftWidth, shaftHeight * (shaftsOpen)); else context.drawImage(shaftInactiveButtonsImg, shaftWidth, shaftHeight * (shaftsOpen)); } function animate() { drawScreen(); shafts.forEach((shaft, shaftNumber) => { shaft.workers.forEach((worker) => { worker.update(shaftNumber); }); }); lift.update(); frame++; if (frame > max_frames) frame = 0; window.requestAnimationFrame(animate); } function reset() { shaftsOpen = 0; score = 70; lift.y = 0; lift.chest = 0; lift.loadingCounter = 0; shafts.forEach((shaft) => { shaft.closed = true; shaft.workers = []; }); shafts[0].open(); shafts[1].open(); for (let i = shaftsOpen; i < max_shafts; i++) { shafts[i].closed = true; shafts[i].workers = []; context.drawImage(closeImg, 0, i * shaftHeight); } animate(); } window.onpointerdown = function(event) { let x = event.offsetX / aspectX; let y = event.offsetY / aspectY; let shaftNumber = Math.floor(y / shaftHeight); let shaft = shafts[shaftNumber]; if (x > shaftWidth) if (shaftNumber < shaftsOpen && score >= workerCost && shaft.workers.length <= shaft.max_workers) { shaft.workers.push(new Worker()); score = score - workerCost; } else { if (shaftNumber == shaftsOpen && score >= shaftCost) { shaft.open(); } } }; window.onload = function() { for (let i = 0; i < max_shafts; i++) { shafts[i] = new Shaft(); if (i == 0) shafts[i].max_workers = max_workers * 5; else shafts[i].max_workers = max_workers; } reset(); }; </script> <br><br> <a href="fullscreen.htm" target="_blank">Kliknij tutaj, by zagra w wersj peBnoekranow</a> <br><br> </center> <div style="position:relative; width:80%; left:10%;"> <center> <h1>Gra "Kopalnia zBota"</h1> </center> Gry typu "Idle" ("bezczynne") czy "clicker" zyskaBy wielk popularno[ okoBo roku 2013, wic jeste[my troch do tyBu, ale stworzenie takiej gry nadal mo|e by ciekawym wiczeniem programistycznym.<br><br> Gry te polegaj na wynagradzaniu gracza za proste dziaBania (na przykBad klikanie). Niektórzy lubi w nie gra, inni wol nie marnowa swego cennego czasu. Ja wstrzymam si od oceny.<br> W naszym wiczeniu gracz bdzie zarzdzaB kopalni zBota, a jego nagrod za klikanie bd nowi pracownicy w stylu voxelowym. Koszt takiej "nagrody" to $5.<br> Ka|dy pracownik niestrudzenie wykopuje zBote samorodki i przenosi je do skrzyni, skd zabiera je automatyczna winda, a nastpnie wywozi do kolejnej skrzyni na powierzchni. <br> Stamtd kolejna ekipa przenosi samorodki do magazynu, a gracz otrzymuje dolara. Widocznie rynek zBota przechodzi obecnie hoss.<br> Za jedyne $20 mo|esz otworzy nowy chodnik.<br> Gra, jak ludzka chciwo[, nie ma koDca, ale szybko si nudzi: otwierasz wszystkie chodniki i wypeBniasz je pracownikami. Od tej chwili, mo|esz tylko bezczynnie przyglda si, jak ro[nie twoje bogactwo, lub przeczyta jeden z naszych poni|szych tutoriali.<br> <br> Jak to dziaBa (peBen kod poni|ej):<br><br> [1-7] Ustawienie elementu HTML5 canvas i jego fontu.<br> [8-27] Obrazy<br> [29-30] Wymiary chodników<br> [32] $5 za zatrudnienie pracownika<br> [33] max 3 na chodnik<br> [34] $20 za otwarcie nowego chodnika ([wietna promocja!)<br> [35] max 10 chodników - tylko tyle zmie[ci si na naszym canvas<br> [36-37] wymiary obrazów<br> [38] ka|da sekwencja animacji ma 20 ramek<br> [39] stosunek rozcignicia poziomego i pionowego canvas, by wypeBni ekran urzdzenia<br> [40] wynik to twoja aktualna gotówka<br> [41] zainicjowanie tablicy chodników<br> [42] aktualna ramka animacji (zaczynamy od 0)<br> <br> [43-81] Obiekt "winda":<br> [44] pocztkowa prdko[<br> [45-59] Kiedy winda dociera do chodnika:<br> [47-52] je|eli jest pod ziemi, przenie[ zBoto (o ile jest) ze skrzyni do windy, opró|nij skrzyni w chodniku i uruchom licznik Badowania<br> [54-58] w przeciwnym wypadku, przenie[ zBoto z windy do skrzyni chodnika (powierzchniowego)<br> [60-67] PrzesuD wind:<br> [61] zmieD wspóBrzdn y<br> [63-64] je|eli winda dotarBa do chodnika, uruchom odpowiedni funkcj<br> [65-66] je|eli dotarBa do szczytu lub dna, odwró prdko[ (wykonaj zwrot)<br> [68-80] Narysuj i uaktualnij wind:<br> [69] Narysuj bitmap<br> [70] Poka| zawarto[ skrzyni<br> [71-75] Je|eli wBczony jest licznik Badowania, narysuj strzaBk w odpowiednim kierunku<br> [76] i zmniejsz licznik<br> [77-78] w przeciwnym wypadku przesuD wind.<br> <br> [83-100] Chodnik<br> [84] Zacznij bez pracowników<br> [85] i z pust skrzyni<br> [86] pocztkowo zamknity (otworzymy go pózniej)<br> [87-93] Narysuj chodnik:<br> [88-92] Je|eli jest miejsce na kolejnych pracowników, poka| przycisk "zatrudnij pracownika" ("hire worker") (aktywny lub nieaktywny, w zale|no[ci od tego, czy masz do[ kasy)<br> [94-98] Otwarcie nowego chodnika:<br> [95] zmieD na "otwarty"<br> [96] zwiksz licznik otwartych chodników<br> [97] automatycznie zatrudnij pierwszego pracownika<br> [98] i zapBa za niego.<br> <br> [102-154] Pracownicy<br> [103] losowo rozpocznij gdzie[ blisko windy<br> [104] zwrócony w praw stron<br> [107-153] Logika pracownika:<br> [110-117] Je|eli kopie:<br> [111] Zwiksz licznik kopania<br> [112] u|yj pitego rzdu ze spritesheet:<br><br> <img src = 'spritesheet.png'><br> [113] Je|eli kopaB przez 100 ramek, zakoDcz kopanie i idz do windy.<br> [118-130] Je|eli idzie w prawo:<br> [119] u|yj pierwszego (najwy|szego) rzdu ze spritesheet<br> [120] przesuD w prawo<br> [121] je|eli jest blisko prawej strony, zacznij kopa, lub (je[li jest na powierzchni) zBó| Badunek w magazynie i wró do windy<br> [131-146] Je|eli idzie w lewo:<br> [132] U|yj drugiego rzdu ze spritesheet<br> [133] przesuD w lewo<br> [134-144] je|eli jest blisko skrzyni:<br> [135] odwró go<br> [136-7] dodaj zBota do skrzyni, je|eli jest pod ziemi<br> [138-143] je|eli w skrzyni jest zBoto, podnie[ je<br> [147-148] Na powierzchni, przesuD si w dóB o dwa rzdy w spritesheet (|eby odwróci kierunek). Na powierzchni, pracownik niesie zBoto w lew stron, a w praw idzie z pustymi rkami. Pod ziemi jest odwrotnie.<br> [149-150] Je|eli idzie na powierzchni z pustymi rkami, u|yj u|yj pierwszego rzdu.<br> [152] narysuj ramk ze spritesheet.<br> [156-169] Narysuj ekran:<br> [157] narysuj tBo dla otwartych chodników<br> [158] poka| wynik<br> [159-162] narysuj otwarte chodniki<br> [165-168] narysuj aktywny/nieaktywny przycisk "nowy chodnik" ("new shaft")<br> <br> [171-183] GBówna ptla animacji<br> [173-177] uaktualnij ka|dego pracownika<br> [179-181] Zwiksz licznik ramek i, je|eli to konieczne, zresetuj go.<br> [182] Czekaj na kolejn ramk animacji.<br> [185-203] Pierwotne warto[ci zmiennych.<br> [205-214] W przypadku zmiany wielko[ci okna (np. gdy telefon zostaje przekrcony), zmieD wymiary stylu canvas, by wypeBni caBy ekran i oblicz nowe wspóBczynniki ksztaBtu x/y.<br> <br> [216-230] ObsBuga klikni<br> [217-218] przelicz wspóBrzdne, biorc pod uwag wspóBczynniki ksztaBtu<br> [219] Kliknito na przycisk którego chodnika?<br> [221-224] Je|eli kliknito "zatrudnij pracownika", dodaj pracownika i zapBa za niego<br> [225-227] w przeciwnym wypadku otwórz nowy chodnik<br> <br> [232-242] Kiedy nastpi pierwotne zaBadowanie okna:<br> [233-238] stwórz chodniki i ustaw maksymaln liczb pracowników<br> [235-236] na powierzchni mo|e by pi razy wicej pracowników, ni| na chodniku podziemnym.<br> <br><br> <table cellspacing='0'; style="display: inline-block; border: 1px solid; "> <tr><td bgcolor='#f0f0f0'>&lt;<font color='brown'>html</font>&gt;</td></tr> <tr><td bgcolor='#e0e0e0'>&lt;<font color='brown'>body</font>&gt;</td></tr> <tr><td bgcolor='#f0f0f0'>&lt;<font color='brown'>canvas</font>&nbsp;<font color='brown'>id</font>='<font color='brown'>canvas</font>'&nbsp;<font color='brown'>width</font>='<font color='green'>600</font>'&nbsp;<font color='brown'>height</font>='<font color='green'>600</font>'&nbsp;<font color='brown'>style</font>='<font color='brown'>position</font>:<font color='brown'>absolute</font>;&nbsp;<font color='brown'>left</font>:<font color='green'>0</font>;&nbsp;<font color='blue'>top</font>:<font color='green'>0</font>'&gt;&lt;/<font color='brown'>canvas</font>&gt;</td></tr> <tr><td bgcolor='#e0e0e0'>&lt;<font color='brown'>script</font>&gt;</td></tr> <tr><td bgcolor='#f0f0f0'><font color='blue'>const</font>&nbsp;<font color='brown'>canvas</font>&nbsp;=&nbsp;<font color='blue'>document</font>.<font color='brown'>getElementById</font>('<font color='brown'>canvas</font>');</td></tr> <tr><td bgcolor='#e0e0e0'><font color='blue'>const</font>&nbsp;<font color='brown'>context</font>&nbsp;=&nbsp;<font color='brown'>canvas</font>.<font color='brown'>getContext</font>('2d');</td></tr> <tr><td bgcolor='#f0f0f0'><font color='brown'>context</font>.<font color='brown'>font</font>&nbsp;=&nbsp;'<font color='brown'>bold</font>&nbsp;16px&nbsp;<font color='brown'>sans</font>-<font color='brown'>serif</font>';</td></tr> <tr><td bgcolor='#e0e0e0'><font color='blue'>const</font>&nbsp;<font color='brown'>backgroundImg</font>&nbsp;=&nbsp;<font color='blue'>new</font>&nbsp;<font color='brown'>Image</font>();</td></tr> <tr><td bgcolor='#f0f0f0'><font color='brown'>backgroundImg</font>.<font color='brown'>src</font>&nbsp;=&nbsp;'<font color='brown'>background</font>.<font color='brown'>png</font>';</td></tr> <tr><td bgcolor='#e0e0e0'><font color='blue'>const</font>&nbsp;<font color='brown'>liftImg</font>&nbsp;=&nbsp;<font color='blue'>new</font>&nbsp;<font color='brown'>Image</font>();</td></tr> <tr><td bgcolor='#f0f0f0'><font color='brown'>liftImg</font>.<font color='brown'>src</font>&nbsp;=&nbsp;'<font color='brown'>lift</font>.<font color='brown'>png</font>';</td></tr> <tr><td bgcolor='#e0e0e0'><font color='blue'>const</font>&nbsp;<font color='brown'>arrowLeftImg</font>&nbsp;=&nbsp;<font color='blue'>new</font>&nbsp;<font color='brown'>Image</font>();</td></tr> <tr><td bgcolor='#f0f0f0'><font color='brown'>arrowLeftImg</font>.<font color='brown'>src</font>&nbsp;=&nbsp;'<font color='brown'>arrow</font>.<font color='brown'>png</font>';</td></tr> <tr><td bgcolor='#e0e0e0'><font color='blue'>const</font>&nbsp;<font color='brown'>arrowRightImg</font>&nbsp;=&nbsp;<font color='blue'>new</font>&nbsp;<font color='brown'>Image</font>();</td></tr> <tr><td bgcolor='#f0f0f0'><font color='brown'>arrowRightImg</font>.<font color='brown'>src</font>&nbsp;=&nbsp;'<font color='brown'>arrow</font>_<font color='brown'>right</font>.<font color='brown'>png</font>';</td></tr> <tr><td bgcolor='#e0e0e0'><font color='blue'>const</font>&nbsp;<font color='brown'>spritesheetImg</font>&nbsp;=&nbsp;<font color='blue'>new</font>&nbsp;<font color='brown'>Image</font>();</td></tr> <tr><td bgcolor='#f0f0f0'><font color='brown'>spritesheetImg</font>.<font color='brown'>src</font>&nbsp;=&nbsp;'<font color='brown'>spritesheet</font>.<font color='brown'>png</font>';</td></tr> <tr><td bgcolor='#e0e0e0'><font color='blue'>const</font>&nbsp;<font color='brown'>closeImg</font>&nbsp;=&nbsp;<font color='blue'>new</font>&nbsp;<font color='brown'>Image</font>();</td></tr> <tr><td bgcolor='#f0f0f0'><font color='brown'>closeImg</font>.<font color='brown'>src</font>&nbsp;=&nbsp;'<font color='blue'>close</font>.<font color='brown'>png</font>';</td></tr> <tr><td bgcolor='#e0e0e0'><font color='blue'>const</font>&nbsp;<font color='brown'>workerActiveButtonsImg</font>&nbsp;=&nbsp;<font color='blue'>new</font>&nbsp;<font color='brown'>Image</font>();</td></tr> <tr><td bgcolor='#f0f0f0'><font color='brown'>workerActiveButtonsImg</font>.<font color='brown'>src</font>&nbsp;=&nbsp;'<font color='brown'>worker</font>_<font color='brown'>active</font>.<font color='brown'>png</font>';</td></tr> <tr><td bgcolor='#e0e0e0'><font color='blue'>const</font>&nbsp;<font color='brown'>workerInactiveButtonsImg</font>&nbsp;=&nbsp;<font color='blue'>new</font>&nbsp;<font color='brown'>Image</font>();</td></tr> <tr><td bgcolor='#f0f0f0'><font color='brown'>workerInactiveButtonsImg</font>.<font color='brown'>src</font>&nbsp;=&nbsp;'<font color='brown'>worker</font>_<font color='brown'>inactive</font>.<font color='brown'>png</font>';</td></tr> <tr><td bgcolor='#e0e0e0'><font color='blue'>const</font>&nbsp;<font color='brown'>shaftActiveButtonsImg</font>&nbsp;=&nbsp;<font color='blue'>new</font>&nbsp;<font color='brown'>Image</font>();</td></tr> <tr><td bgcolor='#f0f0f0'><font color='brown'>shaftActiveButtonsImg</font>.<font color='brown'>src</font>&nbsp;=&nbsp;'<font color='brown'>shaft</font>_<font color='brown'>active</font>.<font color='brown'>png</font>';</td></tr> <tr><td bgcolor='#e0e0e0'><font color='blue'>const</font>&nbsp;<font color='brown'>shaftInactiveButtonsImg</font>&nbsp;=&nbsp;<font color='blue'>new</font>&nbsp;<font color='brown'>Image</font>();</td></tr> <tr><td bgcolor='#f0f0f0'><font color='brown'>shaftInactiveButtonsImg</font>.<font color='brown'>src</font>&nbsp;=&nbsp;'<font color='brown'>shaft</font>_<font color='brown'>inactive</font>.<font color='brown'>png</font>';</td></tr> <tr><td bgcolor='#e0e0e0'>&nbsp;</td></tr> <tr><td bgcolor='#f0f0f0'><font color='blue'>const</font>&nbsp;<font color='brown'>shaftHeight</font>&nbsp;=&nbsp;<font color='green'>60</font>,</td></tr> <tr><td bgcolor='#e0e0e0'>&nbsp;&nbsp;<font color='brown'>shaftWidth</font>&nbsp;=&nbsp;<font color='green'>450</font>,</td></tr> <tr><td bgcolor='#f0f0f0'>&nbsp;&nbsp;<font color='brown'>liftWidth</font>&nbsp;=&nbsp;<font color='green'>40</font>,</td></tr> <tr><td bgcolor='#e0e0e0'>&nbsp;&nbsp;<font color='brown'>workerCost</font>&nbsp;=&nbsp;<font color='green'>5</font>,</td></tr> <tr><td bgcolor='#f0f0f0'>&nbsp;&nbsp;<font color='brown'>max</font>_<font color='brown'>workers</font>&nbsp;=&nbsp;<font color='green'>3</font>,</td></tr> <tr><td bgcolor='#e0e0e0'>&nbsp;&nbsp;<font color='brown'>shaftCost</font>&nbsp;=&nbsp;<font color='green'>20</font>,</td></tr> <tr><td bgcolor='#f0f0f0'>&nbsp;&nbsp;<font color='brown'>max</font>_<font color='brown'>shafts</font>&nbsp;=&nbsp;<font color='green'>10</font>,</td></tr> <tr><td bgcolor='#e0e0e0'>&nbsp;&nbsp;<font color='brown'>buttonWidth</font>&nbsp;=&nbsp;<font color='green'>150</font>,</td></tr> <tr><td bgcolor='#f0f0f0'>&nbsp;&nbsp;<font color='brown'>spriteSize</font>&nbsp;=&nbsp;<font color='green'>60</font>,</td></tr> <tr><td bgcolor='#e0e0e0'>&nbsp;&nbsp;<font color='brown'>max</font>_<font color='blue'>frames</font>&nbsp;=&nbsp;<font color='green'>19</font>;</td></tr> <tr><td bgcolor='#f0f0f0'><font color='blue'>let</font>&nbsp;<font color='brown'>aspectX</font>,&nbsp;<font color='brown'>aspectY</font>;</td></tr> <tr><td bgcolor='#e0e0e0'><font color='blue'>let</font>&nbsp;<font color='brown'>score</font>,&nbsp;<font color='brown'>shaftsOpen</font>;</td></tr> <tr><td bgcolor='#f0f0f0'><font color='blue'>let</font>&nbsp;<font color='brown'>shafts</font>&nbsp;=&nbsp;[];</td></tr> <tr><td bgcolor='#e0e0e0'><font color='blue'>let</font>&nbsp;<font color='blue'>frame</font>&nbsp;=&nbsp;<font color='green'>0</font>;</td></tr> <tr><td bgcolor='#f0f0f0'><font color='blue'>let</font>&nbsp;<font color='brown'>lift</font>&nbsp;=&nbsp;{</td></tr> <tr><td bgcolor='#e0e0e0'>&nbsp;&nbsp;<font color='brown'>speed</font>:&nbsp;.<font color='green'>5</font>,</td></tr> <tr><td bgcolor='#f0f0f0'>&nbsp;&nbsp;<font color='brown'>arrivedAtShaft</font>:&nbsp;<font color='blue'>function</font>(<font color='brown'>shaftNumber</font>)&nbsp;{</td></tr> <tr><td bgcolor='#e0e0e0'>&nbsp;&nbsp;&nbsp;&nbsp;<font color='blue'>let</font>&nbsp;<font color='brown'>shaft</font>&nbsp;=&nbsp;<font color='brown'>shafts</font>[<font color='brown'>shaftNumber</font>];</td></tr> <tr><td bgcolor='#f0f0f0'>&nbsp;&nbsp;&nbsp;&nbsp;<font color='blue'>if</font>&nbsp;(<font color='brown'>shaftNumber</font>&nbsp;&gt;&nbsp;<font color='green'>0</font>)&nbsp;{</td></tr> <tr><td bgcolor='#e0e0e0'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color='blue'>if</font>&nbsp;(<font color='brown'>shaft</font>.<font color='brown'>chest</font>&nbsp;&gt;&nbsp;<font color='green'>0</font>)&nbsp;{</td></tr> <tr><td bgcolor='#f0f0f0'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color='blue'>this</font>.<font color='brown'>chest</font>&nbsp;=&nbsp;<font color='blue'>this</font>.<font color='brown'>chest</font>&nbsp;+&nbsp;<font color='brown'>shaft</font>.<font color='brown'>chest</font>;</td></tr> <tr><td bgcolor='#e0e0e0'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color='brown'>shaft</font>.<font color='brown'>chest</font>&nbsp;=&nbsp;<font color='green'>0</font>;</td></tr> <tr><td bgcolor='#f0f0f0'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color='blue'>this</font>.<font color='brown'>loadingCounter</font>&nbsp;=&nbsp;<font color='green'>100</font>;</td></tr> <tr><td bgcolor='#e0e0e0'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</td></tr> <tr><td bgcolor='#f0f0f0'>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<font color='blue'>else</font>&nbsp;{</td></tr> <tr><td bgcolor='#e0e0e0'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color='blue'>if</font>&nbsp;(<font color='blue'>this</font>.<font color='brown'>chest</font>&nbsp;&gt;&nbsp;<font color='green'>0</font>)</td></tr> <tr><td bgcolor='#f0f0f0'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color='blue'>this</font>.<font color='brown'>loadingCounter</font>&nbsp;=&nbsp;<font color='green'>100</font>;</td></tr> <tr><td bgcolor='#e0e0e0'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color='brown'>shaft</font>.<font color='brown'>chest</font>&nbsp;=&nbsp;<font color='brown'>shaft</font>.<font color='brown'>chest</font>&nbsp;+&nbsp;<font color='blue'>this</font>.<font color='brown'>chest</font>;</td></tr> <tr><td bgcolor='#f0f0f0'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color='blue'>this</font>.<font color='brown'>chest</font>&nbsp;=&nbsp;<font color='green'>0</font>;</td></tr> <tr><td bgcolor='#e0e0e0'>&nbsp;&nbsp;&nbsp;&nbsp;}</td></tr> <tr><td bgcolor='#f0f0f0'>&nbsp;&nbsp;},</td></tr> <tr><td bgcolor='#e0e0e0'>&nbsp;&nbsp;<font color='brown'>move</font>:&nbsp;<font color='blue'>function</font>()&nbsp;{</td></tr> <tr><td bgcolor='#f0f0f0'>&nbsp;&nbsp;&nbsp;&nbsp;<font color='blue'>this</font>.<font color='brown'>y</font>&nbsp;=&nbsp;<font color='blue'>this</font>.<font color='brown'>y</font>&nbsp;+&nbsp;<font color='blue'>this</font>.<font color='brown'>speed</font>;</td></tr> <tr><td bgcolor='#e0e0e0'>&nbsp;&nbsp;&nbsp;&nbsp;<font color='blue'>let</font>&nbsp;<font color='brown'>currentShaft</font>&nbsp;=&nbsp;<font color='blue'>this</font>.<font color='brown'>y</font>&nbsp;/&nbsp;<font color='brown'>shaftHeight</font>;</td></tr> <tr><td bgcolor='#f0f0f0'>&nbsp;&nbsp;&nbsp;&nbsp;<font color='blue'>if</font>&nbsp;(<font color='brown'>currentShaft</font>&nbsp;==&nbsp;<font color='blue'>Math</font>.<font color='brown'>floor</font>(<font color='brown'>currentShaft</font>))</td></tr> <tr><td bgcolor='#e0e0e0'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color='blue'>this</font>.<font color='brown'>arrivedAtShaft</font>(<font color='brown'>currentShaft</font>);</td></tr> <tr><td bgcolor='#f0f0f0'>&nbsp;&nbsp;&nbsp;&nbsp;<font color='blue'>if</font>&nbsp;(<font color='blue'>this</font>.<font color='brown'>y</font>&nbsp;&gt;=&nbsp;(<font color='brown'>shaftsOpen</font>&nbsp;-&nbsp;<font color='green'>1</font>)&nbsp;*&nbsp;<font color='brown'>shaftHeight</font>&nbsp;||&nbsp;<font color='blue'>this</font>.<font color='brown'>y</font>&nbsp;&lt;=&nbsp;<font color='green'>0</font>)</td></tr> <tr><td bgcolor='#e0e0e0'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color='blue'>this</font>.<font color='brown'>speed</font>&nbsp;=&nbsp;-<font color='blue'>this</font>.<font color='brown'>speed</font>;</td></tr> <tr><td bgcolor='#f0f0f0'>&nbsp;&nbsp;},</td></tr> <tr><td bgcolor='#e0e0e0'>&nbsp;&nbsp;<font color='brown'>update</font>:&nbsp;<font color='blue'>function</font>()&nbsp;{</td></tr> <tr><td bgcolor='#f0f0f0'>&nbsp;&nbsp;&nbsp;&nbsp;<font color='brown'>context</font>.<font color='brown'>drawImage</font>(<font color='brown'>liftImg</font>,&nbsp;<font color='green'>0</font>,&nbsp;<font color='blue'>this</font>.<font color='brown'>y</font>);</td></tr> <tr><td bgcolor='#e0e0e0'>&nbsp;&nbsp;&nbsp;&nbsp;<font color='brown'>context</font>.<font color='brown'>fillText</font>(<font color='blue'>this</font>.<font color='brown'>chest</font>,&nbsp;<font color='green'>10</font>,&nbsp;<font color='blue'>this</font>.<font color='brown'>y</font>&nbsp;+&nbsp;<font color='green'>25</font>);</td></tr> <tr><td bgcolor='#f0f0f0'>&nbsp;&nbsp;&nbsp;&nbsp;<font color='blue'>if</font>&nbsp;(<font color='blue'>this</font>.<font color='brown'>loadingCounter</font>)&nbsp;{</td></tr> <tr><td bgcolor='#e0e0e0'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color='blue'>if</font>&nbsp;(<font color='blue'>this</font>.<font color='brown'>y</font>&nbsp;&gt;&nbsp;<font color='green'>0</font>)</td></tr> <tr><td bgcolor='#f0f0f0'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color='brown'>context</font>.<font color='brown'>drawImage</font>(<font color='brown'>arrowLeftImg</font>,&nbsp;<font color='brown'>liftWidth</font>&nbsp;*&nbsp;.<font color='green'>5</font>,&nbsp;<font color='blue'>this</font>.<font color='brown'>y</font>);</td></tr> <tr><td bgcolor='#e0e0e0'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color='blue'>else</font></td></tr> <tr><td bgcolor='#f0f0f0'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color='brown'>context</font>.<font color='brown'>drawImage</font>(<font color='brown'>arrowRightImg</font>,&nbsp;<font color='brown'>liftWidth</font>&nbsp;*&nbsp;.<font color='green'>5</font>,&nbsp;<font color='blue'>this</font>.<font color='brown'>y</font>);</td></tr> <tr><td bgcolor='#e0e0e0'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color='blue'>this</font>.<font color='brown'>loadingCounter</font>--;</td></tr> <tr><td bgcolor='#f0f0f0'>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<font color='blue'>else</font>&nbsp;{</td></tr> <tr><td bgcolor='#e0e0e0'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color='blue'>this</font>.<font color='brown'>move</font>();</td></tr> <tr><td bgcolor='#f0f0f0'>&nbsp;&nbsp;&nbsp;&nbsp;}</td></tr> <tr><td bgcolor='#f0f0f0'>&nbsp;&nbsp;},</td></tr> <tr><td bgcolor='#e0e0e0'>};</td></tr> <tr><td bgcolor='#f0f0f0'>&nbsp;</td></tr> <tr><td bgcolor='#e0e0e0'><font color='blue'>function</font>&nbsp;<font color='brown'>Shaft</font>()&nbsp;{</td></tr> <tr><td bgcolor='#f0f0f0'>&nbsp;&nbsp;<font color='blue'>this</font>.<font color='brown'>workers</font>&nbsp;=&nbsp;[];</td></tr> <tr><td bgcolor='#e0e0e0'>&nbsp;&nbsp;<font color='blue'>this</font>.<font color='brown'>chest</font>&nbsp;=&nbsp;<font color='green'>0</font>;</td></tr> <tr><td bgcolor='#f0f0f0'>&nbsp;&nbsp;<font color='blue'>this</font>.<font color='blue'>closed</font>&nbsp;=&nbsp;<font color='brown'>true</font>;</td></tr> <tr><td bgcolor='#e0e0e0'>&nbsp;&nbsp;<font color='blue'>this</font>.<font color='brown'>draw</font>&nbsp;=&nbsp;<font color='blue'>function</font>(<font color='brown'>shaftNumber</font>)&nbsp;{</td></tr> <tr><td bgcolor='#f0f0f0'>&nbsp;&nbsp;&nbsp;&nbsp;<font color='blue'>if</font>&nbsp;(<font color='brown'>shafts</font>[<font color='brown'>shaftNumber</font>].<font color='brown'>workers</font>.<font color='blue'>length</font>&nbsp;&lt;&nbsp;<font color='brown'>shafts</font>[<font color='brown'>shaftNumber</font>].<font color='brown'>max</font>_<font color='brown'>workers</font>)</td></tr> <tr><td bgcolor='#e0e0e0'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color='blue'>if</font>&nbsp;(<font color='brown'>score</font>&nbsp;&gt;=&nbsp;<font color='brown'>workerCost</font>)</td></tr> <tr><td bgcolor='#f0f0f0'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color='brown'>context</font>.<font color='brown'>drawImage</font>(<font color='brown'>workerActiveButtonsImg</font>,&nbsp;<font color='brown'>shaftWidth</font>,&nbsp;<font color='brown'>shaftHeight</font>&nbsp;*&nbsp;<font color='brown'>shaftNumber</font>);</td></tr> <tr><td bgcolor='#e0e0e0'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color='blue'>else</font></td></tr> <tr><td bgcolor='#f0f0f0'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color='brown'>context</font>.<font color='brown'>drawImage</font>(<font color='brown'>workerInactiveButtonsImg</font>,&nbsp;<font color='brown'>shaftWidth</font>,&nbsp;<font color='brown'>shaftHeight</font>&nbsp;*&nbsp;<font color='brown'>shaftNumber</font>);</td></tr> <tr><td bgcolor='#e0e0e0'>&nbsp;&nbsp;};</td></tr> <tr><td bgcolor='#f0f0f0'>&nbsp;&nbsp;<font color='blue'>this</font>.<font color='blue'>open</font>&nbsp;=&nbsp;<font color='blue'>function</font>()&nbsp;{</td></tr> <tr><td bgcolor='#e0e0e0'>&nbsp;&nbsp;&nbsp;&nbsp;<font color='blue'>this</font>.<font color='blue'>closed</font>&nbsp;=&nbsp;<font color='brown'>false</font>;</td></tr> <tr><td bgcolor='#f0f0f0'>&nbsp;&nbsp;&nbsp;&nbsp;<font color='brown'>shaftsOpen</font>++;</td></tr> <tr><td bgcolor='#e0e0e0'>&nbsp;&nbsp;&nbsp;&nbsp;<font color='blue'>this</font>.<font color='brown'>workers</font>.<font color='brown'>push</font>(<font color='blue'>new</font>&nbsp;<font color='brown'>Worker</font>());</td></tr> <tr><td bgcolor='#f0f0f0'>&nbsp;&nbsp;&nbsp;&nbsp;<font color='brown'>score</font>&nbsp;=&nbsp;<font color='brown'>score</font>&nbsp;-&nbsp;<font color='brown'>shaftCost</font>;</td></tr> <tr><td bgcolor='#e0e0e0'>&nbsp;&nbsp;};</td></tr> <tr><td bgcolor='#f0f0f0'>}</td></tr> <tr><td bgcolor='#e0e0e0'>&nbsp;</td></tr> <tr><td bgcolor='#f0f0f0'><font color='blue'>function</font>&nbsp;<font color='brown'>Worker</font>()&nbsp;{</td></tr> <tr><td bgcolor='#e0e0e0'>&nbsp;&nbsp;<font color='blue'>this</font>.<font color='brown'>x</font>&nbsp;=&nbsp;<font color='blue'>Math</font>.<font color='brown'>floor</font>(<font color='blue'>Math</font>.<font color='brown'>random</font>()&nbsp;*&nbsp;<font color='brown'>liftWidth</font>);</td></tr> <tr><td bgcolor='#f0f0f0'>&nbsp;&nbsp;<font color='blue'>this</font>.<font color='brown'>mode</font>&nbsp;=&nbsp;'<font color='brown'>goRight</font>';</td></tr> <tr><td bgcolor='#e0e0e0'>&nbsp;&nbsp;<font color='blue'>this</font>.<font color='brown'>counter</font>&nbsp;=&nbsp;<font color='green'>0</font>;</td></tr> <tr><td bgcolor='#f0f0f0'>&nbsp;&nbsp;<font color='blue'>this</font>.<font color='brown'>load</font>&nbsp;=&nbsp;<font color='green'>0</font>;</td></tr> <tr><td bgcolor='#e0e0e0'>&nbsp;&nbsp;<font color='blue'>this</font>.<font color='brown'>update</font>&nbsp;=&nbsp;<font color='blue'>function</font>(<font color='brown'>shaftNumber</font>)&nbsp;{</td></tr> <tr><td bgcolor='#f0f0f0'>&nbsp;&nbsp;&nbsp;&nbsp;<font color='blue'>let</font>&nbsp;<font color='brown'>row</font>;</td></tr> <tr><td bgcolor='#e0e0e0'>&nbsp;&nbsp;&nbsp;&nbsp;<font color='blue'>switch</font>&nbsp;(<font color='blue'>this</font>.<font color='brown'>mode</font>)&nbsp;{</td></tr> <tr><td bgcolor='#f0f0f0'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color='blue'>case</font>&nbsp;'<font color='brown'>dig</font>':</td></tr> <tr><td bgcolor='#e0e0e0'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color='blue'>this</font>.<font color='brown'>counter</font>++;</td></tr> <tr><td bgcolor='#f0f0f0'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color='brown'>row</font>&nbsp;=&nbsp;<font color='green'>4</font>;</td></tr> <tr><td bgcolor='#e0e0e0'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color='blue'>if</font>&nbsp;(<font color='blue'>this</font>.<font color='brown'>counter</font>&nbsp;&gt;&nbsp;<font color='green'>100</font>)&nbsp;{</td></tr> <tr><td bgcolor='#f0f0f0'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color='blue'>this</font>.<font color='brown'>counter</font>&nbsp;=&nbsp;<font color='green'>0</font>;</td></tr> <tr><td bgcolor='#e0e0e0'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color='blue'>this</font>.<font color='brown'>mode</font>&nbsp;=&nbsp;'<font color='brown'>goLeft</font>';</td></tr> <tr><td bgcolor='#f0f0f0'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</td></tr> <tr><td bgcolor='#e0e0e0'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color='blue'>break</font>;</td></tr> <tr><td bgcolor='#f0f0f0'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color='blue'>case</font>&nbsp;'<font color='brown'>goRight</font>':</td></tr> <tr><td bgcolor='#e0e0e0'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color='brown'>row</font>&nbsp;=&nbsp;<font color='green'>0</font>;</td></tr> <tr><td bgcolor='#f0f0f0'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color='blue'>this</font>.<font color='brown'>x</font>++;</td></tr> <tr><td bgcolor='#e0e0e0'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color='blue'>if</font>&nbsp;(<font color='blue'>this</font>.<font color='brown'>x</font>&nbsp;&gt;=&nbsp;<font color='brown'>shaftWidth</font>&nbsp;-&nbsp;<font color='brown'>spriteSize</font>&nbsp;*&nbsp;<font color='green'>1</font>.<font color='green'>5</font>&nbsp;+&nbsp;<font color='blue'>Math</font>.<font color='brown'>random</font>()&nbsp;*&nbsp;<font color='brown'>spriteSize</font>)&nbsp;{</td></tr> <tr><td bgcolor='#f0f0f0'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color='blue'>if</font>&nbsp;(<font color='brown'>shaftNumber</font>&nbsp;&gt;&nbsp;<font color='green'>0</font>)</td></tr> <tr><td bgcolor='#e0e0e0'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color='blue'>this</font>.<font color='brown'>mode</font>&nbsp;=&nbsp;'<font color='brown'>dig</font>';</td></tr> <tr><td bgcolor='#f0f0f0'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color='blue'>else</font>&nbsp;{</td></tr> <tr><td bgcolor='#e0e0e0'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color='brown'>score</font>&nbsp;=&nbsp;<font color='brown'>score</font>&nbsp;+&nbsp;<font color='blue'>this</font>.<font color='brown'>load</font>;</td></tr> <tr><td bgcolor='#f0f0f0'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color='blue'>this</font>.<font color='brown'>load</font>&nbsp;=&nbsp;<font color='green'>0</font>;</td></tr> <tr><td bgcolor='#e0e0e0'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color='blue'>this</font>.<font color='brown'>mode</font>&nbsp;=&nbsp;'<font color='brown'>goLeft</font>';</td></tr> <tr><td bgcolor='#f0f0f0'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</td></tr> <tr><td bgcolor='#e0e0e0'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</td></tr> <tr><td bgcolor='#f0f0f0'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color='blue'>break</font>;</td></tr> <tr><td bgcolor='#e0e0e0'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color='blue'>case</font>&nbsp;'<font color='brown'>goLeft</font>':</td></tr> <tr><td bgcolor='#f0f0f0'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color='brown'>row</font>&nbsp;=&nbsp;<font color='green'>1</font>;</td></tr> <tr><td bgcolor='#e0e0e0'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color='blue'>this</font>.<font color='brown'>x</font>--;</td></tr> <tr><td bgcolor='#f0f0f0'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color='blue'>if</font>&nbsp;(<font color='blue'>this</font>.<font color='brown'>x</font>&nbsp;&lt;=&nbsp;<font color='green'>2</font>&nbsp;*&nbsp;<font color='brown'>liftWidth</font>)&nbsp;{</td></tr> <tr><td bgcolor='#e0e0e0'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color='blue'>this</font>.<font color='brown'>mode</font>&nbsp;=&nbsp;'<font color='brown'>goRight</font>';</td></tr> <tr><td bgcolor='#f0f0f0'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color='blue'>if</font>&nbsp;(<font color='brown'>shaftNumber</font>&nbsp;&gt;&nbsp;<font color='green'>0</font>)&nbsp;{</td></tr> <tr><td bgcolor='#e0e0e0'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color='brown'>shafts</font>[<font color='brown'>shaftNumber</font>].<font color='brown'>chest</font>&nbsp;=&nbsp;<font color='brown'>shafts</font>[<font color='brown'>shaftNumber</font>].<font color='brown'>chest</font>&nbsp;+&nbsp;<font color='green'>1</font>;</td></tr> <tr><td bgcolor='#f0f0f0'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<font color='blue'>else</font>&nbsp;{</td></tr> <tr><td bgcolor='#e0e0e0'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color='blue'>if</font>&nbsp;(<font color='brown'>shafts</font>[<font color='green'>0</font>].<font color='brown'>chest</font>&nbsp;&gt;&nbsp;<font color='green'>0</font>)&nbsp;{</td></tr> <tr><td bgcolor='#f0f0f0'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color='blue'>this</font>.<font color='brown'>load</font>&nbsp;=&nbsp;<font color='green'>1</font>;</td></tr> <tr><td bgcolor='#e0e0e0'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color='brown'>shafts</font>[<font color='green'>0</font>].<font color='brown'>chest</font>&nbsp;=&nbsp;<font color='brown'>shafts</font>[<font color='green'>0</font>].<font color='brown'>chest</font>&nbsp;-&nbsp;<font color='green'>1</font>;</td></tr> <tr><td bgcolor='#f0f0f0'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</td></tr> <tr><td bgcolor='#e0e0e0'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</td></tr> <tr><td bgcolor='#f0f0f0'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</td></tr> <tr><td bgcolor='#e0e0e0'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color='blue'>break</font>;</td></tr> <tr><td bgcolor='#f0f0f0'>&nbsp;&nbsp;&nbsp;&nbsp;}</td></tr> <tr><td bgcolor='#e0e0e0'>&nbsp;&nbsp;&nbsp;&nbsp;<font color='blue'>if</font>&nbsp;(<font color='brown'>shaftNumber</font>&nbsp;==&nbsp;<font color='green'>0</font>)&nbsp;{</td></tr> <tr><td bgcolor='#f0f0f0'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color='brown'>row</font>&nbsp;=&nbsp;<font color='brown'>row</font>&nbsp;+&nbsp;<font color='green'>2</font>;</td></tr> <tr><td bgcolor='#e0e0e0'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color='blue'>if</font>&nbsp;(<font color='blue'>this</font>.<font color='brown'>load</font>&nbsp;==&nbsp;<font color='green'>0</font>&nbsp;&&&nbsp;<font color='blue'>this</font>.<font color='brown'>mode</font>&nbsp;==&nbsp;'<font color='brown'>goRight</font>')</td></tr> <tr><td bgcolor='#f0f0f0'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color='brown'>row</font>&nbsp;=&nbsp;<font color='green'>0</font>;</td></tr> <tr><td bgcolor='#e0e0e0'>&nbsp;&nbsp;&nbsp;&nbsp;}</td></tr> <tr><td bgcolor='#f0f0f0'>&nbsp;&nbsp;&nbsp;&nbsp;<font color='brown'>context</font>.<font color='brown'>drawImage</font>(<font color='brown'>spritesheetImg</font>,&nbsp;<font color='blue'>frame</font>&nbsp;*&nbsp;<font color='brown'>spriteSize</font>,&nbsp;<font color='brown'>row</font>&nbsp;*&nbsp;<font color='brown'>spriteSize</font>,&nbsp;<font color='brown'>spriteSize</font>,&nbsp;<font color='brown'>spriteSize</font>,&nbsp;<font color='blue'>this</font>.<font color='brown'>x</font>,&nbsp;<font color='brown'>shaftNumber</font>&nbsp;*&nbsp;<font color='brown'>shaftHeight</font>,&nbsp;<font color='brown'>spriteSize</font>,&nbsp;<font color='brown'>spriteSize</font>);</td></tr> <tr><td bgcolor='#e0e0e0'>&nbsp;&nbsp;};</td></tr> <tr><td bgcolor='#f0f0f0'>}</td></tr> <tr><td bgcolor='#e0e0e0'>&nbsp;</td></tr> <tr><td bgcolor='#f0f0f0'><font color='blue'>function</font>&nbsp;<font color='brown'>drawScreen</font>()&nbsp;{</td></tr> <tr><td bgcolor='#e0e0e0'>&nbsp;&nbsp;<font color='brown'>context</font>.<font color='brown'>drawImage</font>(<font color='brown'>backgroundImg</font>,&nbsp;<font color='green'>0</font>,&nbsp;<font color='green'>0</font>,&nbsp;<font color='brown'>shaftWidth</font>&nbsp;+&nbsp;<font color='brown'>buttonWidth</font>,&nbsp;<font color='brown'>shaftHeight</font>&nbsp;*&nbsp;<font color='brown'>shaftsOpen</font>,&nbsp;<font color='green'>0</font>,&nbsp;<font color='green'>0</font>,&nbsp;<font color='brown'>shaftWidth</font>&nbsp;+&nbsp;<font color='brown'>buttonWidth</font>,&nbsp;<font color='brown'>shaftHeight</font>&nbsp;*&nbsp;<font color='brown'>shaftsOpen</font>);</td></tr> <tr><td bgcolor='#f0f0f0'>&nbsp;&nbsp;<font color='brown'>context</font>.<font color='brown'>fillText</font>(<font color='brown'>score</font>,&nbsp;<font color='green'>300</font>,&nbsp;<font color='green'>15</font>);</td></tr> <tr><td bgcolor='#e0e0e0'>&nbsp;&nbsp;<font color='brown'>shafts</font>.<font color='brown'>forEach</font>((<font color='brown'>shaft</font>,&nbsp;<font color='brown'>shaftNumber</font>)&nbsp;=&gt;&nbsp;{</td></tr> <tr><td bgcolor='#f0f0f0'>&nbsp;&nbsp;&nbsp;&nbsp;<font color='blue'>if</font>&nbsp;(!<font color='brown'>shaft</font>.<font color='blue'>closed</font>)&nbsp;{</td></tr> <tr><td bgcolor='#e0e0e0'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color='brown'>context</font>.<font color='brown'>fillText</font>(<font color='brown'>shaft</font>.<font color='brown'>chest</font>,&nbsp;<font color='brown'>liftWidth</font>&nbsp;+&nbsp;<font color='green'>15</font>,&nbsp;<font color='brown'>shaftNumber</font>&nbsp;*&nbsp;<font color='brown'>shaftHeight</font>&nbsp;+&nbsp;<font color='green'>25</font>);</td></tr> <tr><td bgcolor='#f0f0f0'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color='brown'>shaft</font>.<font color='brown'>draw</font>(<font color='brown'>shaftNumber</font>);</td></tr> <tr><td bgcolor='#e0e0e0'>&nbsp;&nbsp;&nbsp;&nbsp;}</td></tr> <tr><td bgcolor='#f0f0f0'>&nbsp;&nbsp;});</td></tr> <tr><td bgcolor='#e0e0e0'>&nbsp;&nbsp;<font color='blue'>if</font>&nbsp;(<font color='brown'>score</font>&nbsp;&gt;=&nbsp;<font color='brown'>shaftCost</font>)</td></tr> <tr><td bgcolor='#f0f0f0'>&nbsp;&nbsp;&nbsp;&nbsp;<font color='brown'>context</font>.<font color='brown'>drawImage</font>(<font color='brown'>shaftActiveButtonsImg</font>,&nbsp;<font color='brown'>shaftWidth</font>,&nbsp;<font color='brown'>shaftHeight</font>&nbsp;*&nbsp;(<font color='brown'>shaftsOpen</font>));</td></tr> <tr><td bgcolor='#e0e0e0'>&nbsp;&nbsp;<font color='blue'>else</font></td></tr> <tr><td bgcolor='#f0f0f0'>&nbsp;&nbsp;&nbsp;&nbsp;<font color='brown'>context</font>.<font color='brown'>drawImage</font>(<font color='brown'>shaftInactiveButtonsImg</font>,&nbsp;<font color='brown'>shaftWidth</font>,&nbsp;<font color='brown'>shaftHeight</font>&nbsp;*&nbsp;(<font color='brown'>shaftsOpen</font>));</td></tr> <tr><td bgcolor='#e0e0e0'>}</td></tr> <tr><td bgcolor='#f0f0f0'>&nbsp;</td></tr> <tr><td bgcolor='#e0e0e0'><font color='blue'>function</font>&nbsp;<font color='brown'>animate</font>()&nbsp;{</td></tr> <tr><td bgcolor='#f0f0f0'>&nbsp;&nbsp;<font color='brown'>drawScreen</font>();</td></tr> <tr><td bgcolor='#e0e0e0'>&nbsp;&nbsp;<font color='brown'>shafts</font>.<font color='brown'>forEach</font>((<font color='brown'>shaft</font>,&nbsp;<font color='brown'>shaftNumber</font>)&nbsp;=&gt;&nbsp;{</td></tr> <tr><td bgcolor='#f0f0f0'>&nbsp;&nbsp;&nbsp;&nbsp;<font color='brown'>shaft</font>.<font color='brown'>workers</font>.<font color='brown'>forEach</font>((<font color='brown'>worker</font>)&nbsp;=&gt;&nbsp;{</td></tr> <tr><td bgcolor='#e0e0e0'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color='brown'>worker</font>.<font color='brown'>update</font>(<font color='brown'>shaftNumber</font>);</td></tr> <tr><td bgcolor='#f0f0f0'>&nbsp;&nbsp;&nbsp;&nbsp;});</td></tr> <tr><td bgcolor='#e0e0e0'>&nbsp;&nbsp;});</td></tr> <tr><td bgcolor='#f0f0f0'>&nbsp;&nbsp;<font color='brown'>lift</font>.<font color='brown'>update</font>();</td></tr> <tr><td bgcolor='#e0e0e0'>&nbsp;&nbsp;<font color='blue'>frame</font>++;</td></tr> <tr><td bgcolor='#f0f0f0'>&nbsp;&nbsp;<font color='blue'>if</font>&nbsp;(<font color='blue'>frame</font>&nbsp;&gt;&nbsp;<font color='brown'>max</font>_<font color='blue'>frames</font>)</td></tr> <tr><td bgcolor='#e0e0e0'>&nbsp;&nbsp;&nbsp;&nbsp;<font color='blue'>frame</font>&nbsp;=&nbsp;<font color='green'>0</font>;</td></tr> <tr><td bgcolor='#f0f0f0'>&nbsp;&nbsp;<font color='brown'>window</font>.<font color='brown'>requestAnimationFrame</font>(<font color='brown'>animate</font>);</td></tr> <tr><td bgcolor='#e0e0e0'>}</td></tr> <tr><td bgcolor='#f0f0f0'>&nbsp;</td></tr> <tr><td bgcolor='#e0e0e0'><font color='blue'>function</font>&nbsp;<font color='blue'>reset</font>()&nbsp;{</td></tr> <tr><td bgcolor='#f0f0f0'>&nbsp;&nbsp;<font color='brown'>shaftsOpen</font>&nbsp;=&nbsp;<font color='green'>0</font>;</td></tr> <tr><td bgcolor='#e0e0e0'>&nbsp;&nbsp;<font color='brown'>score</font>&nbsp;=&nbsp;<font color='green'>70</font>;</td></tr> <tr><td bgcolor='#f0f0f0'>&nbsp;&nbsp;<font color='brown'>lift</font>.<font color='brown'>y</font>&nbsp;=&nbsp;<font color='green'>0</font>;</td></tr> <tr><td bgcolor='#e0e0e0'>&nbsp;&nbsp;<font color='brown'>lift</font>.<font color='brown'>chest</font>&nbsp;=&nbsp;<font color='green'>0</font>;</td></tr> <tr><td bgcolor='#f0f0f0'>&nbsp;&nbsp;<font color='brown'>lift</font>.<font color='brown'>loadingCounter</font>&nbsp;=&nbsp;<font color='green'>0</font>;</td></tr> <tr><td bgcolor='#e0e0e0'>&nbsp;&nbsp;<font color='brown'>shafts</font>.<font color='brown'>forEach</font>((<font color='brown'>shaft</font>)&nbsp;=&gt;&nbsp;{</td></tr> <tr><td bgcolor='#f0f0f0'>&nbsp;&nbsp;&nbsp;&nbsp;<font color='brown'>shaft</font>.<font color='blue'>closed</font>&nbsp;=&nbsp;<font color='brown'>true</font>;</td></tr> <tr><td bgcolor='#e0e0e0'>&nbsp;&nbsp;&nbsp;&nbsp;<font color='brown'>shaft</font>.<font color='brown'>workers</font>&nbsp;=&nbsp;[];</td></tr> <tr><td bgcolor='#f0f0f0'>&nbsp;&nbsp;});</td></tr> <tr><td bgcolor='#e0e0e0'>&nbsp;&nbsp;<font color='brown'>shafts</font>[<font color='green'>0</font>].<font color='blue'>open</font>();</td></tr> <tr><td bgcolor='#f0f0f0'>&nbsp;&nbsp;<font color='brown'>shafts</font>[<font color='green'>1</font>].<font color='blue'>open</font>();</td></tr> <tr><td bgcolor='#e0e0e0'>&nbsp;&nbsp;<font color='blue'>for</font>&nbsp;(<font color='blue'>let</font>&nbsp;<font color='brown'>i</font>&nbsp;=&nbsp;<font color='brown'>shaftsOpen</font>;&nbsp;<font color='brown'>i</font>&nbsp;&lt;&nbsp;<font color='brown'>max</font>_<font color='brown'>shafts</font>;&nbsp;<font color='brown'>i</font>++)&nbsp;{</td></tr> <tr><td bgcolor='#f0f0f0'>&nbsp;&nbsp;&nbsp;&nbsp;<font color='brown'>shafts</font>[<font color='brown'>i</font>].<font color='blue'>closed</font>&nbsp;=&nbsp;<font color='brown'>true</font>;</td></tr> <tr><td bgcolor='#e0e0e0'>&nbsp;&nbsp;&nbsp;&nbsp;<font color='brown'>shafts</font>[<font color='brown'>i</font>].<font color='brown'>workers</font>&nbsp;=&nbsp;[];</td></tr> <tr><td bgcolor='#f0f0f0'>&nbsp;&nbsp;&nbsp;&nbsp;<font color='brown'>context</font>.<font color='brown'>drawImage</font>(<font color='brown'>closeImg</font>,&nbsp;<font color='green'>0</font>,&nbsp;<font color='brown'>i</font>&nbsp;*&nbsp;<font color='brown'>shaftHeight</font>);</td></tr> <tr><td bgcolor='#e0e0e0'>&nbsp;&nbsp;}</td></tr> <tr><td bgcolor='#f0f0f0'>&nbsp;&nbsp;<font color='brown'>animate</font>();</td></tr> <tr><td bgcolor='#e0e0e0'>}</td></tr> <tr><td bgcolor='#f0f0f0'>&nbsp;</td></tr> <tr><td bgcolor='#e0e0e0'><font color='blue'>function</font>&nbsp;<font color='brown'>resize</font>()&nbsp;{</td></tr> <tr><td bgcolor='#f0f0f0'>&nbsp;&nbsp;<font color='blue'>let</font>&nbsp;<font color='brown'>picSizeX</font>&nbsp;=&nbsp;<font color='brown'>window</font>.<font color='blue'>innerWidth</font>;</td></tr> <tr><td bgcolor='#e0e0e0'>&nbsp;&nbsp;<font color='blue'>let</font>&nbsp;<font color='brown'>picSizeY</font>&nbsp;=&nbsp;<font color='brown'>window</font>.<font color='blue'>innerHeight</font>;</td></tr> <tr><td bgcolor='#f0f0f0'>&nbsp;&nbsp;<font color='brown'>canvas</font>.<font color='brown'>style</font>.<font color='brown'>width</font>&nbsp;=&nbsp;<font color='brown'>window</font>.<font color='blue'>innerWidth</font>;</td></tr> <tr><td bgcolor='#e0e0e0'>&nbsp;&nbsp;<font color='brown'>canvas</font>.<font color='brown'>style</font>.<font color='brown'>height</font>&nbsp;=&nbsp;<font color='brown'>window</font>.<font color='blue'>innerHeight</font>;</td></tr> <tr><td bgcolor='#f0f0f0'>&nbsp;&nbsp;<font color='brown'>aspectX</font>&nbsp;=&nbsp;<font color='brown'>picSizeX</font>&nbsp;/&nbsp;<font color='green'>600</font>;</td></tr> <tr><td bgcolor='#e0e0e0'>&nbsp;&nbsp;<font color='brown'>aspectY</font>&nbsp;=&nbsp;<font color='brown'>picSizeY</font>&nbsp;/&nbsp;<font color='green'>600</font>;</td></tr> <tr><td bgcolor='#f0f0f0'>}</td></tr> <tr><td bgcolor='#e0e0e0'>&nbsp;</td></tr> <tr><td bgcolor='#f0f0f0'><font color='brown'>window</font>.<font color='brown'>onresize</font>&nbsp;=&nbsp;<font color='brown'>resize</font>;</td></tr> <tr><td bgcolor='#e0e0e0'>&nbsp;</td></tr> <tr><td bgcolor='#f0f0f0'><font color='brown'>window</font>.<font color='brown'>onpointerdown</font>&nbsp;=&nbsp;<font color='blue'>function</font>(<font color='blue'>event</font>)&nbsp;{</td></tr> <tr><td bgcolor='#e0e0e0'>&nbsp;&nbsp;<font color='blue'>let</font>&nbsp;<font color='brown'>x</font>&nbsp;=&nbsp;<font color='blue'>event</font>.<font color='brown'>offsetX</font>&nbsp;/&nbsp;<font color='brown'>aspectX</font>;</td></tr> <tr><td bgcolor='#f0f0f0'>&nbsp;&nbsp;<font color='blue'>let</font>&nbsp;<font color='brown'>y</font>&nbsp;=&nbsp;<font color='blue'>event</font>.<font color='brown'>offsetY</font>&nbsp;/&nbsp;<font color='brown'>aspectY</font>;</td></tr> <tr><td bgcolor='#e0e0e0'>&nbsp;&nbsp;<font color='blue'>let</font>&nbsp;<font color='brown'>shaftNumber</font>&nbsp;=&nbsp;<font color='blue'>Math</font>.<font color='brown'>floor</font>(<font color='brown'>y</font>&nbsp;/&nbsp;<font color='brown'>shaftHeight</font>);</td></tr> <tr><td bgcolor='#f0f0f0'>&nbsp;&nbsp;<font color='blue'>let</font>&nbsp;<font color='brown'>shaft</font>&nbsp;=&nbsp;<font color='brown'>shafts</font>[<font color='brown'>shaftNumber</font>];</td></tr> <tr><td bgcolor='#e0e0e0'>&nbsp;&nbsp;<font color='blue'>if</font>&nbsp;(<font color='brown'>x</font>&nbsp;&gt;&nbsp;<font color='brown'>shaftWidth</font>)</td></tr> <tr><td bgcolor='#f0f0f0'>&nbsp;&nbsp;&nbsp;&nbsp;<font color='blue'>if</font>&nbsp;(<font color='brown'>shaftNumber</font>&nbsp;&lt;&nbsp;<font color='brown'>shaftsOpen</font>&nbsp;&&&nbsp;<font color='brown'>score</font>&nbsp;&gt;=&nbsp;<font color='brown'>workerCost</font>&nbsp;&&&nbsp;<font color='brown'>shaft</font>.<font color='brown'>workers</font>.<font color='blue'>length</font>&nbsp;&lt;=&nbsp;<font color='brown'>shaft</font>.<font color='brown'>max</font>_<font color='brown'>workers</font>)&nbsp;{</td></tr> <tr><td bgcolor='#e0e0e0'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color='brown'>shaft</font>.<font color='brown'>workers</font>.<font color='brown'>push</font>(<font color='blue'>new</font>&nbsp;<font color='brown'>Worker</font>());</td></tr> <tr><td bgcolor='#f0f0f0'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color='brown'>score</font>&nbsp;=&nbsp;<font color='brown'>score</font>&nbsp;-&nbsp;<font color='brown'>workerCost</font>;</td></tr> <tr><td bgcolor='#e0e0e0'>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<font color='blue'>else</font>&nbsp;{</td></tr> <tr><td bgcolor='#f0f0f0'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color='blue'>if</font>&nbsp;(<font color='brown'>shaftNumber</font>&nbsp;==&nbsp;<font color='brown'>shaftsOpen</font>&nbsp;&&&nbsp;<font color='brown'>score</font>&nbsp;&gt;=&nbsp;<font color='brown'>shaftCost</font>)&nbsp;{</td></tr> <tr><td bgcolor='#e0e0e0'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color='brown'>shaft</font>.<font color='blue'>open</font>();</td></tr> <tr><td bgcolor='#f0f0f0'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</td></tr> <tr><td bgcolor='#e0e0e0'>&nbsp;&nbsp;&nbsp;&nbsp;}</td></tr> <tr><td bgcolor='#f0f0f0'>};</td></tr> <tr><td bgcolor='#e0e0e0'>&nbsp;</td></tr> <tr><td bgcolor='#f0f0f0'><font color='brown'>window</font>.<font color='blue'>onload</font>&nbsp;=&nbsp;<font color='blue'>function</font>()&nbsp;{</td></tr> <tr><td bgcolor='#e0e0e0'>&nbsp;&nbsp;<font color='blue'>for</font>&nbsp;(<font color='blue'>let</font>&nbsp;<font color='brown'>i</font>&nbsp;=&nbsp;<font color='green'>0</font>;&nbsp;<font color='brown'>i</font>&nbsp;&lt;&nbsp;<font color='brown'>max</font>_<font color='brown'>shafts</font>;&nbsp;<font color='brown'>i</font>++)&nbsp;{</td></tr> <tr><td bgcolor='#f0f0f0'>&nbsp;&nbsp;&nbsp;&nbsp;<font color='brown'>shafts</font>[<font color='brown'>i</font>]&nbsp;=&nbsp;<font color='blue'>new</font>&nbsp;<font color='brown'>Shaft</font>();</td></tr> <tr><td bgcolor='#e0e0e0'>&nbsp;&nbsp;&nbsp;&nbsp;<font color='blue'>if</font>&nbsp;(<font color='brown'>i</font>&nbsp;==&nbsp;<font color='green'>0</font>)</td></tr> <tr><td bgcolor='#f0f0f0'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color='brown'>shafts</font>[<font color='brown'>i</font>].<font color='brown'>max</font>_<font color='brown'>workers</font>&nbsp;=&nbsp;<font color='brown'>max</font>_<font color='brown'>workers</font>&nbsp;*&nbsp;<font color='green'>5</font>;</td></tr> <tr><td bgcolor='#e0e0e0'>&nbsp;&nbsp;&nbsp;&nbsp;<font color='blue'>else</font></td></tr> <tr><td bgcolor='#f0f0f0'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color='brown'>shafts</font>[<font color='brown'>i</font>].<font color='brown'>max</font>_<font color='brown'>workers</font>&nbsp;=&nbsp;<font color='brown'>max</font>_<font color='brown'>workers</font>;</td></tr> <tr><td bgcolor='#e0e0e0'>&nbsp;&nbsp;}</td></tr> <tr><td bgcolor='#f0f0f0'>&nbsp;&nbsp;<font color='blue'>reset</font>();</td></tr> <tr><td bgcolor='#e0e0e0'>&nbsp;&nbsp;<font color='brown'>resize</font>();</td></tr> <tr><td bgcolor='#f0f0f0'>};</td></tr> <tr><td bgcolor='#e0e0e0'>&lt;/<font color='brown'>script</font>&gt;</td></tr> <tr><td bgcolor='#f0f0f0'>&lt;/<font color='brown'>body</font>&gt;</td></tr> <tr><td bgcolor='#e0e0e0'>&lt;/<font color='brown'>html</font>&gt;</td></tr> </table> <br><br> </div> </font> <b>Inne samouczki:</b><br><br> <a href="https://slicker.me/javascript/wieza.htm">Gra "Wie|a" - 84 linii JavaScript</a><br><br> <a href="https://slicker.me/fraktale/fraktale.htm">Fraktale - 25 linii</a><br><br> <a href="https://slicker.me/javascript/iluzja.htm">ZBudzenie optyczne - 18 linii </a><br><br> <a href="https://slicker.me/javascript/sinus_scroll.htm">Sinus scroll - 30 linii</a><br><br> <a href="https://slicker.me/javascript/kurczaki.htm">Gra "Angry Chickens"</a><br><br> <a href="https://slicker.me/javascript/krzywe.htm">Animowane krzywe kwadratowe - 40 linii</a><br><br> <a href="https://slicker.me/javascript/czasteczki.htm">Animowane konstelacje czsteczek - 42 linie</a><br><br> <a href="https://slicker.me/javascript/eksperyment_fizyczny.htm">Eksperyment z enginem fizyki</a><br><br><br> <a href="https://slicker.me/blender/kula.htm"><img src="https://i.imgur.com/9OUdwNR.gif"> Rozbiajanie muru kul - 14 linii Python/Blender 3d</a><br><br><br> <a href="https://slicker.me/blender/efekt_domino.htm"><img src="https://i.imgur.com/aYhJRSX.gif"> Efekt domino - 10 linii Python/Blender 3d</a><br><br><br> <a href="https://slicker.me/javascript/gold/goldmine.htm">English version of this page</a><br><br><br><br> <script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script> <!-- 728x90 --> <ins class="adsbygoogle" style="display:inline-block;width:728px;height:90px" data-ad-client="ca-pub-6354658871288161" data-ad-slot="2045626349"></ins> <script> (adsbygoogle = window.adsbygoogle || []).push({}); </script> <script type="text/javascript"> var sc_project=9411562; var sc_invisible=1; var sc_security="cb2fda34"; var scJsHost = (("https:" == document.location.protocol) ? "https://secure." : "http://www."); document.write("<sc"+"ript type='text/javascript' src='" + scJsHost+ "statcounter.com/counter/counter.js'></"+"script>"); </script> <noscript><div class="statcounter"><a title="web analytics" href="http://statcounter.com/" target="_blank"><img class="statcounter" src="http://c.statcounter.com/9411562/0/cb2fda34/1/" alt="web analytics"></a></div></noscript> </body></html>