DevOps C ++ ndi "nkhondo zakukhitchini", kapena Momwe ndinayambira kulemba masewera ndikudya

"Ndikudziwa kuti sindikudziwa chilichonse" Socrates

Kwa ndani: kwa anthu a IT omwe samasamala za onse opanga mapulogalamu ndipo amafuna kusewera masewera awo!

Za chiyani: za momwe mungayambire kulemba masewera mu C / C ++, ngati mukufunikira mwadzidzidzi!

Chifukwa chiyani muyenera kuwerenga izi: Kupititsa patsogolo ntchito si gawo langa laukadaulo, koma ndimayesetsa kulemba ma code sabata iliyonse. Chifukwa ndimakonda masewera!

Moni Dzina langa Ndine Andrey Grankin, Ndine DevOps ku Luxoft. Kupititsa patsogolo ntchito sikopadera kwanga, koma ndimayesetsa kulembera sabata iliyonse. Chifukwa ndimakonda masewera!

Makampani opanga maseŵera apakompyuta ndi aakulu, akunenedwa kuti ndi aakulu kuposa makampani opanga mafilimu masiku ano. Masewera adalembedwa kuyambira pachiyambi cha makompyuta, pogwiritsa ntchito, ndi miyezo yamakono, njira zovuta komanso zoyambirira zachitukuko. M'kupita kwa nthawi, injini zamasewera zokhala ndi zithunzi zokonzedwa kale, physics, ndi mawu zidayamba kuwonekera. Amakulolani kuti muyang'ane pakupanga masewerawo okha komanso osadandaula za maziko ake. Koma pamodzi ndi iwo, ndi injini, omanga "akhungu" ndi kuwononga. Kupanga masewera palokha kumayikidwa pa lamba wa conveyor. Ndipo kuchuluka kwa zinthu kumayamba kulamulira khalidwe lake.

Nthawi yomweyo, tikamasewera masewera a anthu ena, nthawi zonse timakhala ochepa chifukwa cha malo, malo, zilembo, ndi makina amasewera omwe anthu ena adabwera nawo. Ndiye ndinazindikira kuti...

... nthawi yakwana yoti ndilenge maiko anga, omvera ine ndekha. Dziko lapansi kumene ine ndiri Atate, Mwana, ndi Mzimu Woyera!

Ndipo ndikukhulupirira moona mtima kuti polemba injini yanu yamasewera ndikuyisewera, mudzatha kuvula nsapato zanu, kupukuta mazenera ndikukweza kanyumba kanu, kukhala katswiri wodziwa zambiri komanso wokwanira.

M'nkhaniyi ndiyesera kukuuzani momwe ndinayambira kulembera masewera ang'onoang'ono mu C / C ++, momwe ndondomeko yachitukuko ilili, komanso kumene ndimapeza nthawi yochita masewero olimbitsa thupi. Ndilokhazikika ndipo limafotokoza momwe munthu amayambira. Zofunika za umbuli ndi chikhulupiriro, za chithunzi changa cha dziko lapansi pakadali pano. Mwa kuyankhula kwina, "Utsogoleri suli ndi udindo pa ubongo wanu!"

Yesetsani

“Chidziŵitso popanda chizoloŵezi n’chachabechabe, kuchita popanda chidziwitso n’koopsa” Confucius

Kabuku kanga ndi moyo wanga!


Kotero, pochita, ndikhoza kunena kuti kwa ine chirichonse chimayamba ndi notepad. Sikuti ndimalemba ntchito zanga za tsiku ndi tsiku kumeneko, ndimajambulanso, pulogalamu, kupanga ma chart chart ndikuthetsa mavuto, kuphatikiza masamu. Nthawi zonse gwiritsani ntchito kope ndipo lembani ndi pensulo yokha. Ndizoyera, zosavuta komanso zodalirika, IMHO.

DevOps C ++ ndi "nkhondo zakukhitchini", kapena Momwe ndinayambira kulemba masewera ndikudya
Kabuku kanga (kadadzadza kale). Izi ndi momwe amawonekera. Lili ndi ntchito za tsiku ndi tsiku, malingaliro, zojambula, zojambula, zothetsera, kusunga mabuku akuda, ma code ndi zina zotero.

