DevOps C ++ uye "hondo dzekicheni", kana Matangiro andakaita kunyora mitambo ndichidya

"Ndinoziva kuti hapana chandinoziva" Socrates

Kunaani: yeIT vanhu vanopfira vese vanogadzira uye vanoda kutamba mitambo yavo!

Nezve chii: kutanga sei kunyora mitambo muC/C++ kana uchiida!

Sei uchifanira kuverenga izvi: Kuvandudzwa kweApp hakusi basa rangu rakakosha, asi ndinoedza kukodha svondo rega rega. Nekuti ndinoda mitambo!

Mhoro Zita rangu Andrey Grankin, Ndiri DevOps kuLuxoft. Kuvandudza application hakusi basa rangu rakakosha, asi ndinoedza kukodha svondo rega rega. Nekuti ndinoda mitambo!

Indasitiri yemitambo yemakomputa yakakura, inotova nerunyerekupe nhasi kupfuura indasitiri yemabhaisikopo. Mitambo yakanyorwa kubva pakutanga kwekugadzirwa kwemakomputa, uchishandisa, nemaitiro emazuva ano, yakaoma uye yekutanga nzira dzekusimudzira. Nekufamba kwenguva, injini dzemitambo dzakatanga kuoneka nemifananidzo yakatorongwa, fizikisi, uye ruzha. Vanokubvumira kuti uise pfungwa pakuvandudzwa kwemutambo wacho pachako uye kwete kunetseka pamusoro penheyo yayo. Asi pamwe chete navo, nejini, vagadziri "vanopofumadza" uye vanosvibisa. Iko kugadzirwa chaiko kwemitambo kunoiswa paconveyor. Uye huwandu hwekugadzirwa hunotanga kukunda pamusoro pemhando yayo.

Panguva imwecheteyo, kana tichitamba mitambo yevamwe vanhu, isu tinongogara takaganhurirwa nenzvimbo, marongero, vatambi, makanika emitambo izvo vamwe vanhu vakauya nazvo. Saka ndakaona kuti...

… inguva yekugadzira yako nyika, inozviisa pasi pangu chete. Nyika kwandinenge ndiri Baba, neMwanakomana, uye neMweya Mutsvene!

Uye ndinotenda nemoyo wese kuti nekunyora yako wega injini yemutambo uye mutambo pairi, iwe uchakwanisa kuvhura maziso ako, kupukuta mahwindo uye kupomba kabhini yako, kuva ane ruzivo uye akakosha programmer.

Muchikamu chino ini ndichaedza kukuudza kuti ndakatanga sei kunyora mitambo midiki muC / C ++, ndeipi nzira yekuvandudza uye kwandinowana nguva yekuzvivaraidza munzvimbo yakabatikana. Iyo inomiririra uye inotsanangura maitiro ekutanga emunhu. Material nezvekusaziva uye kutenda, nezve yangu pachedu mufananidzo wenyika panguva ino. Mune mamwe mazwi, "Iyo manejimendi haina mhosva yehuropi hwako!".

Dzidzira

β€œKuziva pasina muitiro hakuna maturo, kuita pasina zivo kune ngozi.” Confucius

Kabhuku kangu hupenyu hwangu!


Saka, mukuita, ndinogona kutaura kuti zvose kwandiri zvinotanga nekabhuku. Ini handinyore pasi kwete mabasa angu ezuva nezuva ipapo, asiwo dhirowa, chirongwa, dhizaini inoyerera uye kugadzirisa matambudziko, kusanganisira iwo masvomhu. Nguva dzose shandisa kanoti uye nyora nepenzura chete. Yakachena, yakasununguka uye yakavimbika, IMHO.

DevOps C ++ uye "hondo dzekicheni", kana Matangiro andakaita kunyora mitambo ndichidya
Kabhuku kangu (katozadzwa). Aya ndiwo maitiro azvinotaridzika. Iine mabasa emazuva ese, mazano, kudhirowa, dhayagiramu, mhinduro, dema rekuchengetedza mabhuku, kodhi, zvichingodaro.

