DevOps C++ ma "taua umukuka", poʻo le faʻafefea ona ou tusia taʻaloga aʻo 'ai

"Ou te iloa ou te le iloa se mea" Socrates

Mo ai: mo tagata IT e le popole i tagata atiaʻe uma ma manaʻo e taʻalo a latou taʻaloga!

E uiga i le a: e uiga i le auala e amata ai le tusiaina o taʻaloga i le C / C ++, pe a faʻafuaseʻi ona e manaʻomia!

Aisea e tatau ai ona e faitauina lenei mea: O le atinaʻeina o talosaga e le o laʻu vaega o tomai, ae ou te taumafai e faʻailoga i vaiaso uma. Aua ou te fiafia i taaloga!

Talofa lo'u Igoa O Andrey Grankin, O aʻu o DevOps i Luxoft. O le atinaʻeina o talosaga e le o soʻu tomai faʻapitoa, ae ou te taumafai e faʻailoga i vaiaso uma. Aua ou te fiafia i taaloga!

O le pisinisi fa'akomepiuta ta'aloga e tele, talatala e sili atu nai lo fale tifaga i aso nei. Taaloga na tusia talu mai le amataga o komepiuta, faʻaaogaina, e ala i tulaga faʻaonaponei, lavelave ma auala faʻavae. I le aluga o taimi, na amata ona aliali mai masini taʻaloga ua uma ona faʻapipiʻiina ata, fisiki, ma leo. Latou te faʻatagaina oe e taulai atu i le atinaʻeina o le taʻaloga lava ia ma aua le popole i lona faʻavae. Ae faʻatasi ai ma i latou, faʻatasi ai ma afi, tagata atinaʻe "e tauaso" ma faʻaleagaina. O le gaosiga o taʻaloga lava ia o loʻo tuʻuina i luga o le conveyor belt. Ma o le tele o oloa e amata ona manumalo i lona tulaga lelei.

I le taimi lava e tasi, pe a taʻalo i taʻaloga a isi tagata, e faʻatapulaʻaina i tatou i taimi uma i nofoaga, faʻasologa, tagata, ma taʻaloga enisinia na maua e isi tagata. O lea na ou iloa ai ...

... ua oo mai le taimi e faia ai aʻu lava lalolagi, e na o aʻu lava e pulea. Lalolagi lea o aʻu o le Tama, le Alo, ma le Agaga Paia!

Ma ou te talitonu ma le faamaoni e ala i le tusiaina o lau lava afi taʻaloga ma taʻalo i luga, o le a mafai ona e aveese ou seevae, solo faʻamalama ma faʻaleleia lou fale, avea ma se tagata poto masani ma atoatoa polokalame.

I lenei tusiga o le a ou taumafai e taʻu atu ia te oe le auala na amata ai ona ou tusia ni taʻaloga laiti i le C / C ++, pe faʻapefea le faʻagasologa o le atinaʻe, ma le mea ou te maua ai se taimi mo se mea fiafia i se siosiomaga pisi. E fa'atatau ma fa'amatala le fa'agasologa o le amataga o le tagata. Mea e uiga i le valea ma le faatuatua, e uiga i laʻu ata patino o le lalolagi i le taimi nei. I se isi faaupuga, "O le pulega e le nafa ma ou lava faiʻai!"

Faataitai

"O le poto e aunoa ma le faʻataʻitaʻiga e leai se aoga, faʻataʻitaʻiga e aunoa ma le poto e matautia" Confucius

O la'u api o lo'u olaga lea!


O lea la, i le faʻatinoga, e mafai ona ou fai atu mo aʻu mea uma e amata i se notepad. E le gata ou te tusia i lalo aʻu galuega i aso taitasi, ou te tusia foi, polokalame, mamanu siata tafe ma foia faafitauli, e aofia ai ma le matematika. Fa'aaoga i taimi uma se api api ma tusi na'o le penitala. E mama, faigofie ma faʻatuatuaina, IMHO.

DevOps C++ ma "taua umukuka", poʻo le faʻafefea ona ou tusia taʻaloga aʻo 'ai
O la'u api (ua uma ona tumu i) api. O lona foliga lea. O lo'o i ai galuega i aso uma, manatu, ata, ata, fofo, tusi tusi uliuli, code ma isi