Pakadali pano, ndidatha kumaliza ntchito zitatu (izi ndikumvetsetsa kwanga "kukwanira", chifukwa chilichonse chimatha kupangidwa kosatha).

  • Ntchito 0: Ichi ndi chiwonetsero cha 3D Architect Demo cholembedwa mu C # pogwiritsa ntchito injini yamasewera a Unity. Kwa nsanja za Windows ndi macOS.
  • Masewera 1: console masewera Nyoka Yosavuta (yodziwika kwa aliyense kuti "Njoka") ya Windows. Yolembedwa mu C.
  • Masewera 2: masewera a console Crazy Tanks (odziwika kwa aliyense ngati "Tanki"), olembedwa mu C ++ (pogwiritsa ntchito makalasi) komanso Windows.

Project 0. Chiwonetsero cha Zomangamanga

  • Nsanja: Windows (Mawindo 7, 10), Mac OS (OS X El Capitan v. 10.11.6)
  • Chilankhulo: C#
  • Injini yamasewera: mgwirizano
  • Kudzoza: Darrin Lile
  • Posungira: GitHub

DevOps C ++ ndi "nkhondo zakukhitchini", kapena Momwe ndinayambira kulemba masewera ndikudya
3D Scene Architect Demo

Ntchito yoyamba idakhazikitsidwa osati mu C/C ++, koma mu C# pogwiritsa ntchito injini yamasewera a Unity. Injini iyi sinali yofunikira pa hardware monga Unreal Engine, komanso zinkawoneka zosavuta kukhazikitsa ndi kugwiritsa ntchito. Sindinaganizire za injini zina.

Cholinga changa mu Umodzi sichinali kupanga masewera. Ndinkafuna kupanga chithunzi cha 3D chokhala ndi munthu wina. Iye, kapena m'malo Iye (ndinatengera mtsikana yemwe ndimamukonda =) amayenera kusuntha ndikuyanjana ndi dziko lozungulira. Zinali zofunikira kumvetsetsa kuti Umodzi ndi chiyani, njira yachitukuko ndi yotani yomwe ikufunika kuti pakhale chinachake. Umu ndi momwe polojekiti ya Architect Demo idabadwira (dzina lidangopangidwa modzidzimutsa). Kupanga mapulogalamu, kutengera chitsanzo, makanema ojambula pamanja, kutumiza mameseji kunanditengera mwina miyezi iwiri yantchito yatsiku ndi tsiku.

Ndinayamba ndi mavidiyo ophunzirira pa YouTube popanga zitsanzo za 3D mu Blender. Blender ndi chida chabwino kwambiri chaulere cha 3D modelling (ndi zina) zomwe sizifuna kuyika. Ndipo pano chododometsa chinandiyembekezera... Zinapezeka kuti kutsanzira, makanema ojambula pamanja, kutumizirana mameseji ndi mitu yayikulu yosiyana yomwe mutha kulembapo mabuku. Izi ndi zoona makamaka kwa otchulidwa. Kuti mukhale chitsanzo cha zala, mano, maso ndi ziwalo zina za thupi, mudzafunika chidziwitso cha anatomy. Kodi minofu ya nkhope imapangidwa bwanji? Kodi anthu amasuntha bwanji? Ndinayenera "kulowetsa" mafupa m'dzanja lililonse, mwendo, chala, phalanges za zala!

Tsanzirani ma collarbones ndi mafupa owonjezera a lever kuti makanema ojambula aziwoneka mwachilengedwe. Pambuyo pa maphunziro otere, mumazindikira kuchuluka kwa ntchito zomwe opanga makanema ojambula amangopanga masekondi 30 a kanema. Koma mafilimu a 3D amakhala kwa maola ambiri! Kenako timachoka m’makanema n’kunena zinthu monga: “Ndizojambula/kanema wachabechabe! Akadachita bwino…” Opusa!