Panguva ino, ndakakwanisa kupedza mapurojekiti matatu (izvi zviri mukunzwisisa kwangu kwe "yekupedzisira", nokuti chero chigadzirwa chinogona kugadzirwa nekusingaperi).

  • Chirongwa 0: ichi chiitiko cheArchitect Demo 3D chakanyorwa muC # uchishandisa iyo Unity mutambo injini. Kune macOS uye Windows mapuratifomu.
  • Mutambo wechinomwe: console mutambo Nyoka Nyoka (inozivikanwa kumunhu wese se "Nyoka") yeWindows. yakanyorwa muC.
  • Mutambo wechinomwe: console game Crazy Tanks (inozivikanwa kumunhu wese se "Matangi"), yakanyorwa kare muC ++ (uchishandisa makirasi) uye zvakare pasi peWindows.

Project 0 Architect Demo

  • Platform: Windows (Windows 7, 10), Mac OS (OS X El Capitan v. 10.11.6)
  • Π―Π·Ρ‹ΠΊ: C#
  • Injini yemutambo: kubatana
  • Kurudziro: Darrin Lile
  • Repository: GitHub

DevOps C ++ uye "hondo dzekicheni", kana Matangiro andakaita kunyora mitambo ndichidya
3D Scene Architect Demo

Yekutanga purojekiti yakaitwa kwete muC/C ++, asi muC# uchishandisa iyo Unity mutambo injini. Injini iyi yaisada pahardware se Unreal Engine, uye zvaiitawo kwandiri zviri nyore kuisa nekushandisa. Ndakanga ndisingafungi nezvemamwe injini.

Chinangwa cheKubatana kwandiri chakanga chisiri chekugadzira imwe mhando yemutambo. Ini ndaida kugadzira 3D chiitiko chine imwe mhando yehunhu. Iye, kana kuti iye (ndakafananidza musikana wandaida =) aifanira kufamba uye kushamwaridzana nenyika yekunze. Chaive chakakosha chete kuti unzwisise kuti Kubatana chii, nzira yekusimudzira chii, uye kuti inguva yakawanda sei inodiwa kugadzira chimwe chinhu. Iyi ndiyo nzira iyo Architect Demo project yakazvarwa (zita rakagadzirwa rinenge kubva kune bullshit). Kuronga, kuenzanisa, mifananidzo, kutumira mameseji zvakanditorera pamwe mwedzi miviri yebasa rezuva nezuva.

Ndakatanga nemavhidhiyo edzidziso paYouTube pamaitiro ekugadzira mamodheru e3D mukati Blender. Blender chishandiso chikuru chemahara che 3D modhi (nezvimwe) izvo zvisingade kuisirwa. Uye pano kuvhunduka kwakandimirira ... Zvinoitika kuti modhi, mifananidzo, kutumira mameseji misoro mikuru yakasiyana yaunogona kunyora mabhuku. Izvi ndezvechokwadi kunyanya kune vatambi. Kutevedzera zvigunwe, mazino, maziso uye dzimwe nhengo dzemuviri, iwe uchada ruzivo rweanatomy. Misumbu yechiso inorongwa sei? Vanhu vanofamba sei? Ndaifanira β€œkuisa” mapfupa muruwoko rumwe norumwe, gumbo, munwe, mapfumo!

Enzanisa clavicle, yekuwedzera bhonzo levers, kuitira kuti animation itaridzike yakasikwa. Mushure mezvidzidzo zvakadaro, unoona kuti ibasa rakakura sei rinoitwa nevagadziri vemafirimu ane animated, kungogadzira masekonzi makumi matatu evhidhiyo. Asi mafirimu e30D anogara kwemaawa! Uye tobva tabuda mudzimba dzemitambo totaura chimwe chinhu senge: "Ta, katuni / bhaisikopo rakashata! Vangadai vakaita zvirinani…” Mapenzi!