I lenei laʻasaga, na mafai ona ou faʻamaeʻaina ni poloketi se tolu (o loʻu malamalama lea i le "atoa", aua o soʻo se oloa e mafai ona atiaʻe e le gata).

  • Poloketi 0: Ole ata lea ole 3D Architect Demo na tusia ile C# ile fa'aogaina ole Unity game engine. Mo macOS ma Windows platforms.
  • Taʻaloga 1: taaloga fa'amafanafanaga Simple Snake (e ta'ua e tagata uma o le "Snake") mo Windows. Na tusia i le C.
  • Taʻaloga 2: ta'aloga fa'amafanafanaga Crazy Tanks (e ta'ua e tagata uma o "Tanks"), tusia i le C ++ (fa'aoga vasega) fa'apea fo'i mo Pupuni.

Poloketi 0. Fa'ata'ita'iga Fa'ata'ita'i

  • Tulaga: Pupuni (Windows 7, 10), Mac OS (OS X El Capitan v. 10.11.6)
  • Gagana: C#
  • Ta'aloga afi: lotogatasi
  • musumusuga: Darrin Lile
  • faleteuoloa: GitHub

DevOps C++ ma "taua umukuka", poʻo le faʻafefea ona ou tusia taʻaloga aʻo 'ai
3D Scene Architect Demo

O le poloketi muamua na faʻatinoina e le o le C / C ++, ae i le C # faʻaaogaina le Unity game engine. O lenei afi e leʻi manaʻomia i meafaigaluega e pei o afi lē moni, ma foliga mai e faigofie ona faʻapipiʻi ma faʻaoga. Ou te lei mafaufau i isi afi.

O laʻu sini i le Unity e le o le atinaʻeina o se taʻaloga. Sa ou manao e fatu se vaaiga 3D ma se uiga. O ia, pe o ia (Na ou faʻataʻitaʻiina le teine ​​​​sa ou alofa i ai =) e tatau ona gaoioi ma fegalegaleai ma le lalolagi o siomia ai o ia. Sa na'o le taua o le malamalama po'o le a le Lotogatasi, o le a le fa'agasologa o le atina'e ma le tele o taumafaiga e mana'omia e fatu ai se mea. O le ala lea na fanau mai ai le poloketi o le Architect Demo (o le igoa na toetoe lava a faia e aunoa ma se mea). Polokalama, faʻataʻitaʻiga, faʻafiafiaga, texturing atonu e lua masina o aʻu galuega i aso uma.

Na ou amata i vitio aʻoaʻoga ile YouTube ile fatuina o ata 3D ile Totogi. Blender o se meafaigaluega sili ona lelei mo le faʻataʻitaʻiga 3D (ma sili atu) e le manaʻomia le faʻapipiʻiina. Ma o iinei o loʻo faʻatali mai ai se teʻi ia te aʻu ... E foliga mai o le faʻataʻitaʻiga, animation, texturing o ni autu eseese e mafai ona e tusia ai tusi. E moni lenei mea mo tagata. Ina ia faʻataʻitaʻiina tamatamailima, nifo, mata ma isi vaega o le tino, e te manaʻomia le malamalama i le tino. E fa'afefea ona fa'atulagaina maso o mata? E faapefea ona gaoioi tagata? Sa tatau ona ou "faaofi" ponaivi i lima taitasi, vae, tamatamailima, phalanges o tamatamailima!

Fa'ata'ita'i ivi ponaivi ma ponaivi fa'aopoopo e fa'afoliga fa'anatura le fa'afiafiaga. A maeʻa ia aʻoaʻoga, e te iloa le tele o galuega e faia e tagata na faia ata tifaga na o le fatuina o le 30 sekone o le vitio. Ae o ata 3D e tumau mo itula! Ona matou tuua lea o fale tifaga ma fai atu se tala faapea: “Ose ata tifaga/titifaga leaga! Semanu latou te faia le mea sili atu..." Faavalevalea!