Ndipo chinthu chinanso chokhudza mapulogalamu mu polojekitiyi. Monga momwe zinakhalira, gawo losangalatsa kwambiri kwa ine linali masamu. Ngati mutayendetsa zochitikazo (zolowera kumalo ofotokozera polojekiti), mudzawona kuti kamera imazungulira mozungulira mtsikanayo pagawo. Kuti kamera ikhale yozungulira, ndimayenera kuwerengera kaye makonzedwe a malo ozungulira (2D), ndiyeno pagawo (3D). Chosangalatsa ndichakuti ndimadana ndi masamu kusukulu ndipo ndimadziwa ndi C-minus. Mwa zina, mwina, chifukwa kusukulu samakufotokozerani momwe gehena imagwiritsidwira ntchito m'moyo. Koma mukakhala otanganidwa ndi cholinga chanu, maloto anu, malingaliro anu amamveka ndikutseguka! Ndipo mumayamba kuona ntchito zovuta ngati ulendo wosangalatsa. Kenako mumaganiza kuti: "Chabwino, bwanji katswiri wamasamu yemwe mumamukonda sanakuuzeni nthawi zonse komwe mafomuwa angagwiritsidwe ntchito?"

DevOps C ++ ndi "nkhondo zakukhitchini", kapena Momwe ndinayambira kulemba masewera ndikudya
Kuwerengera mafomu owerengera kutengera mfundo pabwalo ndi gawo (kuchokera m'buku langa)

Masewera 1. Nyoka Yosavuta

  • Nsanja: Windows (yoyesedwa pa Windows 7, 10)
  • Chilankhulo: Ndikuganiza kuti ndinalemba mu C puree
  • Injini yamasewera: Windows console
  • Kudzoza: javidx9
  • Posungira: GitHub

DevOps C ++ ndi "nkhondo zakukhitchini", kapena Momwe ndinayambira kulemba masewera ndikudya
Masewera osavuta a Njoka

Chithunzi cha 3D si masewera. Kuonjezera apo, kupanga ndi kupanga zinthu za 3D (makamaka zilembo) kumatenga nthawi komanso kovuta. Nditasewera ndi Unity, kuzindikira kunabwera kwa ine kuti ndiyenera kupitiliza, kapena m'malo mwake, kuyambira pazoyambira. Chinachake chosavuta komanso chachangu, koma nthawi yomweyo padziko lonse lapansi, kumvetsetsa momwe masewerawa amapangidwira.

Chosavuta komanso chachangu ndi chiyani? Ndiko kulondola, console ndi 2D. Ndendende, ngakhale kutonthoza ndi zizindikiro. Ndinapitanso kukafunafuna kudzoza pa intaneti (nthawi zambiri, ndikuganiza kuti intaneti ndiyomwe idapangidwa mosintha kwambiri komanso yowopsa kwambiri m'zaka za zana la XNUMX). Ndinakumba vidiyo ya wopanga mapulogalamu omwe adapanga Tetris console. Ndipo mofanana ndi masewera ake ndinaganiza zopanga "njoka". Kuchokera muvidiyoyi ndidaphunzira za zinthu ziwiri zofunika - masewera amasewera (omwe ali ndi ntchito / magawo atatu) ndi zotuluka ku buffer.

Mtundu wamasewera ukhoza kuwoneka motere:

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

Khodiyo imapereka ntchito yonse yayikulu () nthawi imodzi. Ndipo kuzungulira kwamasewera kumayamba pambuyo pa ndemanga yoyenera. Pali ntchito zitatu zoyambira mu loop: Input(), Logic(), Draw(). Choyamba, Lowetsani deta (makamaka kuwongolera makiyi), kenako ndikukonza Logic yolowa, kenako zotuluka pazenera - Jambulani. Ndipo kotero pa chimango chilichonse. Umu ndi momwe makanema ojambula amapangidwira. Zili ngati makatuni. Nthawi zambiri, kukonza zomwe zalowetsedwa kumatenga nthawi yambiri ndipo, monga ndikudziwira, kumatsimikizira kuchuluka kwa masewerawo. Koma apa Logic () ntchito imachita mwachangu kwambiri. Chifukwa chake, muyenera kuwongolera kuchuluka kwa chimango pogwiritsa ntchito Sleep() ntchito ndi gameSpeed ​​​​parameter, yomwe imatsimikizira kuthamanga uku.

DevOps C ++ ndi "nkhondo zakukhitchini", kapena Momwe ndinayambira kulemba masewera ndikudya
Masewera ozungulira. Kupanga "njoka" mu notepad

Ngati mukupanga masewera otengera mawonekedwe, simudzatha kutulutsa deta pazenera pogwiritsa ntchito 'cout' yomwe imatuluka nthawi zonse - imachedwa kwambiri. Chifukwa chake, zotulukazo ziyenera kutumizidwa ku buffer ya skrini. Izi ndizothamanga kwambiri ndipo masewerawa amayenda popanda glitches. Kunena zowona, sindikumvetsa bwino chomwe chophimba chophimba ndi momwe chimagwirira ntchito. Koma ndipereka chitsanzo apa, ndipo mwinamwake wina akhoza kufotokozera momwe zilili mu ndemanga.

Kupeza skrini yotchinga (mwachitsanzo):

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

Chiwonetsero chachindunji cha mzere wina wa zingwe (mzere wowonetsera):

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

M'malingaliro, palibe chovuta pamasewerawa; Ndikuganiza kuti ndi chitsanzo chabwino cholowera. Khodiyo imalembedwa mu fayilo imodzi ndikusinthidwa muzochita zingapo. Palibe makalasi, palibe cholowa. Mutha kudziwonera nokha zonse patsamba lamasewerawa popita kumalo osungira pa GitHub.

Masewera 2. Matanki Openga

DevOps C ++ ndi "nkhondo zakukhitchini", kapena Momwe ndinayambira kulemba masewera ndikudya
Masewera Openga Matanki

Kusindikiza zilembo ku console mwina ndichinthu chosavuta chomwe mungasinthe kukhala masewera. Koma vuto limodzi likuwonekera: zizindikiro zimakhala ndi kutalika kwake ndi m'lifupi (kutalika ndi kwakukulu kuposa m'lifupi). Mwanjira iyi, zonse zidzawoneka mosagwirizana, ndipo kusunthira pansi kapena mmwamba kudzawoneka mofulumira kwambiri kusiyana ndi kusuntha kumanzere kapena kumanja. Izi zimawonekera kwambiri mu Njoka (Game 1). "Matanki" (Game 2) alibe drawback izi, chifukwa zotuluka kumeneko anakonza mwa kujambula mapikiselo chophimba ndi mitundu yosiyanasiyana. Munganene kuti ndinalemba womasulira. Zowona, izi ndizovuta kwambiri, ngakhale zosangalatsa kwambiri.

Kwa masewerawa, zidzakhala zokwanira kufotokoza dongosolo langa lowonetsera ma pixel pawindo. Ndimaona kuti iyi ndi gawo lalikulu lamasewera. Ndipo mukhoza kubwera ndi china chirichonse nokha.

Chifukwa chake, zomwe mukuwona pazenera zimangosuntha makona amitundu yambiri.

DevOps C ++ ndi "nkhondo zakukhitchini", kapena Momwe ndinayambira kulemba masewera ndikudya
Seti ya rectangles

Rectangle iliyonse imayimiridwa ndi matrix odzazidwa ndi manambala. Mwa njira, nditha kuwunikira gawo limodzi losangalatsa - masamu onse pamasewerawa amapangidwa ngati gawo limodzi. Osati awiri-dimensional, koma mbali imodzi! Magawo amtundu umodzi ndi osavuta komanso achangu kugwira nawo ntchito.

DevOps C ++ ndi "nkhondo zakukhitchini", kapena Momwe ndinayambira kulemba masewera ndikudya
Chitsanzo cha masewera a tank matrix

DevOps C ++ ndi "nkhondo zakukhitchini", kapena Momwe ndinayambira kulemba masewera ndikudya
Kuyimira matanki amasewera ngati gawo limodzi

DevOps C ++ ndi "nkhondo zakukhitchini", kapena Momwe ndinayambira kulemba masewera ndikudya
Chitsanzo chowoneka bwino choyimira matrix ngati gawo limodzi

Koma mwayi wopita kuzinthu zamaguluwo umapezeka pawiri, ngati kuti sikunali gawo limodzi, koma mbali ziwiri. Izi zimachitika chifukwa timagwirabe ntchito ndi matrices.

DevOps C ++ ndi "nkhondo zakukhitchini", kapena Momwe ndinayambira kulemba masewera ndikudya
Kudutsa mzere wa mbali imodzi mu lupu iwiri. Y - chizindikiritso cha mzere, X - chizindikiritso cha mzere

Chonde dziwani: m'malo mwa zizindikilo zanthawi zonse za matrix i, j, ndimagwiritsa ntchito zozindikiritsa x ndi y. Mwanjira iyi, zikuwoneka kwa ine, ndizosangalatsa m'maso komanso zomveka bwino ku ubongo. Kuphatikiza apo, mawu otere amapangitsa kuti zitheke kupanga masanjidwe ogwiritsidwa ntchito pamagulu azithunzi zamitundu iwiri.

Tsopano za mapikiselo, mtundu ndi zotuluka pazenera. Ntchito ya StretchDIBits imagwiritsidwa ntchito potulutsa (Header: windows.h; Library: gdi32.lib). Ntchitoyi, mwa zina, imalandira izi: chipangizo chomwe chithunzicho chikuwonetsedwa (kwa ine, ndi Windows console), zoyambira zowonetsera chithunzi, m'lifupi / kutalika kwake, ndi chithunzi chomwe chili mu mawonekedwe a bitmap, oimiridwa ndi ma byte angapo. Bitmap ngati gulu labyte!

StretchDIBits () ntchito ikugwira ntchito:

// 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 imaperekedwa pasadakhale kwa bitmap iyi pogwiritsa ntchito VirtualAlloc () ntchito. Ndiye kuti, nambala yofunikira ya ma byte imasungidwa kuti isunge zambiri za ma pixel onse, zomwe zidzawonetsedwa pazenera.

Kupanga 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);

