DevOps C ++ le "kitchen war", kapa Kamoo ke qalileng ho ngola lipapali ha ke ntse ke ja

"Kea tseba hore ha ke tsebe letho" Socrates

Bakeng sa mang: bakeng sa batho ba IT ba tšoelang mathe ho baetsi bohle mme ba batla ho bapala lipapali tsa bona!

Ka eng: mokhoa oa ho qala ho ngola lipapali ka C/C++ haeba u e hloka!

Ke hobane'ng ha u lokela ho bala sena: Nts'etsopele ea app ha se mosebetsi oa ka o ikhethang, empa ke leka ho ngola beke le beke. Hobane ke rata lipapali!

Hello My Name Is Andrey Grankin, Ke DevOps ea Luxoft. Nts'etsopele ea kopo ha se mosebetsi oa ka o ikhethang, empa ke leka ho ngola beke le beke. Hobane ke rata lipapali!

Indasteri ea lipapali tsa k'homphieutha e khōlō, 'me kajeno ho buuoa ka menyenyetsi ho feta indasteri ea lifilimi. Lipapali li ngotsoe ho tloha qalong ea tsoelo-pele ea lik'homphieutha, ho sebelisoa, ka litekanyetso tsa morao-rao, mekhoa e rarahaneng le ea motheo ea tsoelo-pele. Ha nako e ntse e ea, lienjineri tsa papali li ile tsa qala ho hlaha li e-na le litšoantšo tse seng li hlophisitsoe, fisiks le molumo. Li u lumella ho tsepamisa maikutlo ho nts'etsopele ea papali ka boeona 'me u se ke ua khathatseha ka motheo oa eona. Empa hammoho le lienjineri, bahlahisi ba "foufala" 'me ba nyenyefatsa. Tlhahiso ea lipapali e behoa holim'a conveyor. 'Me bongata ba tlhahiso bo qala ho laola boleng ba eona.

Ka nako e ts'oanang, ha re bapala lipapali tsa batho ba bang, re lula re lekanyelitsoe ke libaka, morero, litlhaku, mechine ea papali eo batho ba bang ba tlileng le eona. Kahoo ke ile ka hlokomela hore ...

… ke nako ea ho iketsetsa mafats'e a hau, a ipapisitse le 'na feela. Mafatše moo ke leng Ntate, le Mora, le Moea o Halalelang!

'Me ke lumela ka tieo hore ka ho ngola enjene ea hau ea papali le papali ho eona, u tla khona ho bula mahlo, ho hlakola lifensetere le ho pompa ntlo ea hau, ho ba moqapi oa lenaneo le nang le phihlelo le ea bohlokoa.

Sehloohong sena ke tla leka ho u bolella kamoo ke qalileng ho ngola lipapali tse nyenyane ho C / C ++, mokhoa oa tsoelo-pele ke ofe le moo ke fumanang nako ea ho itlosa bolutu sebakeng se phathahaneng. E na le moelelo 'me e hlalosa mokhoa oa ho qala ha motho ka mong. Litaba tse mabapi le ho hloka tsebo le tumelo, mabapi le setšoantšo sa ka sa lefats'e hajoale. Ka mantsoe a mang, "tsamaiso ha e ikarabelle bakeng sa boko ba hau!".

Itloaetse

"Tsebo ntle le ts'ebetso ha e na thuso, ho itloaetsa ntle le tsebo ho kotsi." Confucius

Bukana ea ka ke bophelo ba ka!


Kahoo, ka ts'ebetso, nka re ntho e 'ngoe le e' ngoe bakeng sa ka e qala ka bukana. Ha ke ngole feela mesebetsi ea ka ea letsatsi le letsatsi moo, empa hape ke hula, lenaneo, li-flowcharts tsa moralo le ho rarolla mathata, ho kenyelletsa le tsa lipalo. Kamehla sebelisa bukana 'me u ngole ka pentšele feela. E hloekile, e phutholohile ebile e ka tšeptjoa, IMHO.