Uye chimwezve chinhu nezve hurongwa muchirongwa ichi. Sezvazvakazoitika, chikamu chainyanya kunakidza kwandiri chaiva chesvomhu. Kana iwe ukamhanyisa chiitiko (chinongedzo kune repository mune tsananguro yeprojekiti), iwe uchaona kuti kamera inotenderera yakatenderedza musikana hunhu mudenderedzwa. Kuronga kutenderera kwakadai kwekamera, ndaifanira kutanga ndaverenga kurongeka kwenzvimbo padenderedzwa (2D), uyezve padenderedzwa (3D). Chinonakidza ndechekuti ndaivenga masvomhu kuchikoro uye ndaidziziva nema minus. Chikamu, pamwe, nekuti kuchikoro havakutsanangurire iwe kuti gehena iyi masvomhu inoshandiswa sei muhupenyu. Asi kana iwe wakabatikana nechinangwa chako, rota, ipapo pfungwa dzinocheneswa, kuratidzwa! Uye iwe unotanga kuona mabasa akaomarara seanonakidza mutambo. Uye wobva wafunga kuti: "Zvakanaka, nei * mudikani * nyanzvi yemasvomhu isingataure kuti aya mafomula anogona kutsamira papi?".

DevOps C ++ uye "hondo dzekicheni", kana Matangiro andakaita kunyora mitambo ndichidya
Kuverengera kwemafomula ekuverenga kurongeka kwepoindi padenderedzwa uye padenderedzwa (kubva mubhuku rangu rekunyorera)

Mutambo 1

  • Platform: Windows (yakaedzwa paWindows 7, 10)
  • Π―Π·Ρ‹ΠΊ: Ndinofunga kuti rakanyorwa naC pure
  • Injini yemutambo: Windows console
  • Kurudziro: javidx9
  • Repository: GitHub

DevOps C ++ uye "hondo dzekicheni", kana Matangiro andakaita kunyora mitambo ndichidya
Nyoka Nyoka mutambo

Iyo 3D chiitiko hausi mutambo. Pamusoro pezvo, kuenzanisira uye kufambisa zvinhu zve3D (kunyanya mavara) kwakareba uye kwakaoma. Mushure mekutamba neUnity, ndakaona kuti ndaifanira kuenderera, kana kuti kutanga, kubva kune izvo zvekutanga. Chimwe chinhu chiri nyore uye nekukurumidza, asi panguva imwechete yepasirese, kuti unzwisise iyo chaiyo chimiro chemitambo.

Uye chii chatinacho chiri nyore uye nekukurumidza? Ndizvozvo, console uye 2D. Kunyanya chaizvo, kunyangwe iyo console uye zviratidzo. Zvekare, ndakatanga kutsvaga kurudziro paInternet (kazhinji, ini ndinoona iyo Internet seyakanyanya shanduko uye ine njodzi kugadzirwa kwezana ramakore reXNUMX). Ndakachera vhidhiyo yemumwe programmer akagadzira console Tetris. Uye mumufananidzo wemutambo wake, akasarudza kutema "nyoka". Kubva muvhidhiyo, ndakadzidza nezve zvinhu zviviri zvakakosha - iyo mutambo loop (ine matatu akakosha mabasa / zvikamu) uye zvinobuda kune buffer.

Iyo game loop inogona kutaridzika seizvi:

int main()
   {
      Setup();
      // a game loop
      while (!quit)
      {
          Input();
          Logic();
          Draw();
          Sleep(gameSpeed);  // game timing
      }
      return 0;
   }

Iyo kodhi inopa yese main () basa kamwechete. Uye kutenderera kwemutambo kunotanga mushure mekutaura kunoenderana. Pane matatu akakosha mabasa mulop: Input (), Logic (), Dhirowa (). Kutanga, kuisa data Input (kunyanya kudzora makiyi), wozogadzirisa iyo yakapinda data Logic, wozoratidza pachiratidziro - Dhirowa. Uye saka furemu yese. Animation inogadzirwa nenzira iyi. Zvakafanana nemakatuni. Kazhinji kugadzirisa iyo data yekuisa kunotora nguva yakawanda uye, sekuziva kwangu, inosarudza chiyero chemutambo. Asi pano iyo Logic () basa rinokurumidza kwazvo. Naizvozvo, iyo furemu chiyero chinofanirwa kudzorwa neKurara () basa neiyo gameSpeed ​​​​parameter, iyo inosarudza chiyero ichi.