Ma le isi mea e uiga i polokalame i lenei poloketi. O le mea na tupu, o le vaega sili ona manaia mo aʻu o le matematika. Afai e te faʻataʻitaʻiina le vaaiga (fesoʻotaʻiga i le fale teu oloa i le faʻamatalaga o le poloketi), o le ae matauina o le mea pueata o loʻo faʻataʻamilo i le amio a le teine ​​i se lalolagi. Ina ia faʻapipiʻi sea suiga o le mea pueata, e tatau ona ou faʻatulagaina muamua le faʻamaopoopoina o le tulaga i luga o le liʻo (2D), ona sosoo ai lea ma luga o le polo (3D). O le mea malie o lo'u 'ino'ino i le matematika i le a'oga ma ou iloa i le C-minus. O se vaega, masalo, ona i le aʻoga latou te le faʻamatalaina atu ia te oe le faʻaogaina o lenei numera i le olaga. Ae a e fa'amamafa i lau sini, o lau miti, e manino ma matala lou mafaufau! Ma e amata ona e vaʻai i galuega faigata o se faʻafiafiaga fiafia. Ona e mafaufau lea: "Ia, aisea e le mafai ai e lau *matematika sili ona fiafia i ai ona taʻu atu ia te oe masani le mea e mafai ona faʻaoga ai nei fua?"

DevOps C++ ma "taua umukuka", poʻo le faʻafefea ona ou tusia taʻaloga aʻo 'ai
Fuafuaga o fua faʻatatau mo le faʻatulagaina o faʻamaopoopo o se mata i luga o se liʻo ma luga o se polo (mai laʻu api)