DevOps C ++ le "kitchen war", kapa Kamoo ke qalileng ho ngola lipapali ha ke ntse ke ja
Bukana ea ka (e seng e tlatsitsoe). Ena ke tsela eo e shebahalang ka eona. E na le mesebetsi ea letsatsi le letsatsi, mehopolo, litšoantšo, litšoantšo, tharollo, ho boloka libuka tsa batho ba batšo, khoutu, joalo-joalo.

Nakong ena, ke khonne ho phetha merero e meraro (sena ke kutloisisong ea ka ea "final", hobane sehlahisoa leha e le sefe se ka ntlafatsoa ka ho sa feleng).

  • Morero oa 0: sena ke setšoantšo sa Architect Demo 3D se ngotsoeng ho C # se sebelisa enjene ea papali ea Unity. Bakeng sa li-platform tsa macOS le Windows.
  • Papali ea 1: papali ea console Snake e bonolo (e tsejoang ke bohle e le "Snake") bakeng sa Windows. e ngotsoe ka C.
  • Papali ea 2: papali ea console ea Crazy Tanks (e tsejoang ke motho e mong le e mong e le "Tanka"), e seng e ngotsoe ka C ++ (ho sebelisa lihlopha) le tlas'a Windows.

Morero oa 0 oa Moqapi oa Meaho

  • Sethaleng: Windows (Windows 7, 10), Mac OS (OS X El Capitan v. 10.11.6)
  • Язык: C#
  • Enjine ea papali: senya bonngoe
  • Tšusumetso: Darrin Lile
  • Sebaka sa polokelo: GitHub

DevOps C ++ le "kitchen war", kapa Kamoo ke qalileng ho ngola lipapali ha ke ntse ke ja
Demo ea 3D Scene Architect

Morero oa pele ha oa kengoa tšebetsong ka C/C ++, empa ho C# ho sebelisa enjene ea papali ea Unity. Enjene ena e ne e sa hloke lintho tse ngata ho Hardware joalo ka Unreal Engine, hape ho ne ho bonahala ho le bonolo ho 'na ho kenya le ho sebelisa. Ke ne ke sa nahane ka lienjineri tse ling.

Sepheo sa Unity ho 'na e ne e se ho hlahisa mofuta o itseng oa papali. Ke ne ke batla ho theha setšoantšo sa 3D se nang le mofuta o itseng. Eena, kapa ho fapana le eena (ke ile ka etsisa ngoanana eo ke neng ke mo rata =) o ile a tlameha ho falla le ho sebelisana le lefatše le ka ntle. Ho ne ho le bohlokoa feela ho utloisisa hore na Bonngoe ke eng, hore na ts'ebetso ea nts'etsopele ke efe, le hore na ho hlokahala boiteko bo bokae ho theha ntho e itseng. Ena ke tsela eo morero oa Architect Demo o hlahileng ka eona (lebitso le qapiloe hoo e ka bang ho tsoa ho bullshit). Lenaneo, ho etsa mohlala, animation, ho romellana melaetsa ho nkukile mohlomong likhoeli tse peli tsa mosebetsi oa letsatsi le letsatsi.

Ke qalile ka livideo tsa thupelo ho YouTube mabapi le mokhoa oa ho theha mefuta ea 3D ho Blender. Blender ke sesebelisoa se setle sa mahala sa mohlala oa 3D (le tse ling) se sa hlokeng ho kenya. 'Me ke ne ke emetsoe ke ts'oenyeho ... Ho ile ha fumaneha hore ho etsa mohlala, lipopae, ho ngola mongolo ke lihlooho tse fapaneng tseo u ka ngolang libuka ho tsona. Sena ke 'nete haholo-holo ho baphetwa. Ho etsa mohlala oa menoana, meno, mahlo le likarolo tse ling tsa 'mele, u tla hloka tsebo ea anatomy. Mesifa ea sefahleho e hlophisitsoe joang? Batho ba falla joang? Ke ile ka tlameha ho “kenya” masapo letsohong le leng le le leng, leotong, monoaneng, maqaqailaneng!