Mwachidule, bitmap imakhala ndi ma pixel angapo. Ma byte anayi aliwonse mugululi ndi pixel ya RGB. Baiti imodzi pamtengo wamtundu wofiyira, baiti imodzi pamtengo wamtundu wobiriwira (G), ndi baiti imodzi pamtengo wamtundu wabuluu (B). Kuphatikiza apo kwatsala baiti imodzi kuti indentation. Mitundu itatu iyi - Yofiira / Yobiriwira / Buluu (RGB) - imasakanizidwa mosiyanasiyana kuti apange mtundu wa pixel wotsatira.

Tsopano, kachiwiri, kakona kakang'ono kalikonse, kapena chinthu chamasewera, chimaimiridwa ndi manambala. Zinthu zonse zamasewerazi zimayikidwa mgulu. Kenako amayikidwa pabwalo lamasewera, ndikupanga masanjidwe amodzi akulu. Ndinagwirizanitsa nambala iliyonse mu matrix ndi mtundu wina wake. Mwachitsanzo, nambala 8 imagwirizana ndi buluu, nambala 9 mpaka yachikasu, nambala 10 mpaka imvi yakuda, ndi zina zotero. Chifukwa chake, titha kunena kuti tili ndi matrix amasewera, pomwe nambala iliyonse ndi mtundu.