DevOps C ++ uye "hondo dzekicheni", kana Matangiro andakaita kunyora mitambo ndichidya
mutambo kutenderera. Nyoka programming mune notepad

Kana iwe uri kugadzira yekufananidzira console mutambo, wobva waratidza data pachiratidziro uchishandisa yakajairwa rwizi kubuda 'cout' haishande - inononoka. Naizvozvo, izvo zvinobuda zvinofanirwa kuitwa mune iyo skrini buffer. Saka nekukurumidza uye mutambo uchashanda pasina glitches. Kutaura chokwadi, handisi kunyatsonzwisisa kuti chii chinonzi screen buffer uye kuti chinoshanda sei. Asi ini ndichapa muenzaniso wekodhi pano, uye zvichida mumwe munhu mumashoko achakwanisa kujekesa mamiriro acho ezvinhu.

Kuwana iyo skrini buffer (kana ini ndingadaro):

// create screen buffer for drawings
   HANDLE hConsole = CreateConsoleScreenBuffer(GENERIC_READ | GENERIC_WRITE, 0,
 							   NULL, CONSOLE_TEXTMODE_BUFFER, NULL);
   DWORD dwBytesWritten = 0;
   SetConsoleActiveScreenBuffer(hConsole);

Yakananga kuburitsa kuchidzitiro cheimwe mutsara mutsara Line (mutsara wekuratidza zvibodzwa):

// draw the score
   WriteConsoleOutputCharacter(hConsole, scoreLine, GAME_WIDTH, {2,3}, &dwBytesWritten);

Muchirevo, hapana chakaoma mumutambo uyu, zvinoratidzika kwandiri muenzaniso wakanaka wemutambo wekupinda-level. Iyo kodhi inonyorwa mune imwe faira uye yakarongwa mune akati wandei mabasa. Hapana makirasi, hapana nhaka. Iwe pachako unogona kuona zvese zviri musource kodhi yemutambo nekuenda kune repository paGitHub.

Game 2 Crazy Matangi

DevOps C ++ uye "hondo dzekicheni", kana Matangiro andakaita kunyora mitambo ndichidya
Crazy Tanks mutambo

Kudhinda mavara kune koni ndicho chinhu chakareruka chaunogona kushandura kuita mutambo. Asi zvino dambudziko rimwe rinoonekwa: mavara ane urefu hwakasiyana uye upamhi (hurefu hwakakura kupfuura hupamhi). Nekudaro, zvese zvinotaridzika zvisina kuenzana, uye kufamba pasi kana kumusoro kuchaita sekunge nekukurumidza pane kufamba kuruboshwe kana kurudyi. Izvi zvinonyanya kuoneka mu "Nyoka" (Game 1). "Matangi" (Game 2) haana dhizaini yakadaro, sezvo kuburitsa ikoko kwakarongeka nekupenda mapikisi esikirini ane mavara akasiyana. Unogona kuti ndakanyora renderer. Ichokwadi, izvi zvatova zvishoma zvakaoma, kunyange zvakanyanya kufadza.

Zvemutambo uyu, zvichakwana kutsanangura system yangu yekuratidzira mapixel pachiratidziri. Ndinofunga kuti ichi ndicho chikamu chikuru chemutambo. Uye zvimwe zvese zvaunogona kuuya nazvo.

Saka, izvo zvaunoona pachiratidziro ingori seti yekufamba ane mavara rectangles.

DevOps C ++ uye "hondo dzekicheni", kana Matangiro andakaita kunyora mitambo ndichidya
Rectangle set