Etsa mohlala oa clavicle, lisebelisoa tse eketsehileng tsa masapo, e le hore animation e shebahale e le ea tlhaho. Kamora lithuto tse joalo, u hlokomela mosebetsi o moholo oo baetsi ba lifilimi ba o etsang, ho etsa metsotsoana e 30 ea video. Empa lifilimi tsa 3D li nka lihora tse ngata! Ebe re tsoa ka libaesekopong ebe re bua ntho e kang: "Ta, filimi / filimi e litšila! Ba ka be ba entse betere…” Maoatla!

Le ntho e 'ngoe hape ka mananeo a projeke ena. Ha e le hantle, karolo e nthabisang haholo ke ea lipalo. Haeba u tsamaisa ketsahalo (hokela sebakeng sa polokelo tlhalosong ea morero), u tla hlokomela hore khamera e potoloha sebapali sa ngoanana sebakeng. Ho hlophisa potoloho e joalo ea k'hamera, ke ne ke tlameha ho qala ka ho bala lihokahanyo tsa sebaka sa sebaka se selikalikoe (2D), ebe se potoloha (3D). Ntho e qabolang ke hore ke ne ke hloile lipalo sekolong 'me ke ne ke li tseba ka ho fokotsa. Mohlomong, mohlomong, hobane sekolong ha ba u hlalosetse hore na lipalo tsena li sebelisoa joang bophelong. Empa ha u amehile ka sepheo sa hau, lora, joale kelello e hlakoloa, e senotsoe! 'Me u qala ho bona mesebetsi e rarahaneng e le papali e monate. Ebe u nahana: "Joale, ke hobane'ng ha setsebi sa lipalo se ratoang * se ne se sa tsebe hore na mekhoa ee e ka tšeptjoa hokae?".

DevOps C ++ le "kitchen war", kapa Kamoo ke qalileng ho ngola lipapali ha ke ntse ke ja
Palo ea liforomo tsa ho bala likhokahano tsa ntlha ho selikalikoe le selika-likoe (ho tloha bukeng ea ka ea lintlha)

Papali ea 1

  • Sethaleng: Windows (e lekoa ho Windows 7, 10)
  • Язык: Ke nahana hore e ngotsoe ka C e hloekileng
  • Enjine ea papali: Windows console
  • Tšusumetso: javidx9
  • Sebaka sa polokelo: GitHub

DevOps C ++ le "kitchen war", kapa Kamoo ke qalileng ho ngola lipapali ha ke ntse ke ja
Papali e bonolo ea Noha

Sebaka sa 3D ha se papali. Ho feta moo, ho etsa mohlala le ho phelisa lintho tsa 3D (haholo-holo litlhaku) ho telele ebile ho thata. Ka mor'a ho bapala le Unity, ke ile ka hlokomela hore ke tlameha ho tsoela pele, kapa ho e-na le hoo ke qala, ho tloha metheong. Ntho e bonolo le e potlakileng, empa ka nako e ts'oanang ea lefats'e, ho utloisisa sebopeho sa lipapali.

Hona re na le eng e bonolo le e potlakileng? Ho joalo, console le 2D. Hantle haholo, esita le console le matšoao. Hape, ke ile ka qala ho batla ts'usumetso ho Marang-rang (ka kakaretso, ke nka Marang-rang e le tšibollo e matla le e kotsi ea lekholong la boXNUMX la lilemo). Ke ile ka cheka video ea moqapi e mong ea entseng console Tetris. 'Me ka setšoantšo sa papali ea hae, o ile a etsa qeto ea ho khaola "noha". Ho tsoa videong, ke ithutile ka lintho tse peli tsa mantlha - loop ea papali (e nang le mesebetsi / likarolo tse tharo) le tlhahiso ho buffer.