Chifukwa chake, tili ndi manambala amasewera onse mbali imodzi ndi bitmap yowonetsera chithunzicho. Pakadali pano, bitmap ndi "chopanda" - ilibe zambiri za ma pixel amtundu womwe mukufuna. Izi zikutanthauza kuti sitepe yotsiriza idzakhala yodzaza bitmap ndi chidziwitso cha pixel iliyonse kutengera matrix owerengeka a masewerawo. Chitsanzo chomveka bwino cha kusintha kotereku chiri pa chithunzi chili pansipa.

DevOps C ++ ndi "nkhondo zakukhitchini", kapena Momwe ndinayambira kulemba masewera ndikudya
Chitsanzo chodzaza bitmap (Pixel matrix) ndi chidziwitso chotengera Digital matrix of the play field (ma indices amitundu sakufanana ndi ma indices amasewerawo)

Ndiperekanso chidutswa cha code yeniyeni kuchokera pamasewera. Mtundu wosinthika wa colorIndex pa nthawi iliyonse ya loop imapatsidwa mtengo (chilolezo chamitundu) kuchokera pamatrix owerengeka a malo osewerera (mainDigitalMatrix). Mtunduwu umasinthidwa kukhala mtundu womwewo potengera index. The chifukwa mtundu ndiye anawagawa mu chiŵerengero chofiira, zobiriwira ndi buluu (RGB). Ndipo pamodzi ndi pixelPadding, chidziwitsochi chimalembedwa mu pixel mobwerezabwereza, kupanga chithunzi cha mtundu mu bitmap.