Rectangle imwe neimwe inomiririrwa nematrix izere nenhamba. Nenzira, ini ndinogona kuratidza imwe inonakidza nuance - ese matrices ari mumutambo akarongwa senge-dimensional array. Kwete maviri-dimensional, asi one-dimensional! One-dimensional arrays ari nyore uye nekukurumidza kushanda nawo.

DevOps C ++ uye "hondo dzekicheni", kana Matangiro andakaita kunyora mitambo ndichidya
Muenzaniso wemutambo tank matrix

DevOps C ++ uye "hondo dzekicheni", kana Matangiro andakaita kunyora mitambo ndichidya
Kumiririra Matrix yeTangi reMutambo rine One-Dimensional Array

DevOps C ++ uye "hondo dzekicheni", kana Matangiro andakaita kunyora mitambo ndichidya
Mumwe muenzaniso unoratidza matrix inomiririrwa ne-one-dimensional array

Asi kuwana kuzvinhu zvegadziriro yacho kunoitika muchidimbu chakapetwa kaviri, sokunge chakanga chisati chiri chimwe-dimensional, asi chine mativi maviri-dimensional array. Izvi zvinoitwa nekuti tichiri kushanda nematrices.

DevOps C ++ uye "hondo dzekicheni", kana Matangiro andakaita kunyora mitambo ndichidya
Kupfuura mutsara-mwe-dimensional mune kaviri loop. Y ndiyo ID yemutsara, X ndiyo ID yekoramu

Ndokumbira utarise kuti pachinzvimbo chezvinozivikanwa matrix i, j, ndinoshandisa zviziviso x uye y. Saka, zvinoratidzika kwandiri, zvakanyanya kufadza ziso uye zvakajeka kuuropi. Uye zvakare, chiziviso chakadaro chinoita kuti zvikwanise kurojera zviri nyore matrices anoshandiswa paaxes akarongeka emufananidzo wemativi maviri.

Iye zvino nezve pixels, ruvara uye kuratidza. Iyo StretchDIBits basa (Musoro: windows.h; Raibhurari: gdi32.lib) inoshandiswa pakuburitsa. Pakati pezvimwe zvinhu, zvinotevera zvinopfuudzwa kune iri basa: mudziyo unoratidzwa mufananidzo (munyaya yangu, iyi ndiyo Windows console), marongero ekutanga kwekuratidzira mufananidzo, hupamhi / kureba, uye mufananidzo. iyo pachayo muchimiro chebitmap (bitmap), inomiririrwa nemhando dzemabhaiti. Bitmap senge nhevedzano yemabhaiti!

Iyo StretchDIBits () basa kubasa:

// screen output for game field
   StretchDIBits(
               deviceContext,
               OFFSET_LEFT, OFFSET_TOP,
               PMATRIX_WIDTH, PMATRIX_HEIGHT,
               0, 0,
               PMATRIX_WIDTH, PMATRIX_HEIGHT,
               m_p_bitmapMemory, &bitmapInfo,
               DIB_RGB_COLORS,
               SRCCOPY
               );

Memory yakagoverwa pachine nguva kune iyi bitmap uchishandisa iyo VirtualAlloc () basa. Ndiko kuti, nhamba inodiwa yemabyte inochengeterwa kuchengetedza ruzivo nezvese pixels, iyo inozozoratidzwa pachiratidziri.

Kugadzira m_p_bitmapMemory bitmap:

// create bitmap
   int bitmapMemorySize = (PMATRIX_WIDTH * PMATRIX_HEIGHT) * BYTES_PER_PIXEL;
   void* m_p_bitmapMemory = VirtualAlloc(0, bitmapMemorySize, MEM_COMMIT, PAGE_READWRITE);

Zvichireva kutaura, bitmap ine seti yemapikseli. Ese mana mabhayiti muhurongwa ndeye RGB pixel. Imwe byte pamutengo dzvuku, imwe byte pamutengo wegirinhi (G), uye imwe byte paruvara rwebhuruu (B). Uyezve, pane imwe byte per indent. Aya mavara matatu - Tsvuku / Green / Bhuruu (RGB) - akasanganiswa neimwe neimwe muzvikamu zvakasiyana - uye inoguma pixel color inowanikwa.