The game loop e ka shebahala tjena:

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

Khoutu e hlahisa mosebetsi oohle oa mantlha () hang. 'Me potoloho ea papali e qala ka mor'a maikutlo a tšoanang. Ho na le mesebetsi e meraro ea mantlha ho lupu: Input(), Logic(), Draw(). Taba ea pele, Input ya data (haholo-holo taolo ea li-keystrokes), ebe o sebetsana le data e kentsoeng Logic, ebe e bonts'a skrineng - Draw. 'Me ho joalo le foreime e' ngoe le e 'ngoe. Animation e entsoe ka tsela ena. E tšoana le lipopae. Hangata ho sebetsana le lintlha tsa ho kenya ho nka nako e ngata, 'me ho ea kamoo ke tsebang, ho lekanyetsa sekhahla sa foreimi ea papali. Empa mona mosebetsi oa Logic () o potlakile haholo. Ka hona, sekhahla sa foreimi se tlameha ho laoloa ke ts'ebetso ea Boroko () ka parameter ea gameSpeed, e khethollang sekhahla sena.

DevOps C ++ le "kitchen war", kapa Kamoo ke qalileng ho ngola lipapali ha ke ntse ke ja
potoloho ea papali. Lenaneo la noha ka har'a notepad

Haeba u ntse u nts'etsapele papali ea tšoantšetso ea li-console, joale ho bonts'a data skrineng u sebelisa "cout" e tloaelehileng ea ho phalla e ke ke ea sebetsa - e lieha haholo. Ka hona, tlhahiso e tlameha ho etsoa ka har'a buffer ea skrine. Ka potlako haholo 'me papali e tla sebetsa ntle le glitches. Ho bua 'nete, ha ke utloisise hantle hore na buffer ea skrine ke eng le hore na e sebetsa joang. Empa ke tla fana ka mohlala oa khoutu mona, mme mohlomong motho ea hlahang litlhalosong o tla khona ho hlakisa boemo.

Ho fumana buffer skrineng (haeba nka bua joalo):

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