Khodiyo imagwiritsa ntchito zolozera ndi magwiridwe antchito pang'ono, zomwe zingakhale zovuta kuzimvetsetsa. Chifukwa chake ndikukulangizani kuti muwerenge penapake padera momwe mapangidwe otere amagwirira ntchito.

Kudzaza bitmap ndi chidziwitso chotengera manambala amasewera:

// 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;
   }

Malinga ndi njira yomwe tafotokozayi, mu masewerawa Crazy Tanks chithunzi chimodzi (chimango) chimapangidwa ndikuwonetsedwa pazenera mu Draw () ntchito. Pambuyo polembetsa ma keystroke mu Input () ntchito ndi kukonza kwawo kotsatira mu Logic () ntchito, chithunzi chatsopano (chimango) chimapangidwa. Zowona, zinthu zamasewera zitha kukhala kale ndi malo osiyana pabwalo lamasewera ndipo, motero, zimakokedwa kwina. Umu ndi momwe makanema ojambula (mayendedwe) amachitikira.

Mwachidziwitso (ngati sindinayiwale kalikonse), kumvetsetsa kuzungulira kwamasewera kuchokera pamasewera oyamba ("Njoka") ndi kachitidwe kowonetsera ma pixel pazenera kuchokera pamasewera achiwiri ("Tanki") ndizo zonse zomwe muyenera kulemba. pamasewera anu a 2D pansi pa Windows. Zopanda phokoso! 😉 Magawo ena onse ndi ongouluka basi.

Zoonadi, masewerawa "Tanks" ndi ovuta kwambiri kuposa "Njoka". Ndinagwiritsa ntchito kale chinenero cha C ++, ndiko kuti, ndinalongosola zinthu zosiyanasiyana zamasewera ndi makalasi. Ndinapanga zosonkhanitsira zanga - code ikhoza kuwonedwa pamitu/Box.h. Mwa njira, zosonkhanitsazo zimakhala ndi vuto la kukumbukira. Zolozera zogwiritsidwa ntchito. Anagwira ntchito ndi kukumbukira. Ndiyenera kunena kuti bukulo linandithandiza kwambiri Kuyambira C ++ Kupyolera mu Masewera a Masewera. Ichi ndi chiyambi chabwino kwa oyamba kumene mu C ++. Ndi yaying'ono, yosangalatsa komanso yokonzedwa bwino.

Zinatenga pafupifupi miyezi isanu ndi umodzi kupanga masewerawa. Ndinalemba makamaka pa nkhomaliro ndi zokhwasula-khwasula kuntchito. Anakhala kukhitchini yakuofesi, kuponda chakudya ndikulemba code. Kapena pa chakudya kunyumba. Choncho ndinamaliza ndi “nkhondo zakukhitchini” zimenezi. Monga nthawi zonse, ndimagwiritsa ntchito kope, ndipo zinthu zonse zamalingaliro zidabadwiramo.

Kuti nditsirize gawo lothandiza, nditenga zowerengeka zingapo zamabuku anga. Kuwonetsa zomwe ndidalemba, kujambula, kuwerengera, kupanga ...

DevOps C ++ ndi "nkhondo zakukhitchini", kapena Momwe ndinayambira kulemba masewera ndikudya
Kupanga zithunzi za akasinja. Ndikuwona ma pixel angati tanki iliyonse iyenera kukhala pazenera

DevOps C ++ ndi "nkhondo zakukhitchini", kapena Momwe ndinayambira kulemba masewera ndikudya
Kuwerengera ma aligorivimu ndi mafomu a kasinthasintha wa thanki mozungulira mozungulira

DevOps C ++ ndi "nkhondo zakukhitchini", kapena Momwe ndinayambira kulemba masewera ndikudya
Dongosolo la zosonkhanitsira zanga (momwe muli ndi kukumbukira kutayikira, mwina). Zosonkhanitsazo zimapangidwa molingana ndi mtundu wa Linked List

DevOps C ++ ndi "nkhondo zakukhitchini", kapena Momwe ndinayambira kulemba masewera ndikudya
Ndipo izi ndi zoyesayesa zopanda phindu zophatikizira luntha lochita kupanga pamasewerawa