Zvino, zvakare, rectangle imwe neimwe, kana chinhu chemutambo, chinomiririrwa nenhamba matrix. Zvese izvi zvinhu zvemutambo zvakaiswa muunganidzwa. Uye zvino vanoiswa panhandare yekutamba, vachigadzira imwe hombe manhamba matrix. Ndakaronga nhamba imwe neimwe mumatrix kune rumwe ruvara. Semuenzaniso, nhamba 8 ndeyebhuruu, nhamba 9 ndeyero, nhamba yegumi ine rima grey, zvichingodaro. Nokudaro, tinogona kutaura kuti tine matrix yemutambo wekutamba, apo nhamba imwe neimwe ine rumwe rudzi rwemavara.

Saka, isu tine manhamba matrix yenhandare yese yekutamba kune rumwe rutivi uye bitmap yekuratidza mufananidzo kune rimwe. Parizvino, iyo bitmap "isina" - haisati yave neruzivo nezve pixels yemuvara waunoda. Izvi zvinoreva kuti danho rekupedzisira richange richizadza bitmap neruzivo nezve pixel yega yega zvichienderana nenhamba yematrix yenhandare yekutamba. Muenzaniso wemufananidzo wekushanduka kwakadaro uri mumufananidzo uri pasi apa.

DevOps C ++ uye "hondo dzekicheni", kana Matangiro andakaita kunyora mitambo ndichidya
Muenzaniso wekuzadza bitmap (Pixel matrix) neruzivo rwunobva panhamba dzematrix (Digital matrix) yenzvimbo yekutamba (maindice eruvara haaenderane nemaindisi emutambo)

Ini ndicharatidzawo chidimbu chekodhi chaiyo kubva mumutambo. Iyo inoshanduka colorIndex pane imwe neimwe iteration ye loop inopihwa kukosha (ruvara index) kubva kunhamba matrix yenhandare yekutamba (mainDigitalMatrix). Ipapo iyo ruvara pachayo inonyorerwa kurudzi rwemavara runobva pane index. Kupfuurirazve, iyo inoguma ruvara yakakamurwa kuva reshiyo tsvuku, girini uye bhuruu (RGB). Uye pamwe chete neiyo indent (pixelPadding), ruzivo urwu rwunonyorerwa pixel nguva nenguva, ichigadzira mufananidzo weruvara mu bitmap.

Iyo kodhi inoshandisa anongedza uye bitwise mashandiro, ayo anogona kunetsa kunzwisisa. Saka ndinokupa zano kuti uverenge zvakasiyana kumwe kuti zvimiro zvakadaro zvinoshanda sei.

Kuzadza bitmap neruzivo rwakavakirwa pane manhamba matrix yenhandare yekutamba:

// set pixel map variables
   int colorIndex;
   COLORREF color;
   int pitch;
   uint8_t* p_row;
 
   // arrange pixels for game field
   pitch = PMATRIX_WIDTH * BYTES_PER_PIXEL;     // row size in bytes
   p_row = (uint8_t*)m_p_bitmapMemory;       //cast to uint8 for valid pointer arithmetic
   							(to add by 1 byte (8 bits) at a time)   
   for (int y = 0; y < PMATRIX_HEIGHT; ++y)
   {
       uint32_t* p_pixel = (uint32_t*)p_row;
       for (int x = 0; x < PMATRIX_WIDTH; ++x)
       {
           colorIndex = mainDigitalMatrix[y * PMATRIX_WIDTH + x];
           color = Utils::GetColor(colorIndex);
           uint8_t blue = GetBValue(color);
           uint8_t green = GetGValue(color);
           uint8_t red = GetRValue(color);
           uint8_t pixelPadding = 0;
 
           *p_pixel = ((pixelPadding << 24) | (red << 16) | (green << 8) | blue);
           ++p_pixel;
       }
       p_row += pitch;
   }