Tlhahiso e tobileng skrineng sa mola o itseng oa lintlha (mohala oa ho bonts'a lintlha):

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

Ka khopolo, ha ho letho le rarahaneng papaling ena, ho bonahala ho 'na mohlala o motle oa papali ea ho kena. Khoutu e ngotsoe ka faele e le 'ngoe' me e hlophisitsoe ka mesebetsi e mengata. Ha ho lihlopha, ha ho lefa. U ka bona ntho e 'ngoe le e' ngoe mohloling oa mohloli oa papali ka ho ea sebakeng sa polokelo ho GitHub.

Papali ea 2 Crazy Tanks

DevOps C ++ le "kitchen war", kapa Kamoo ke qalileng ho ngola lipapali ha ke ntse ke ja
Papali ea Crazy Tanks

Ho hatisa litlhaku ho console mohlomong ke ntho e bonolo ka ho fetisisa eo u ka e fetolang papali. Empa joale bothata bo le bong bo hlaha: litlhaku li na le bophahamo le bophara bo fapaneng (bophahamo bo boholo ho feta bophara). Ka hona, ntho e 'ngoe le e' ngoe e tla shebahala e sa lekana, 'me ho ea fatše kapa holimo ho tla bonahala ho potlakile ho feta ho tsamaea ka ho le letšehali kapa ka ho le letona. Phello ena e bonahala haholo ho "Snake" (Papali ea 1). "Litanka" (Papali ea 2) ha li na tšitiso e joalo, kaha sehlahisoa se hlophisitsoe ka ho penta lipikselse tsa skrine ka mebala e fapaneng. U ka re ke ngotse renderer. Ke 'nete, sena se se se ntse se le thata haholoanyane, le hoja se thahasellisa haholo.

Bakeng sa papali ena, ho tla lekana ho hlalosa sistimi ea ka ea ho bonts'a lipikselse skrineng. Ke nahana hore ena ke karolo e ka sehloohong ea papali. Le tse ling tsohle u ka iphumanela tsona.

Kahoo, seo u se bonang skrineng ke sete feela sa likhutlo tse mebala tse tsamaeang.

DevOps C ++ le "kitchen war", kapa Kamoo ke qalileng ho ngola lipapali ha ke ntse ke ja
Rectangle set

Rectangle ka 'ngoe e emeloa ke matrix e nang le linomoro. Ka tsela, nka totobatsa nuance e le 'ngoe e khahlisang - li-matrices tsohle tsa papali li hlophisitsoe e le sehlopha se nang le lehlakore le le leng. E seng ka mahlakore a mabeli, empa e le 'ngoe! Li-array tsa mahlakore a le mong li bonolo haholo ebile li potlakile ho sebetsa ka tsona.

DevOps C ++ le "kitchen war", kapa Kamoo ke qalileng ho ngola lipapali ha ke ntse ke ja
Mohlala oa tanka ea papali ea matrix

DevOps C ++ le "kitchen war", kapa Kamoo ke qalileng ho ngola lipapali ha ke ntse ke ja
E Emelang Matrix ea Tanka ea Papali e nang le Sehlopha se le seng sa Dimensional Array

DevOps C ++ le "kitchen war", kapa Kamoo ke qalileng ho ngola lipapali ha ke ntse ke ja
Mohlala o hlakileng haholoanyane oa setšoantšo sa matrix ka sehlopha se le seng

Empa ho fihlella ho likarolo tsa sehlopha ho etsahala ka sekoahelo se habeli, joalokaha eka ha se karolo e le 'ngoe, empa e na le likarolo tse peli. Sena se etsoa hobane re ntse re sebetsa le matrices.

DevOps C ++ le "kitchen war", kapa Kamoo ke qalileng ho ngola lipapali ha ke ntse ke ja
Ho haola le sehlopha sa lehlakore le le leng ka loop e habeli. Y ke ID ea mola, X ke ID ea kholomo

Ka kopo hlokomela hore sebakeng sa li-identifiers tse tloaelehileng tsa matrix i, j, ke sebelisa li-identifiers x le y. Kahoo, ho 'na ho bonahala eka ke ntho e khahlisang mahlo le ho feta bokong. Ntle le moo, notation e joalo e etsa hore ho khonehe ho hlahisa matrices a sebelisitsoeng holim'a lilepe tse hokahanyang tsa setšoantšo sa mahlakore a mabeli.

Hona joale ka lipikselse, mebala le pontšo. Mosebetsi oa StretchDIBits (Header: windows.h; Library: gdi32.lib) o sebelisetsoa tlhahiso. Har'a lintho tse ling, tse latelang li fetisetsoa ts'ebetsong ena: sesebelisoa seo setšoantšo se bontšitsoeng ho sona (tabeng ea ka, ena ke Windows console), lihokahanyo tsa ho qala ha setšoantšo, bophara / bophahamo le setšoantšo. ka boeona ka sebopeho sa bitmap (bitmap), e emeloang ke letoto la li-byte. Bitmap joalo ka letoto la li-byte!

Ts'ebetso ea StretchDIBits() mosebetsing:

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

Memori e abetsoe esale pele bakeng sa bitmap ena ho sebelisa VirtualAlloc () ts'ebetso. Ke hore, palo e hlokahalang ea li-byte e boloketsoe ho boloka tlhahisoleseding e mabapi le lipikselse tsohle, tse tla bontšoa skrineng.

Ho theha bitmap ea m_p_bitmapMemory:

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

Ka mantsoe a mang, bitmap e na le sehlopha sa lipikselse. Li-byte tse 'nè ka har'a sehlopha ke pixel ea RGB. Bite e le 'ngoe ka boleng bo bofubelu, baiti e le 'ngoe ka boleng bo botala (G), le baiti e le 'ngoe ka 'mala o moputsoa (B). Ho feta moo, ho na le baiti e le 'ngoe ka indent. Mebala ena e meraro - Bofubelu / Botala / Boputsoa (RGB) - e kopantsoe ka likarolo tse fapaneng - 'me 'mala oa pixel o hlahisoang oa fumanoa.

Hona joale, hape, khutlonnetsepa ka 'ngoe, kapa ntho ea papali, e emeloa ke matrix ea linomoro. Lintho tsena tsohle tsa papali li behiloe pokellong. 'Me joale li behoa lebaleng la lipapali, li etsa matrix e le' ngoe e kholo ea linomoro. Ke ile ka etsa 'mapa oa nomoro e' ngoe le e 'ngoe ka har'a matrix ho 'mala o itseng. Ka mohlala, palo ea 8 e putsoa, ​​​​palo ea 9 e mosehla, nomoro ea 10 ke ea bohlooho bo lefifi, joalo-joalo. Kahoo, re ka re re na le matrix a lebala la lipapali, moo palo e 'ngoe le e' ngoe e leng mofuta oa 'mala.

Kahoo, re na le palo ea lipalo tsa lebala lohle la lipapali ka lehlakoreng le leng le bitmap bakeng sa ho bontša setšoantšo ka lehlakoreng le leng. Ho fihlela joale, bitmap "ha e na letho" - ha e e-s'o be le tlhahisoleseding mabapi le lipikselse tsa 'mala o lakatsehang. Sena se bolela hore mohato oa ho qetela o tla be o tlatsa bitmap ka tlhahisoleseding e mabapi le pixel e 'ngoe le e' ngoe e thehiloeng ho palo ea lipalo tsa lebala la lipapali. Mohlala oa setšoantšo sa phetoho e joalo o setšoantšong se ka tlase.

DevOps C ++ le "kitchen war", kapa Kamoo ke qalileng ho ngola lipapali ha ke ntse ke ja
Mohlala oa ho tlatsa bitmap (Pixel matrix) ka lintlha tse thehiloeng ho palo ea lipalo (Digital matrix) ea lebala la ho bapala (li-indices tsa mebala ha li tsamaisane le li-indices papaling)

Ke tla boela ke hlahise sengoathoana sa khoutu ea 'nete ho tsoa papaling. ColourIndex e feto-fetohang ha ho phetoa ka nako e 'ngoe le e 'ngoe ea lupu e fuoa boleng (index ea mebala) ho tsoa ho palo ea lipalo tsa lebala la lipapali (mainDigitalMatrix). Ebe 'mala ka boeona o ngolloa ho feto-fetoha ha mebala ho latela index. Ho feta moo, 'mala o hlahisoang o arotsoe ka karolelano ea khubelu, e tala le e putsoa (RGB). 'Me hammoho le indent (pixelPadding), tlhahisoleseding ena e ngolloa pixel khafetsa, ho etsa setšoantšo sa mebala ho bitmap.

Khoutu e sebelisa litsupa le ts'ebetso e bohlale, e ka bang thata ho e utloisisa. Kahoo ke u eletsa hore u bale ka thoko kae-kae hore na mehaho e joalo e sebetsa joang.

Ho tlatsa bitmap ka tlhaiso-leseling e thehiloeng ho palo ea lipalo tsa lebala la lipapali:

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

Ho ea ka mokhoa o hlalositsoeng ka holimo, setšoantšo se le seng (foreimi) se thehoa papaling ea Crazy Tanks 'me se bontšoa skrineng mosebetsing oa Draw (). Ka mor'a ho ngolisa likonopo ho Input() ts'ebetsong le ts'ebetsong ea bona e latelang ho Logic(), setšoantšo se secha (frame) sea thehoa. Ke 'nete, lintho tsa papali li ka 'na tsa se li e-na le boemo bo fapaneng lebaleng la lipapali' me, ka hona, li huloa sebakeng se fapaneng. Ena ke tsela eo animation (motsamao) e etsahalang ka eona.

Ka khopolo (haeba ha u e-s'o lebale letho), ho utloisisa loop ea papali ho tloha papaling ea pele ("Snake") le tsamaiso ea ho hlahisa lipikselse skrineng ho tloha papaling ea bobeli ("Tanka") ke sohle seo u se hlokang ho ngola leha e le efe. ea lipapali tsa hau tsa 2D tsa Windows. Ha e na molumo! 😉 Likarolo tse ling kaofela ke papali ea majabajaba feela.

Ha e le hantle, papali ea "Tanks" e entsoe ka mokhoa o rarahaneng ho feta "Snake". Ke se ke sebelisitse puo ea C ++, ke hore, ke hlalositse lintho tse fapaneng tsa papali ka lihlopha. Ke iketselitse pokello ea ka - u ka bona khoutu ho lihlooho/Box.h. Ka tsela, pokello e kanna ea ba le leak ea memori. Lisupa tse sebelisitsoeng. E sebelitse ka mohopolo. Ke tlameha ho bolela hore buka eo e nthusitse haholo. Ho qala C++ Ka Lenaneo la Lipapali. Ena ke qalo e ntle bakeng sa ba qalang ho C++. E nyane, e thahasellisa ebile e hlophisitsoe hantle.

Ho nkile likhoeli tse ka bang tse tšeletseng ho ntšetsa pele papali ena. Ke ile ka ngola haholo-holo nakong ea lijo tsa motšehare le lijo tse bobebe mosebetsing. O ile a lula ka kichineng ea ofisi, a hatakela lijo mme a ngola khoutu. Kapa lapeng bakeng sa lijo tsa mantsiboea. Kahoo ke ile ka fumana "lintoa tsa kichineng" tse joalo. Joalo ka mehla, ke ne ke sebelisa bukana ka mafolofolo, 'me lintho tsohle tsa mohopolo li tsoaletsoe ho eona.

Qetellong ea karolo e sebetsang, ke tla ntša likhakanyo tse 'maloa tsa bukana ea ka. Ho bontša hore na hantle-ntle ke ne ke ngola eng, ho taka, ho bala, ho rala…

DevOps C ++ le "kitchen war", kapa Kamoo ke qalileng ho ngola lipapali ha ke ntse ke ja
Moralo oa setšoantšo sa tanka. Le tlhaloso ea hore na tanka ka 'ngoe e lokela ho nka lipikselse tse kae skrineng

DevOps C ++ le "kitchen war", kapa Kamoo ke qalileng ho ngola lipapali ha ke ntse ke ja
Palo ea algorithm le liforomo tsa ho potoloha ha tanka ho potoloha axis ea eona

DevOps C ++ le "kitchen war", kapa Kamoo ke qalileng ho ngola lipapali ha ke ntse ke ja
Setšoantšo sa pokello ea ka (se nang le mohopolo o lutlang, mohlomong). Pokello e entsoe e le Lethathamo le Hokahantsoeng

DevOps C ++ le "kitchen war", kapa Kamoo ke qalileng ho ngola lipapali ha ke ntse ke ja
'Me ana ke liteko tsa lefeela tsa ho kenya bohlale ba maiketsetso papaling

Khopolo

"Esita le leeto la lik'hilomithara tse sekete le qala ka mohato oa pele" (Bohlale ba Sechaena sa Boholo-holo)

Ha re tloheng ho itloaetsa ho ea ho khopolo-taba! U fumana nako ea ho itlosa bolutu joang?

  1. Etsa qeto ea hore na u batla eng (oho, sena ke sona se thata ka ho fetisisa).
  2. Beha lintho tsa bohlokoa pele.
  3. Itela lintho tsohle tse "feelang holimo" molemong oa lintho tse tlang pele.
  4. Tsamaea ka sepheo sa hau letsatsi le letsatsi.
  5. U se ke ua lebella hore ho tla ba le lihora tse peli kapa tse tharo tsa nako ea mahala bakeng sa ho itlosa bolutu.

Ka lehlakoreng le leng, u hloka ho tseba hore na u batla eng le ho e beha pele. Ka lehlakoreng le leng, hoa khoneha ho lahla linyeoe / merero e meng molemong oa lintho tsena tse tlang pele. Ka mantsoe a mang, u tla tlameha ho tela ntho e 'ngoe le e' ngoe e "superfluous". Ke utloile kae-kae hore bophelong ho lokela ho ba le boholo ba mesebetsi e meraro ea mantlha. Joale u tla khona ho sebetsana le bona ka tsela e molemo ka ho fetisisa. 'Me merero / litaelo tse ling li tla qala ho jara corny. Empa sena ke sohle, mohlomong, se ikemetseng le ka bomong.

Ho na le molao o itseng oa khauta: le ka mohla u se ke ua ba le letsatsi la 0%! Ke ithutile ka eona sehloohong se seng sa moqapi oa indie. Haeba u sebetsa morerong, joale etsa ho hong ka oona letsatsi le leng le le leng. Mme ha ho na taba hore na o etsa bokae. Ngola lentsoe le le leng kapa mola o le mong oa khoutu, shebella video e le 'ngoe ea lithupelo, kapa otla sepekere se le seng botong—etsa ho hong feela. Karolo e thata ka ho fetisisa ke ho qala. Hang ha u qala, mohlomong u tla etsa ho feta kamoo u neng u batla kateng. Kahoo u tla lula u habile sepheo sa hau mme, nkholoe, kapele haholo. Etsoe, ntho e ka sehloohong e thibelang lintho tsohle ke ho lieha.

Hape ke habohlokoa ho hopola hore ha ua lokela ho nyenyefatsa le ho hlokomoloha "sawdust" ea mahala ea nako ka metsotso e 5, 10, 15, emela "li-log" tse kholo tse nkang hora kapa tse peli. A na u eme moleng? Nahana ka ho hong bakeng sa projeke ea hau. A na u hloa litepisi? Ngola ntho e itseng bukeng ea ho ngolla lintlha. O ja ka beseng? Ho lokile, bala sengoloa se seng. Sebelisa monyetla o mong le o mong. Khaotsa ho shebella likatse le lintja ho YouTube! U se ke ua senya boko ba hao!

Le ea ho qetela. Haeba, ka mor'a ho bala sengoloa sena, u ratile mohopolo oa ho theha lipapali ntle le ho sebelisa lienjineri tsa papali, joale hopola lebitso la Casey Muratori. Monna enoa o na le websaeteng. Karolong ea "watch -> PREVIOUS EPISODES" u tla fumana lithuto tsa mahala tsa video tse mabapi le mokhoa oa ho theha papali ea setsebi ho tloha qalong. U ka ithuta ho eketsehileng ho tse hlano tsa Intro ho C bakeng sa lithuto tsa Windows ho feta lilemong tse hlano tsa ho ithuta univesithing (motho e mong o ngotse ka sena litlhaloso tlas'a video).

Casey o boetse o hlalosa hore ka ho iketsetsa enjine ea hau ea papali, u tla ba le kutloisiso e ntle ea lienjineri life kapa life tse teng. Lefatšeng la meralo, moo motho e mong le e mong a lekang ho iketsetsa, o tla ithuta ho theha, eseng ho sebelisa. Utloisisa sebopeho sa likhomphutha. Mme hape o tla ba moqapi ea bohlale le ea holileng tsebong - setsebi.

Mahlohonolo tseleng eo u e khethileng! 'Me re etse hore lefatše le be setsebi ho feta.

Author: Grankin Andrey, DevOps



Source: www.habr.com