Taaloga 1. Gata Faigofie

  • Tulaga: Pupuni (fa'ata'ita'i ile Windows 7, 10)
  • Gagana: Ou te manatu na ou tusia i le C mama
  • Ta'aloga afi: Pupuni fa'amafanafanaga
  • musumusuga: javidx9
  • faleteuoloa: GitHub

DevOps C++ ma "taua umukuka", poʻo le faʻafefea ona ou tusia taʻaloga aʻo 'ai
Ta'aloga gata faigofie

O se vaaiga 3D e le o se taaloga. E le gata i lea, o le faʻataʻitaʻiina ma le faʻaosoina o mea 3D (aemaise lava tagata) e faʻaalu le taimi ma faigata. Ina ua uma ona taaalo ma le Unity, na oo mai ia te au le iloa e tatau ona ou faaauau, pe amata, mai mea autu. O se mea faigofie ma vave, ae i le taimi lava e tasi i le lalolagi, ia malamalama i le fausaga tonu o taaloga.

O le a le faigofie ma vave? E sa'o, fa'amafanafana ma le 2D. E sili atu le saʻo, e oʻo lava i le faʻamafanafanaga ma faʻailoga. Na ou toe alu e suʻe musumusuga i luga o le Initaneti (i se tulaga lautele, ou te manatu o le Initaneti o le mea fou fou ma le matautia o le XNUMXst seneturi). Na ou suʻeina se vitio o se tagata fai polokalame na faia le faʻamafanafanaga Tetris. Ma i foliga o lana taaloga na ou filifili ai e fai se "gata". Mai le vitio na ou aʻoaʻoina ai e uiga i mea taua e lua - o le taʻaloga taʻavale (faʻatasi ai ma galuega autu e tolu / vaega) ma le gaioiga i le paʻu.

O le ta'aloga ta'aloga atonu e foliga fa'apenei:

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

O loʻo faʻaalia e le code le galuega autu () i le taimi e tasi. Ma e amata le taamilosaga o taaloga pe a uma le faʻamatalaga talafeagai. E tolu galuega faavae i totonu o le matasele: Input(), Logic(), Draw(). Muamua, faʻaoga faʻamatalaga Faʻamatalaga (tele pulea o keystrokes), ona faʻagasolo lea o faʻamatalaga faʻamatalaga Logic, ona faʻaalia lea i le lau - Draw. E faapena foi i faavaa taitasi. O le ala lea e fai ai le animation. E pei o ata i ata. E masani lava, o le fa'agaioiina o fa'amaumauga na tu'uina atu e mana'omia ai le tele o le taimi ma, e tusa ai ma lo'u iloa, e fuafua ai le fua fa'avaa o le ta'aloga. Ae o iinei o le Logic () galuega e faʻatino vave. O le mea lea, e tatau ona e pulea le fua faʻavaa e faʻaaoga ai le moe () galuega faʻatasi ma le gameSpeed ​​​​parameter, lea e fuafua ai lenei saoasaoa.

DevOps C++ ma "taua umukuka", poʻo le faʻafefea ona ou tusia taʻaloga aʻo 'ai
Ta'amilosaga ta'aloga. Polokalama se "gata" i totonu o se api tusi

Afai o lo'o e atia'e se ta'aloga fa'amafanafana e fa'atatau i uiga, e le mafai ona e fa'auluina fa'amaumauga i luga ole lau e fa'aaoga ai le 'cout' fa'agasolo masani - e matua tuai lava. O le mea lea, e tatau ona lafo le gaosiga i le pupuni lau. E sili atu le saoasaoa ma o le a tamoʻe le taʻaloga e aunoa ma ni faʻalavelave. E fa'amaoni, ou te le o malamalama lelei po'o le a le fa'apolopolo mata ma pe fa'apefea ona galue. Ae o le a ou tuʻuina atu se faʻataʻitaʻiga code iinei, ma atonu e mafai e se tasi ona faʻamalamalamaina le tulaga i faʻamatalaga.

Mauaina o se pupuni lau (e pei ona ta'ua):

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

Fa'aali sa'o o se laina sikoa fa'ailoga (laina fa'aaliga sikoa):

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

I le talitonuga, e leai se mea faigata i lenei taʻaloga; Ou te manatu o se faʻataʻitaʻiga lelei tulaga ulufale. O le code e tusia i se faila e tasi ma faʻapipiʻiina i ni galuega se tele. Leai ni vasega, leai se tofi. E mafai ona e vaʻavaʻai i mea uma lava oe i le faʻailoga puna a le taʻaloga e ala ile alu ile fale teu oloa ile GitHub.

Ta'aloga 2. Tanks valea

DevOps C++ ma "taua umukuka", poʻo le faʻafefea ona ou tusia taʻaloga aʻo 'ai
Taaloga Tanks Crazy

O le lolomiina o mataitusi i le faʻamafanafanaga atonu o le mea sili lea ona faigofie e mafai ona e liliu i se taʻaloga. Ae o le tasi faafitauli e aliali mai: o faailoga e eseese maualuga ma lautele (o le maualuga e sili atu nai lo le lautele). I lenei auala, o mea uma o le a le fetaui, ma o le alu i lalo poʻo luga o le a sili atu le vave nai lo le alu i le agavale poʻo le taumatau. O lenei aafiaga e matua iloga lava ile Snake (Taaloga 1). "Tanks" (Ta'aloga 2) e leai se toe fa'afouga, talu ai o le gaioiga o lo'o fa'atulagaina e ala i le valiina o pika pika i lanu eseese. E mafai ona e fai mai na ou tusia se tusitala. E moni, e fai si lavelave teisi lenei mea, e ui lava e sili atu le manaia.

Mo lenei taʻaloga, o le a lava le faʻamatalaina o laʻu polokalama mo le faʻaalia o pika i luga o le lau. Ou te manatu o le vaega autu lea o le taaloga. Ma e mafai ona e faia mea uma e oe lava ia.

O lea la, o mea e te va'aia i luga o le lau ua na'o se seti o fe'avea'i fa'ailoga fa'ailoga lanu eseese.

DevOps C++ ma "taua umukuka", poʻo le faʻafefea ona ou tusia taʻaloga aʻo 'ai
Seti faatafafa

O fa'ata'afa'afa ta'itasi o lo'o fa'atusalia e se matrix e tumu i numera. I le auala, e mafai ona ou faʻamaonia se tasi o mea manaia - o matrices uma i le taʻaloga o loʻo faʻapolokalameina o se laina tasi-dimensional. E le lua itu, ae tasi le itu! E sili atu ona faigofie ma vave ona galulue faatasi ai vaega e tasi.

DevOps C++ ma "taua umukuka", poʻo le faʻafefea ona ou tusia taʻaloga aʻo 'ai
Fa'ata'ita'iga o se tane ta'aloga matrix

DevOps C++ ma "taua umukuka", poʻo le faʻafefea ona ou tusia taʻaloga aʻo 'ai
Fa'atusaina o le tane ta'aloga matrix o se fa'asologa e tasi

DevOps C++ ma "taua umukuka", poʻo le faʻafefea ona ou tusia taʻaloga aʻo 'ai
O se fa'ata'ita'iga va'aia o le fa'atusaina o se matrix o se fa'asologa e tasi-dimensional

Ae o le avanoa i elemene o le laina e tupu i se matasele lua, e pei e le o se faʻasologa o le tasi, ae o le lua-dimensional. E faia lenei mea ona o loʻo matou galulue pea ma matrices.

DevOps C++ ma "taua umukuka", poʻo le faʻafefea ona ou tusia taʻaloga aʻo 'ai
Fa'asalaina se laina fa'a-tasi i totonu o le matasele lua. Y - fa'ailoa laina, X - fa'ailoga koluma

Faamolemole ia matau: nai lo le masani matrix identifiers i, j, ou te faʻaaogaina le faʻailoga x ma le y. O lenei auala, e foliga mai ia te aʻu, e sili atu ona manaia i le mata ma sili atu ona malamalama i le faiʻai. E le gata i lea, o sea faʻamatalaga e mafai ai ona faʻaogaina matrices o loʻo faʻaogaina i luga o axes faʻamaopoopo o se ata e lua-dimensional.

I le taimi nei e uiga i pixels, lanu ma lau gaioiga. O le StretchDIBits galuega e faʻaaogaina mo galuega faatino (Header: windows.h; Library: gdi32.lib). O lenei galuega, faatasi ai ma isi mea, e maua ai mea nei: o le masini o loʻo faʻaalia ai le ata (i loʻu tulaga, o le Windows console), o le amataga faʻamaopoopo o le faʻaaliga ata, lona lautele / maualuga, ma le ata lava ia i le foliga o se bitmap, o loʻo faʻatusalia e se faʻasologa o bytes. Bitmap e pei o se byte array!

StretchDIBits() galuega faatino:

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

O le mafaufau e tu'u muamua mo lenei bitmap e fa'aaoga ai le VirtualAlloc() galuega. O lona uiga, o le numera manaʻomia o bytes e faʻaagaga e teu ai faʻamatalaga e uiga i pixels uma, lea o le a faʻaalia i luga o le lau.

Fausia le 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);

I se tala fa'atusa, o le bitmap e aofia ai se aofa'iga o pika. O paita uma e fa i le laina o se RGB pika. E tasi le paita i le lanu mumu, tasi le paita i le lanu meamata (G), ma le tasi paita i le lanu lanumoana (B). E le gata i lea, e tasi le paita o totoe mo le fa'ailoga. O nei lanu e tolu - Red/Green/Blue (RGB) - e fa'afefiloi le tasi i le isi i vaega eseese e fatu ai le lanu pika.

I le taimi nei, toe foʻi, o taʻaloga taʻitasi, poʻo mea taʻaloga, o loʻo faʻatusalia e se numera numera. O nei mea ta'aloga uma o lo'o tu'uina i se fa'aputuga. Ona tu'u ai lea i luga o le malae ta'alo, e fai ai se matrix numera tele. Na ou faʻafesoʻotaʻi numera taʻitasi i le matrix ma se lanu patino. Mo se faʻataʻitaʻiga, o le numera 8 e fetaui ma le lanumoana, o le numera 9 i le samasama, o le numera 10 i le lanu uliuli, ma isi. O le mea lea, e mafai ona tatou fai atu o loʻo i ai se matrix o le malae taʻalo, lea o numera taʻitasi o se lanu.

O lea la, o loʻo i ai le matou numera numera o le taʻaloga taʻaloga atoa i le tasi itu ma se bitmap mo le faʻaalia o le ata i le isi itu. I le taimi nei, o le bitmap e "gaogao" - e leʻi iai faʻamatalaga e uiga i pika o le lanu manaʻomia. O lona uiga o le laasaga mulimuli o le faʻatumuina o le bitmap i faʻamatalaga e uiga i pika taʻitasi e faʻatatau i le numera numera o le malae taʻalo. O se faʻataʻitaʻiga manino o sea suiga o loʻo i le ata o loʻo i lalo.

DevOps C++ ma "taua umukuka", poʻo le faʻafefea ona ou tusia taʻaloga aʻo 'ai
O se faʻataʻitaʻiga o le faʻatumuina o se faʻailoga (Pixel matrix) i faʻamatalaga e faʻavae i luga o le numera numera o le malae taʻalo (o faʻailoga lanu e le fetaui ma faʻailoga i le taʻaloga)

O le a ou tuuina atu foi se fasi code moni mai le taaloga. O le colorIndex fesuia'i i su'esu'ega ta'itasi o le matasele e tu'uina atu i ai se tau (fa'ailoga lanu) mai le numera numera o le malae ta'alo (mainDigitalMatrix). Ona fa'atulaga lea o le lanu lanu i le lanu lava ia e fa'atatau i le fa'asino. Ona vaevaeina lea o le lanu i le fua o le mumu, lanumeamata ma le lanumoana (RGB). Ma faʻatasi ai ma le pixelPadding, o lenei faʻamatalaga o loʻo tusia i le pika i lea taimi ma lea taimi, e fai ai se ata lanu i le bitmap.