Zvinoenderana neiyo nzira yatsanangurwa pamusoro, imwe pikicha (frame) inoumbwa mumutambo weCrazy Tanks uye inoratidzwa pachiratidziro muDraw () basa. Mushure mekunyoresa makiyi muInput () basa uye nekuzotevera kugadzirisa muLogic () basa, mufananidzo mutsva (frame) unoumbwa. Ichokwadi, zvinhu zvemutambo zvinogona kunge zvatova nenzvimbo yakasiyana panhandare yekutamba uye, maererano nazvo, zvinokweverwa mune imwe nzvimbo. Aya ndiwo maitikiro anoita animation (kufamba)

Mune dzidziso (kana iwe usina kukanganwa chero chinhu), kunzwisisa iyo mutambo loop kubva kumutambo wekutanga ("Nyoka") uye sisitimu yekuratidzira pixels pachiratidziro kubva mumutambo wechipiri ("Matangi") ndizvo zvese zvaunoda kunyora chero. yemitambo yako ye2D yeWindows. Soundless! πŸ˜‰ Zvimwe zvikamu zvinongori kubhururuka kwemhando.

Zvechokwadi, mutambo "Matangi" wakagadzirirwa zvakanyanya kuoma kupfuura "Nyoka". Ndakatoshandisa mutauro weC ++, ndiko kuti, ndakatsanangura zvinhu zvakasiyana-siyana zvemitambo nemakirasi. Ini ndakagadzira yangu yekuunganidza - iwe unogona kuona iyo kodhi mumusoro / Bhokisi.h. Nenzira, muunganidzwa unogona kunge uine ndangariro leak. Zvinongedzera zvakashandiswa. Akashanda nendangariro. Ndinofanira kutaura kuti bhuku racho rakandibatsira zvikuru. Kutanga C ++ Kuburikidza neGame Chirongwa. Uku ndiko kutanga kwakanaka kwevanotanga muC ++. Idiki, inonakidza uye yakarongeka.

Zvakatora inenge mwedzi mitanhatu kugadzira mutambo uyu. Ndainyanya kunyora panguva yekudya kwemasikati uye masnacks kubasa. Akagara muimba yekubikira yemuhofisi, akatsika-tsika chikafu ndokunyora kodhi. Kana kumba kwekudya kwemanheru. Saka ndakawana "hondo dzekicheni" dzakadaro. Senguva dzose, ndakashinga kushandisa bhuku rekunyorera, uye zvinhu zvese zvepfungwa zvakazvarwa mariri.

Pakupera kwechikamu chinoshanda, ini ndichaburitsa mashoma scans ebhuku rangu rekunyorera. Kuratidza kuti chii chaizvo chandanga ndichinyora pasi, kudhirowa, kuverenga, kugadzira…

DevOps C ++ uye "hondo dzekicheni", kana Matangiro andakaita kunyora mitambo ndichidya
Tangi mufananidzo dhizaini. Uye tsananguro yekuti mangani pixels tangi yega yega inofanirwa kugara pachiratidziri

DevOps C ++ uye "hondo dzekicheni", kana Matangiro andakaita kunyora mitambo ndichidya
Kuverengera kwealgorithm uye mafomula ekutenderera kwetangi kutenderedza axis yayo

DevOps C ++ uye "hondo dzekicheni", kana Matangiro andakaita kunyora mitambo ndichidya
Dhiagiramu yemuunganidzwa wangu (iyo ine ndangariro inodonha, ingangoita). Iyo yekuunganidza inogadzirwa seYakabatanidzwa Rondedzero

DevOps C ++ uye "hondo dzekicheni", kana Matangiro andakaita kunyora mitambo ndichidya
Uye uku kuedza kusina maturo kupinza hungwaru hwekugadzira mumutambo

Dzidziso

"Kunyange rwendo rwemakiromita ane chiuru runotanga nedanho rekutanga" (Uchenjeri hwekare hweChinese)