Chiphunzitso

"Ngakhale ulendo wamakilomita chikwi umayamba ndi sitepe yoyamba" (Nzeru zakale zaku China)

Tiyeni tichoke ku machitidwe kupita ku chiphunzitso! Kodi mungapeze bwanji nthawi yochita zomwe mumakonda?

  1. Dziwani zomwe mukufunadi (kalanga, ili ndiye gawo lovuta kwambiri).
  2. Muziika zinthu zofunika patsogolo.
  3. Perekani chilichonse "chowonjezera" chifukwa cha zofunika kwambiri.
  4. Pitani ku zolinga tsiku lililonse.
  5. Musayembekezere maola awiri kapena atatu a nthawi yaulere kuti mugwiritse ntchito zomwe mumakonda.

Kumbali imodzi, muyenera kudziwa zomwe mukufuna ndikuyika patsogolo. Kumbali inayi, ndizotheka kusiya ntchito / ntchito zina kuti zithandizire izi. Mwa kuyankhula kwina, mudzayenera kupereka zonse "zowonjezera". Ndinamva kwinakwake kuti payenera kukhala zochitika zazikulu zitatu m'moyo. Mukatero mudzatha kuwachita mwapamwamba kwambiri. Ndipo ma projekiti / njira zowonjezera zingoyamba kuchulukirachulukira. Koma izi zonse mwina subjective ndi payekha.

Pali lamulo linalake la golide: osakhala ndi tsiku la 0%! Ndinaphunzira za izi m'nkhani yolembedwa ndi wopanga indie. Ngati mukugwira ntchito, chitanipo kanthu tsiku lililonse. Ndipo zilibe kanthu kuti mumachita zochuluka bwanji. Lembani liwu limodzi kapena mzere umodzi wa code, onerani kanema wamaphunziro amodzi kapena nyundo msomali umodzi pa bolodi - ingochitani zinazake. Chovuta kwambiri ndikuyamba. Mukangoyamba, mutha kuchita zambiri kuposa momwe mumafunira. Mwanjira iyi mudzasunthira ku cholinga chanu nthawi zonse ndipo, ndikhulupirireni, mwachangu kwambiri. Ndipotu, chopinga chachikulu pa zinthu zonse ndicho kuzengereza.

Ndipo ndikofunikira kukumbukira kuti simuyenera kunyalanyaza ndikunyalanyaza "utuchi" waulere wa mphindi 5, 10, 15, dikirani "zipika" zazikulu zomwe zimatha ola limodzi kapena awiri. Kodi mwaima pamzere? Ganizirani zina za polojekiti yanu. Kukwera escalator? Lembani china chake mu kope. Kodi mukuyenda pa basi? Chabwino, werengani nkhani ina. Gwiritsani ntchito mwayi uliwonse. Siyani kuwonera amphaka ndi agalu pa YouTube! Osaipitsa ubongo wanu!

Ndipo chinthu chimodzi chotsiriza. Ngati, mutawerenga nkhaniyi, mudakonda lingaliro la kupanga masewera popanda kugwiritsa ntchito injini zamasewera, ndiye kumbukirani dzina lakuti Casey Muratori. Munthu uyu ali nazo webusaitiyi. Mugawo la "wotchi -> PREVIOUS EPISODES" mupeza maphunziro aulere aulere pakupanga masewera aukadaulo kuyambira poyambira. M'masanu Oyamba mpaka C a maphunziro a Windows mwina mungaphunzire zambiri kuposa zaka zisanu zakuphunzira ku yunivesite (wina analemba za izi mu ndemanga pansi pa kanema).

Casey akufotokozanso kuti popanga injini yanu yamasewera, mumvetsetsa bwino injini zomwe zilipo. M'dziko lazinthu zomwe aliyense akuyesera kupanga zokha, mumaphunzira kupanga osati kugwiritsa ntchito. Mumamvetsetsa momwe makompyuta alili. Ndipo mudzakhalanso wanzeru kwambiri komanso wokhwima - pro.

Zabwino zonse panjira yomwe mwasankha! Ndipo tiyeni tipange dziko kukhala akatswiri.

Author: Grankin Andrey, DevOps



Source: www.habr.com