O lo'o fa'aogaina e le fa'ailoga fa'ailoga ma fa'agaioiga bitwise, lea e faigata ona malamalama i ai. O lea ou te fautuaina oe e faitau i se mea eseese pe faʻafefea ona faʻaogaina ia fausaga.

Faatumu le bitmap i faʻamatalaga e faʻatatau i le numera numera o le malae taʻalo:

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

E tusa ai ma le metotia o loʻo faʻamatalaina i luga, i le taʻaloga Crazy Tanks e tasi le ata (faʻavaa) e fausia ma faʻaalia i luga o le lau i le Draw() galuega. A mae'a ona fa'amauina fa'amau i le galuega Input() ma a latou gaioiga mulimuli ane i le Logic() galuega, e fa'atūina se ata fou (fa'ava). E moni, o mea ta'aloga atonu ua i ai se tulaga ese i luga o le malae ta'aloga ma, e tusa ai, ua tosoina i se isi nofoaga. O le ala lea e tupu ai le animation (gaioiga).

I le teori (pe afai ou te leʻi galo se mea), o le malamalama i le taʻaloga taʻavale mai le taaloga muamua ("Snake") ma le faiga mo le faʻaalia o pika i luga o le lau mai le taʻaloga lona lua ("Tanks") o mea uma e te manaʻomia e tusi ai soʻo se o au taaloga 2D i lalo ole Windows. Le leo! 😉 O isi vaega o lo'o na'o se va'aiga fa'alelei.

Ioe, o le taaloga "Tanks" e sili atu ona faigata nai lo le "Snake". Ua uma ona ou faʻaaogaina le gagana C ++, o lona uiga, na ou faʻamatalaina mea taʻaloga eseese ma vasega. Na ou fatuina laʻu lava aoina - o le code e mafai ona vaʻaia i ulutala / Box.h. I le auala, o le aoina e foliga mai o loʻo i ai se galo manatua. Fa'aoga fa'asino. Sa galue ma le manatua. E tatau ona ou fai atu na fesoasoani tele le tusi ia te au Amata C++ E ala i Polokalama Taaloga. Ole amataga lelei lea mo tagata amata ile C++. E laʻititi, manaia ma lelei le faʻatulagaina.

E tusa ma le ono masina na fausia ai lenei taaloga. Sa masani ona ou tusitusi i le taimi o le aoauli ma meaai mama i le galuega. Sa nofo o ia i le umukuka o le ofisa, soli meaʻai ma tusi le code. Po'o le 'aiga o le afiafi i le fale. O lea na ou iʻu ai i nei "taua umukuka." E pei lava o taimi uma, sa ou faʻaaogaina se api, ma o mea faʻapitoa uma na fananau mai i totonu.

Ina ia faʻamaeʻaina le vaega faʻatino, o le a ou faia ni nai suʻega o laʻu api. Ina ia faʻaalia le mea tonu na ou tusia i lalo, tusi, faitau, mamanuina...

DevOps C++ ma "taua umukuka", poʻo le faʻafefea ona ou tusia taʻaloga aʻo 'ai
Fausia ata o tane. Ma fuafua pe fia pixels e tatau ona i ai i tane taʻitasi i luga o le lau

DevOps C++ ma "taua umukuka", poʻo le faʻafefea ona ou tusia taʻaloga aʻo 'ai
Fuafuaga o le algorithm ma fua faatatau mo le taamilosaga o le tane vai faataamilo i lona axis

DevOps C++ ma "taua umukuka", poʻo le faʻafefea ona ou tusia taʻaloga aʻo 'ai
Fuafuaga o laʻu aoina (le mea o loʻo i ai se manatuaga, e foliga mai). O le aoina e faia e tusa ai ma le ituaiga Linked List

DevOps C++ ma "taua umukuka", poʻo le faʻafefea ona ou tusia taʻaloga aʻo 'ai
Ma o taumafaiga le aoga ia e faʻapipiʻi ai le atamai faʻapitoa i le taʻaloga

Leory

“E oo lava i se malaga e afe maila e amata i le laasaga muamua” (Amai Saina Anamua)

Sei o tatou see mai le faatinoga i le talitonuga! E fa'afefea ona su'e se taimi mo lau fiafiaga?

  1. Fuafua le mea e te manaʻo ai (aue, o le vaega sili lea ona faigata).
  2. Seti mea e faamuamua.
  3. Faataulaga mea uma "faaopoopo" mo le lelei o mea e sili atu ona faamuamua.
  4. Alu agai i sini i aso uma.
  5. Aua le faʻamoemoe e lua pe tolu itula o taimi avanoa e faʻaalu i se mea e fiafia i ai.

I le tasi itu, e tatau ona e fuafuaina mea e te manaʻo ai ma faʻamuamua. I le isi itu, e mafai ona lafoaʻia nisi o gaioiga / poloketi e faʻatatau i nei faʻamuamua. I se isi faaupuga, e tatau ona e ositaulagaina mea uma "faaopoopo". Na ou faalogo i se mea e tatau ona i ai le maualuga o gaoioiga autu e tolu i le olaga. Ona mafai lea ona e faia i latou i le tulaga sili ona maualuga. Ma o galuega fa'aopoopo/fa'atonuga o le a na'o le fa'atosina tele. Ae o nei mea uma atonu e faʻapitoa ma taʻitoʻatasi.

O loʻo i ai se tulafono faʻapitoa: aua neʻi i ai se 0% aso! Na ou aʻoaʻoina e uiga i ai i se tusiga a se tagata atinaʻe indie. Afai o loʻo e galue i se poloketi, fai se mea e uiga i ai i aso uma. Ma e le afaina po o le a le tele o mea e te faia. Tusi se upu se tasi po'o se laina se tasi o tulafono, matamata i se vitio a'oa'oga se tasi pe samala se fao se tasi i totonu o se laupapa - na'o le faia o se mea. O le mea sili ona faigata o le amata. O le taimi lava e te amata ai, atonu o le a iu lava ina e faia sina mea e sili atu nai lo le mea e te manaʻo ai. O le auala lea e te agai ai pea i lau sini ma, talitonu mai ia te aʻu, vave. A uma, o le fa'alavelave tele i mea uma o le fa'atuai.

Ma e taua le manatua e le tatau ona e manatu faatauvaa ma le amanaʻiaina le free "sawdust" o le taimi o le 5, 10, 15 minute, faʻatali mo ni "ogalaau" tetele e umi se itula pe lua. O e tu i le laina? Mafaufau i se mea mo lau galuega faatino. Alu ile escalator? Tusi i lalo se mea i totonu o se api api. O e malaga i luga o le pasi? Lelei, faitau se tala. Faʻaaoga avanoa uma. Taofi le matamata i pusi ma maile ile YouTube! Aua le faaleagaina lou fai'ai!

Ma le mea mulimuli. Afai, pe a uma ona faitau lenei tusiga, na e fiafia i le manatu o le fatuina o taaloga e aunoa ma le faʻaaogaina o masini taʻaloga, ona manatua lea o le igoa Casey Muratori. O lea alii e iai uepisaite. I le vaega "matamata -> PREVIOUS EPISODES" o le ae maua ai ni aʻoaʻoga vitio saoloto matagofie i le fatuina o se taʻaloga faʻapolofesa mai le sasa. I le lima Intro to C mo Windows lesona atonu o le a sili atu nai lo le lima tausaga o suʻesuʻega i le iunivesite (na tusia e se tasi e uiga i lenei mea i faʻamatalaga i lalo o le vitio).

O lo'o fa'amatala mai fo'i e Casey e fa'apea, o le fa'atupuina o lau lava masini ta'aloga, o le a sili atu lou malamalama i so'o se afi o lo'o iai. I se lalolagi o faʻavaʻa o loʻo taumafai tagata uma e faʻaautomatika, e te aʻoaʻo e fai nai lo le faʻaaogaina. E te malamalama i le natura tonu o komepiuta. Ma o le a avea foi oe ma se polokalama sili atu ona atamai ma matua - o se pro.

Manuia lau ala filifilia! Ma ia tatou fa'apolofesa atili le lalolagi.

tusitala: Matua Andrey, DevOps



puna: www.habr.com