Ngatibve pakudzidzira kuenda kudzidziso! Iwe unowana sei nguva yekuzvivaraidza kwako?

  1. Sarudza chaunoda chaizvo (maiwe, ichi ndicho chakanyanya kuoma).
  2. Ronga zvinokosha.
  3. Baira zvose "zvakanyanyisa" nekuda kwezvinonyanya kukosha.
  4. Enda kune zvinangwa zvako zuva nezuva.
  5. Usatarisire kuti pachave nemaawa maviri kana matatu enguva yemahara yekuzvivaraidza.

Kune rimwe divi, iwe unofanirwa kuona zvaunoda uye kuisa pamberi. Kune rimwe divi, zvinokwanisika kusiya zvimwe zviitiko / mapurojekiti uchifarira izvi zvinonyanya kukosha. Mune mamwe mazwi, iwe uchafanirwa kubayira zvese "zvepamusoro". Ndakanzwa pane imwe nzvimbo kuti muupenyu panofanira kuva nepamusoro pezvinhu zvitatu zvikuru. Ipapo uchakwanisa kubata navo nenzira yakanakisisa inobvira. Uye mamwe mapurojekiti / mafambiro anotanga kuremedza corny. Asi izvi ndizvo zvese, pamwe, subjective uye munhu.

Pane mumwe mutemo wegoridhe: usambofa uine 0% zuva! Ndakadzidza nezvazvo mune chinyorwa chakaitwa neanogadzira indie. Kana uri kushanda purojekiti, saka ita chimwe chinhu pamusoro payo zuva rega rega. Uye hazvina basa kuti unoita yakawanda sei. Nyora izwi rimwe kana mutsara wekodhi, tarisa vhidhiyo yedzidziso, kana kurovera chipikiri chimwe mubhodhi-ingoita chimwe chinhu. Chinhu chakanyanya kuoma chiri kutanga. Kana wangotanga, ungangoita zvishoma pane zvawaida kuita. Saka iwe unogara uchienda kune chinangwa chako uye, nditende, nekukurumidza. Mushure mezvose, mabhureki makuru pazvinhu zvese kuverengera.

Uye zvakakosha kuyeuka kuti haufanirwe kurerutsa uye kufuratira yemahara "sawdust" yenguva mu5, 10, 15 maminitsi, kumirira mamwe makuru "matanda" anogara awa kana maviri. Wakamira mumutsetse here? Funga nezvechimwe chinhu chepurojekiti yako. Uri kukwira escalator here? Nyora chimwe chinhu mukabhuku. Unodya here mubhazi? Zvakanaka, verenga chimwe chinyorwa. Shandisa mukana wese. Rega kuona katsi nembwa paYouTube! Usakanganise nehuropi hwako!

Uye yekupedzisira. Kana, mushure mekuverenga chinyorwa ichi, iwe wakafarira pfungwa yekugadzira mitambo pasina kushandisa injini dzemitambo, saka rangarira zita rekuti Casey Muratori. Murume uyu ane website. Muchikamu che "watch -> PREVIOUS EPISODES" iwe unowana zvinoshamisa emahara evhidhiyo zvidzidzo zvekugadzira mutambo wehunyanzvi kubva pakutanga. Iwe unogona kudzidza zvakawanda mushanu Intro kusvika C yeWindows zvidzidzo kupfuura mumakore mashanu ekudzidza kuyunivhesiti (mumwe munhu akanyora nezve izvi mune zvakataurwa pasi pevhidhiyo).

Casey anotsanangurawo kuti nekugadzira yako wega injini yemutambo, iwe uchave nekunzwisisa kuri nani kwechero injini dziripo. Munyika yezvimiro, umo munhu wese ari kuyedza kuita otomatiki, iwe uchadzidza kugadzira, kwete kushandisa. Nzwisisa mamiriro chaiwo emakombuta. Uye iwe zvakare uchave akanyanya kungwara uye akakura programmer - pro.

Rombo rakanaka munzira yako yaunosarudza! Uye ngatiite kuti nyika ive nyanzvi.

Author: Grankin Andrey, DevOps



Source: www.habr.com