DevOps’ный C++ ΠΈ Β«ΠΊΡƒΡ…ΠΎΠ½Π½Ρ‹Π΅ Π²ΠΎΠΉΠ½Ρ‹Β», ΠΈΠ»ΠΈ Как я Π½Π°Ρ‡Π°Π» ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΈΠ³Ρ€Ρ‹ Π²ΠΎ врСмя Π΅Π΄Ρ‹

Β«Π― знаю, Ρ‡Ρ‚ΠΎ Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ знаю» Π‘ΠΎΠΊΡ€Π°Ρ‚

Для ΠΊΠΎΠ³ΠΎ: для IT-шников, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠ»Π΅Π²Π°Π»ΠΈ Π½Π° всСх Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² ΠΈ хотят ΠΏΠΎΠΈΠ³Ρ€Π°Ρ‚ΡŒ Π² свои ΠΈΠ³Ρ€Ρ‹!

О Ρ‡Π΅ΠΌ: ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ Π½Π°Ρ‡Π°Ρ‚ΡŒ ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΈΠ³Ρ€Ρ‹ Π½Π° C/C++, Ссли Π²Π΄Ρ€ΡƒΠ³ Π²Π°ΠΌ это Π½Π°Π΄ΠΎ!

Π—Π°Ρ‡Π΅ΠΌ Π²Π°ΠΌ это Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ: Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ β€” это Π½Π΅ моя рабочая спСциализация, Π½ΠΎ я ΡΡ‚Π°Ρ€Π°ΡŽΡΡŒ ΠΊΠ°ΠΆΠ΄ΡƒΡŽ нСдСлю ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ. ΠŸΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ люблю ΠΈΠ³Ρ€Ρ‹!

ΠŸΡ€ΠΈΠ²Π΅Ρ‚, мСня Π·ΠΎΠ²ΡƒΡ‚ АндрСй Π“Ρ€Π°Π½ΠΊΠΈΠ½, я DevOps Π² ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Luxoft. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ β€” это Π½Π΅ моя рабочая спСциализация, Π½ΠΎ я ΡΡ‚Π°Ρ€Π°ΡŽΡΡŒ ΠΊΠ°ΠΆΠ΄ΡƒΡŽ нСдСлю ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ. ΠŸΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ люблю ΠΈΠ³Ρ€Ρ‹!

Π˜Π½Π΄ΡƒΡΡ‚Ρ€ΠΈΡ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½Ρ‹Ρ… ΠΈΠ³Ρ€ ΠΎΠ³Ρ€ΠΎΠΌΠ½Π°, ΠΏΠΎ слухам, сСгодня Π΄Π°ΠΆΠ΅ большС, Ρ‡Π΅ΠΌ индустрия ΠΊΠΈΠ½ΠΎ. Π˜Π³Ρ€Ρ‹ писали с Π½Π°Ρ‡Π°Π»Π° развития ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ΠΎΠ², ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ, ΠΏΠΎ соврСмСнным ΠΌΠ΅Ρ€ΠΊΠ°ΠΌ, слоТныС ΠΈ Π±Π°Π·ΠΎΠ²Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ. Π‘ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½Π΅ΠΌ стали ΠΏΠΎΡΠ²Π»ΡΡ‚ΡŒΡΡ ΠΈΠ³Ρ€ΠΎΠ²Ρ‹Π΅ Π΄Π²ΠΈΠΆΠΊΠΈ с ΡƒΠΆΠ΅ Π·Π°ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ Π³Ρ€Π°Ρ„ΠΈΠΊΠΎΠΉ, Ρ„ΠΈΠ·ΠΈΠΊΠΎΠΉ, Π·Π²ΡƒΠΊΠΎΠΌ. Они ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΡΠΎΡΡ€Π΅Π΄ΠΎΡ‚ΠΎΡ‡ΠΈΡ‚ΡŒΡΡ Π½Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ самой ΠΈΠ³Ρ€Ρ‹ ΠΈ Π½Π΅ Π·Π°ΠΌΠΎΡ€Π°Ρ‡ΠΈΠ²Π°Ρ‚ΡŒΡΡ ΠΏΠΎ ΠΏΠΎΠ²ΠΎΠ΄Ρƒ Π΅Π΅ основания. Но вмСстС с Π½ΠΈΠΌΠΈ, с Π΄Π²ΠΈΠΆΠΊΠ°ΠΌΠΈ, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ «слСпнут» ΠΈ Π΄Π΅Π³Ρ€Π°Π΄ΠΈΡ€ΡƒΡŽΡ‚. Π‘Π°ΠΌΠΎ производство ΠΈΠ³Ρ€ ставится Π½Π° ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€. А количСство ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ†ΠΈΠΈ Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚ ΠΏΡ€Π΅ΠΎΠ±Π»Π°Π΄Π°Ρ‚ΡŒ Π½Π°Π΄ Π΅Π΅ качСством.

Π’ Ρ‚ΠΎ ΠΆΠ΅ врСмя, играя Π² Ρ‡ΡƒΠΆΠΈΠ΅ ΠΈΠ³Ρ€Ρ‹, ΠΌΡ‹ постоянно ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Ρ‹ локациями, ΡΡŽΠΆΠ΅Ρ‚ΠΎΠΌ, пСрсонаТами, ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠΉ ΠΌΠ΅Ρ…Π°Π½ΠΈΠΊΠΎΠΉ, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΏΡ€ΠΈΠ΄ΡƒΠΌΠ°Π»ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ люди. Π’Π°ΠΊ Ρ‡Ρ‚ΠΎ я понял, что…

… настало врСмя ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ свои ΠΌΠΈΡ€Ρ‹, подвластныС Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΌΠ½Π΅. ΠœΠΈΡ€Ρ‹, Π³Π΄Π΅ я Π΅ΡΡ‚ΡŒ ΠΈ ΠžΡ‚Π΅Ρ†, ΠΈ Π‘Ρ‹Π½, ΠΈ Бвятой Π”ΡƒΡ…!

И я искрСннС Π²Π΅Ρ€ΡŽ, Ρ‡Ρ‚ΠΎ, написав свой собствСнный ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠΉ Π΄Π²ΠΈΠΆΠΎΠΊ ΠΈ ΠΈΠ³Ρ€Ρƒ Π½Π° Π½Π΅ΠΌ, получится Ρ€Π°Π·ΡƒΡ‚ΡŒ Π³Π»Π°Π·Π°, ΠΏΡ€ΠΎΡ‚Π΅Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ€Ρ‚ΠΎΡ‡ΠΊΠΈ ΠΈ ΠΏΡ€ΠΎΠΊΠ°Ρ‡Π°Ρ‚ΡŒ свою ΠΊΠ°Π±ΠΈΠ½Ρƒ, став Π±ΠΎΠ»Π΅Π΅ ΠΎΠΏΡ‹Ρ‚Π½Ρ‹ΠΌ ΠΈ Ρ†Π΅Π»ΡŒΠ½Ρ‹ΠΌ программистом.

Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΡŽ Ρ€Π°ΡΡΠΊΠ°Π·Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊ Π½Π°Ρ‡Π°Π» ΠΏΠΈΡΠ°Ρ‚ΡŒ нСбольшиС ΠΈΠ³Ρ€Ρ‹ Π½Π° C/C++, ΠΊΠ°ΠΊΠΎΠ² процСсс Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈ Π³Π΄Π΅ Π½Π°Ρ…ΠΎΠΆΡƒ врСмя Π½Π° Ρ…ΠΎΠ±Π±ΠΈ Π² условиях большой загруТСнности. Она ΡΡƒΠ±ΡŠΠ΅ΠΊΡ‚ΠΈΠ²Π½Π° ΠΈ описываСт процСсс ΠΈΠ½Π΄ΠΈΠ²ΠΈΠ΄ΡƒΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ старта. ΠœΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π» ΠΎ нСвСТСствС ΠΈ Π²Π΅Ρ€Π΅, ΠΎ ΠΌΠΎΠ΅ΠΉ Π»ΠΈΡ‡Π½ΠΎΠΉ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½Π΅ ΠΌΠΈΡ€Π° Π² Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚. Π”Ρ€ΡƒΠ³ΠΈΠΌΠΈ словами, «Администрация Π½Π΅ нСсСт отвСтствСнности Π·Π° ваши Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΌΠΎΠ·Π³ΠΈ!Β».

ΠŸΡ€Π°ΠΊΡ‚ΠΈΠΊΠ°

«Знания Π±Π΅Π· ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΈ бСсполСзны, ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° Π±Π΅Π· Π·Π½Π°Π½ΠΈΠΉ опасна» ΠšΠΎΠ½Ρ„ΡƒΡ†ΠΈΠΉ

Мой Π±Π»ΠΎΠΊΠ½ΠΎΡ‚ β€” моя Тизнь!


Π˜Ρ‚Π°ΠΊ, Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅ ΠΌΠΎΠ³Ρƒ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ всС для мСня начинаСтся с Π±Π»ΠΎΠΊΠ½ΠΎΡ‚Π°. Π’ΡƒΠ΄Π° Π·Π°ΠΏΠΈΡΡ‹Π²Π°ΡŽ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ свои повсСднСвныС Π·Π°Π΄Π°Ρ‡ΠΈ, Π² Π½Π΅ΠΌ Π΅Ρ‰Π΅ ΠΈ Ρ€ΠΈΡΡƒΡŽ, ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΡƒΡŽ, ΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΈΡ€ΡƒΡŽ Π±Π»ΠΎΠΊ-схСмы ΠΈ Ρ€Π΅ΡˆΠ°ΡŽ Π·Π°Π΄Π°Ρ‡ΠΈ, Π² Ρ‚ΠΎΠΌ числС матСматичСскиС. ВсСгда ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Π±Π»ΠΎΠΊΠ½ΠΎΡ‚ ΠΈ ΠΏΠΈΡˆΠΈΡ‚Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊΠ°Ρ€Π°Π½Π΄Π°ΡˆΠΎΠΌ. Π­Ρ‚ΠΎ чисто, ΡƒΠ΄ΠΎΠ±Π½ΠΎ ΠΈ Π½Π°Π΄Π΅ΠΆΠ½ΠΎ, ИМΠ₯О.

DevOps’Π½Ρ‹ΠΉ C++ ΠΈ «ΠΊΡƒΡ…ΠΎΠ½Π½Ρ‹Π΅ Π²ΠΎΠΉΠ½Ρ‹», ΠΈΠ»ΠΈ Как я Π½Π°Ρ‡Π°Π» ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΈΠ³Ρ€Ρ‹ Π²ΠΎ врСмя Π΅Π΄Ρ‹
Мой (ΡƒΠΆΠ΅ исписанный) Π±Π»ΠΎΠΊΠ½ΠΎΡ‚. Π’ΠΎΡ‚ Ρ‚Π°ΠΊ ΠΎΠ½ выглядит. Π’ Π½Π΅ΠΌ повсСднСвныС Π·Π°Π΄Π°Ρ‡ΠΈ, ΠΈΠ΄Π΅ΠΈ, рисунки, схСмы, Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ, чСрная бухгалтСрия, ΠΊΠΎΠ΄ ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅

На Π΄Π°Π½Π½ΠΎΠΌ этапС я успСл Π·Π°ΠΊΠΎΠ½Ρ‡ΠΈΡ‚ΡŒ Ρ‚Ρ€ΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° (это Π² ΠΌΠΎΠ΅ΠΌ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠΈ «закончСнности», вСдь любой ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°Π·Π²ΠΈΠ²Π°Ρ‚ΡŒ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ бСсконСчно).

  • Project 0: это 3D-сцСна Architect Demo, написанная Π½Π° C# с использованиСм ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠ³ΠΎ Π΄Π²ΠΈΠΆΠΊΠ° Unity. Для ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌ macOS ΠΈ Windows.
  • Game 1: консольная ΠΈΠ³Ρ€Π° Simple Snake (всСм извСстная ΠΊΠ°ΠΊ Β«Π—ΠΌΠ΅ΠΉΠΊΠ°Β») ΠΏΠΎΠ΄ Windows. Написанная Π½Π° C.
  • Game 2: консольная ΠΈΠ³Ρ€Π° Crazy Tanks (всСм извСстная ΠΊΠ°ΠΊ Β«Π’Π°Π½Ρ‡ΠΈΠΊΠΈΒ»), написанная ΡƒΠΆΠ΅ Π½Π° C++ (с использованиСм классов) ΠΈ Ρ‚ΠΎΠΆΠ΅ ΠΏΠΎΠ΄ Windows.

Project 0. Architect Demo

  • ΠŸΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°: Windows (Windows 7, 10), Mac OS (OS X El Capitan v. 10.11.6)
  • Π―Π·Ρ‹ΠΊ: C#
  • Π˜Π³Ρ€ΠΎΠ²ΠΎΠΉ Π΄Π²ΠΈΠΆΠΎΠΊ: Unity
  • Π’Π΄ΠΎΡ…Π½ΠΎΠ²Π΅Π½ΠΈΠ΅: Darrin Lile
  • Π Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ: GitHub

DevOps’Π½Ρ‹ΠΉ C++ ΠΈ «ΠΊΡƒΡ…ΠΎΠ½Π½Ρ‹Π΅ Π²ΠΎΠΉΠ½Ρ‹», ΠΈΠ»ΠΈ Как я Π½Π°Ρ‡Π°Π» ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΈΠ³Ρ€Ρ‹ Π²ΠΎ врСмя Π΅Π΄Ρ‹
3D-сцСна Architect Demo

ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ Π½Π΅ Π½Π° C/C++, Π° Π½Π° C# с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠ³ΠΎ Π΄Π²ΠΈΠΆΠΊΠ° Unity. Π­Ρ‚ΠΎΡ‚ Π΄Π²ΠΈΠΆΠΎΠΊ Π±Ρ‹Π» Π½Π΅ Ρ‚Π°ΠΊ Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚Π΅Π»Π΅Π½ ΠΊ Β«ΠΆΠ΅Π»Π΅Π·ΡƒΒ», ΠΊΠ°ΠΊ Unreal Engine, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠ½Π΅ показался Π»Π΅Π³Ρ‡Π΅ Π² установкС ΠΈ использовании. Π”Ρ€ΡƒΠ³ΠΈΠ΅ Π΄Π²ΠΈΠΆΠΊΠΈ я Π½Π΅ рассматривал.

ЦСлью Π² Unity для мСня Π½Π΅ Π±Ρ‹Π»Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ ΠΈΠ³Ρ€Ρ‹. Π― Ρ…ΠΎΡ‚Π΅Π» ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ 3D-сцСну с ΠΊΠ°ΠΊΠΈΠΌ-Ρ‚ΠΎ пСрсонаТСм. Он, Π° Ρ‚ΠΎΡ‡Π½Π΅Π΅ Она (я смодСлировал Π΄Π΅Π²ΡƒΡˆΠΊΡƒ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π±Ρ‹Π» влюблСн =) Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Π»Π° Π΄Π²ΠΈΠ³Π°Ρ‚ΡŒΡΡ ΠΈ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ с ΠΎΠΊΡ€ΡƒΠΆΠ°ΡŽΡ‰ΠΈΠΌ ΠΌΠΈΡ€ΠΎΠΌ. Π’Π°ΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎΠ½ΡΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Unity, ΠΊΠ°ΠΊΠΎΠΉ процСсс Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈ сколько усилий трСбуСтся для создания Ρ‡Π΅Π³ΠΎ-Π»ΠΈΠ±ΠΎ. Π’Π°ΠΊ родился ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Architect Demo (Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΏΡ€ΠΈΠ΄ΡƒΠΌΠ°Π½ΠΎ ΠΏΠΎΡ‡Ρ‚ΠΈ ΠΎΡ‚ Π±Π°Π»Π΄Ρ‹). ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅, ΠΌΠΎΠ΄Π΅Π»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅, Π°Π½ΠΈΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅, тСкстурированиС заняло Ρƒ мСня, Π½Π°Π²Π΅Ρ€Π½ΠΎΠ΅, Π΄Π²Π° мСсяца Π΅ΠΆΠ΅Π΄Π½Π΅Π²Π½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹.

Π‘Ρ‚Π°Ρ€Ρ‚ΠΎΠ²Π°Π» я с ΠΎΠ±ΡƒΡ‡Π°ΡŽΡ‰ΠΈΡ… Π²ΠΈΠ΄Π΅ΠΎ Π½Π° YouTube ΠΏΠΎ созданию 3D-ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ Π² Blender. Blender β€” это ΠΎΡ‚Π»ΠΈΡ‡Π½Ρ‹ΠΉ бСсплатный Ρ‚ΡƒΠ» для 3D-модСлирования (ΠΈ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ), Π½Π΅ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‰ΠΈΠΉ установки. И здСсь мСня ΠΆΠ΄Π°Π»ΠΎ потрясСниС… ΠžΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ΡΡ, ΠΌΠΎΠ΄Π΅Π»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅, Π°Π½ΠΈΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅, тСкстурированиС β€” это ΠΎΠ³Ρ€ΠΎΠΌΠ½Ρ‹Π΅ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ Ρ‚Π΅ΠΌΡ‹, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΊΠ½ΠΈΠΆΠΊΠΈ ΠΏΠΈΡΠ°Ρ‚ΡŒ. ОсобСнно это касаСтся пСрсонаТСй. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΌΠΎΠ΄Π΅Π»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ°Π»ΡŒΡ†Ρ‹, Π·ΡƒΠ±Ρ‹, Π³Π»Π°Π·Π° ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ части Ρ‚Π΅Π»Π°, Π²Π°ΠΌ ΠΏΠΎΡ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ΡΡ знания Π°Π½Π°Ρ‚ΠΎΠΌΠΈΠΈ. Как устроСны ΠΌΡ‹ΡˆΡ†Ρ‹ Π»ΠΈΡ†Π°? Как люди Π΄Π²ΠΈΠ³Π°ΡŽΡ‚ΡΡ? МнС ΠΏΡ€ΠΈΡˆΠ»ΠΎΡΡŒ Β«Π²ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒΒ» кости Π² ΠΊΠ°ΠΆΠ΄ΡƒΡŽ Ρ€ΡƒΠΊΡƒ, Π½ΠΎΠ³Ρƒ, ΠΏΠ°Π»Π΅Ρ†, Ρ„Π°Π»Π°Π½Π³ΠΈ ΠΏΠ°Π»ΡŒΡ†Π΅Π²!

ΠœΠΎΠ΄Π΅Π»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ»ΡŽΡ‡ΠΈΡ†Ρ‹, Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ кости-Ρ€Ρ‹Ρ‡Π°Π³ΠΈ, для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ анимация выглядСла СстСствСнно. ПослС Ρ‚Π°ΠΊΠΈΡ… ΡƒΡ€ΠΎΠΊΠΎΠ² осознаСшь, ΠΊΠ°ΠΊΠΎΠΉ ΠΎΠ³Ρ€ΠΎΠΌΠ½Ρ‹ΠΉ Ρ‚Ρ€ΡƒΠ΄ ΠΏΡ€ΠΎΠ΄Π΅Π»Ρ‹Π²Π°ΡŽΡ‚ создатСли Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… Ρ„ΠΈΠ»ΡŒΠΌΠΎΠ², лишь Π±Ρ‹ ΡΠΎΡ‚Π²ΠΎΡ€ΠΈΡ‚ΡŒ 30 сСкунд Π²ΠΈΠ΄Π΅ΠΎ. А вСдь 3D-Ρ„ΠΈΠ»ΡŒΠΌΡ‹ длятся часами! А ΠΌΡ‹ ΠΏΠΎΡ‚ΠΎΠΌ Π²Ρ‹Ρ…ΠΎΠ΄ΠΈΠΌ ΠΈΠ· ΠΊΠΈΠ½ΠΎΡ‚Π΅Π°Ρ‚Ρ€ΠΎΠ² ΠΈ Π³ΠΎΠ²ΠΎΡ€ΠΈΠΌ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π²Ρ€ΠΎΠ΄Π΅: Β«Π’Π°, Π΄Π΅Ρ€ΡŒΠΌΠΎΠ²Ρ‹ΠΉ ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΊ/Ρ„ΠΈΠ»ΡŒΠΌ! Могли ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΡˆΠ΅…Β» Π“Π»ΡƒΠΏΡ†Ρ‹!

И Π΅Ρ‰Π΅, Ρ‡Ρ‚ΠΎ касаСтся программирования Π² этом ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅. Как оказалось, самая интСрСсная для мСня Ρ‡Π°ΡΡ‚ΡŒ Π±Ρ‹Π»Π° матСматичСская. Если Π²Ρ‹ запуститС сцСну (ссылка Π½Π° Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ Π² описании ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°), Ρ‚ΠΎ Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ ΠΊΠ°ΠΌΠ΅Ρ€Π° вращаСтся Π²ΠΎΠΊΡ€ΡƒΠ³ пСрсонаТа-Π΄Π΅Π²ΠΎΡ‡ΠΊΠΈ ΠΏΠΎ сфСрС. Π§Ρ‚ΠΎΠ±Ρ‹ Π·Π°ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚Π°ΠΊΠΎΠ΅ Π²Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ ΠΊΠ°ΠΌΠ΅Ρ€Ρ‹, ΠΌΠ½Π΅ ΠΏΡ€ΠΈΡˆΠ»ΠΎΡΡŒ сначала Π²Ρ‹ΡΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ Ρ‚ΠΎΡ‡ΠΊΠΈ полоТСния Π½Π° ΠΊΡ€ΡƒΠ³Π΅ (2D), Π° ΠΏΠΎΡ‚ΠΎΠΌ ΠΈ Π½Π° сфСрС (3D). Π‘Π°ΠΌΠΎΠ΅ смСшноС, Ρ‡Ρ‚ΠΎ я Π½Π΅Π½Π°Π²ΠΈΠ΄Π΅Π» ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΡƒ Π² школС ΠΈ Π·Π½Π°Π» Π΅Π΅ Π½Π° Ρ‚Ρ€ΠΈ с минусом. ΠžΡ‚Ρ‡Π°ΡΡ‚ΠΈ, Π½Π°Π²Π΅Ρ€Π½ΠΎΠ΅, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π² школС Ρ‚Π΅Π±Π΅ попросту Π½Π΅ ΠΎΠ±ΡŠΡΡΠ½ΡΡŽΡ‚, ΠΊΠ°ΠΊ, Ρ‡Π΅Ρ€Ρ‚ возьми, эта ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠ° примСняСтся Π² ΠΆΠΈΠ·Π½ΠΈ. Но ΠΊΠΎΠ³Π΄Π° Ρ‚Ρ‹ ΠΎΠ΄Π΅Ρ€ΠΆΠΈΠΌ своСй Ρ†Π΅Π»ΡŒΡŽ, ΠΌΠ΅Ρ‡Ρ‚ΠΎΠΉ, Ρ‚ΠΎ Ρ€Π°Π·ΡƒΠΌ очищаСтся, раскрываСтся! И Ρ‚Ρ‹ Π½Π°Ρ‡ΠΈΠ½Π°Π΅ΡˆΡŒ Π²ΠΎΡΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ слоТныС Π·Π°Π΄Π°Ρ‡ΠΈ ΠΊΠ°ΠΊ ΡƒΠ²Π»Π΅ΠΊΠ°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ ΠΏΡ€ΠΈΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅. А ΠΏΠΎΡ‚ΠΎΠΌ Π΄ΡƒΠΌΠ°Π΅ΡˆΡŒ: «Ну Ρ‡Π΅Π³ΠΎ ΠΆΠ΅ *любимая* ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΡ‡ΠΊΠ° Π½Π΅ ΠΌΠΎΠ³Π»Π° Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎ Ρ€Π°ΡΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Π³Π΄Π΅ эти Ρ„ΠΎΡ€ΠΌΡƒΠ»Ρ‹ ΠΏΡ€ΠΈΡΠ»ΠΎΠ½ΠΈΡ‚ΡŒ ΠΌΠΎΠΆΠ½ΠΎ?Β».

DevOps’Π½Ρ‹ΠΉ C++ ΠΈ «ΠΊΡƒΡ…ΠΎΠ½Π½Ρ‹Π΅ Π²ΠΎΠΉΠ½Ρ‹», ΠΈΠ»ΠΈ Как я Π½Π°Ρ‡Π°Π» ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΈΠ³Ρ€Ρ‹ Π²ΠΎ врСмя Π΅Π΄Ρ‹
ΠŸΡ€ΠΎΡΡ‡Π΅Ρ‚ Ρ„ΠΎΡ€ΠΌΡƒΠ» для вычислСния ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚ Ρ‚ΠΎΡ‡ΠΊΠΈ Π½Π° ΠΊΡ€ΡƒΠ³Π΅ ΠΈ Π½Π° сфСрС (ΠΈΠ· ΠΌΠΎΠ΅Π³ΠΎ Π±Π»ΠΎΠΊΠ½ΠΎΡ‚Π°)

Game 1. Simple Snake

  • ΠŸΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°: Windows (тСстировал Π½Π° Windows 7, 10)
  • Π―Π·Ρ‹ΠΊ: ΠΏΠΎ-ΠΌΠΎΠ΅ΠΌΡƒ, писал Π½Π° чистом C
  • Π˜Π³Ρ€ΠΎΠ²ΠΎΠΉ Π΄Π²ΠΈΠΆΠΎΠΊ: консоль Windows
  • Π’Π΄ΠΎΡ…Π½ΠΎΠ²Π΅Π½ΠΈΠ΅: javidx9
  • Π Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ: GitHub

DevOps’Π½Ρ‹ΠΉ C++ ΠΈ «ΠΊΡƒΡ…ΠΎΠ½Π½Ρ‹Π΅ Π²ΠΎΠΉΠ½Ρ‹», ΠΈΠ»ΠΈ Как я Π½Π°Ρ‡Π°Π» ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΈΠ³Ρ€Ρ‹ Π²ΠΎ врСмя Π΅Π΄Ρ‹
Π˜Π³Ρ€Π° Simple Snake

3D-сцСна β€” это Π½Π΅ ΠΈΠ³Ρ€Π°. К Ρ‚ΠΎΠΌΡƒ ΠΆΠ΅ ΠΌΠΎΠ΄Π΅Π»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ Π°Π½ΠΈΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ 3D-ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ (особСнно пСрсонаТи) Π΄ΠΎΠ»Π³ΠΎ ΠΈ слоТно. ΠŸΠΎΠΈΠ³Ρ€Π°Π²ΡˆΠΈΡΡŒ с Unity, ΠΊΠΎ ΠΌΠ½Π΅ ΠΏΡ€ΠΈΡˆΠ»ΠΎ осознаниС, Ρ‡Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Ρ‚ΡŒ, Π° Ρ‚ΠΎΡ‡Π½Π΅Π΅ Π½Π°Ρ‡ΠΈΠ½Π°Ρ‚ΡŒ, с основ. Π§Π΅Π³ΠΎ-Ρ‚ΠΎ простого ΠΈ быстрого, Π½ΠΎ Π² Ρ‚ΠΎ ΠΆΠ΅ врСмя глобального, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ½ΡΡ‚ΡŒ само устройство ΠΈΠ³Ρ€.

А Ρ‡Ρ‚ΠΎ Ρƒ нас простоС ΠΈ быстроС? ΠŸΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ, консоль ΠΈ 2D. Π’ΠΎΡ‡Π½Π΅Π΅ Π΄Π°ΠΆΠ΅ консоль ΠΈ символы. ΠžΠΏΡΡ‚ΡŒ ΠΏΠΎΠ»Π΅Π· ΠΈΡΠΊΠ°Ρ‚ΡŒ Π²Π΄ΠΎΡ…Π½ΠΎΠ²Π΅Π½ΠΈΠ΅ Π² ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚ (Π²ΠΎΠΎΠ±Ρ‰Π΅, ΡΡ‡ΠΈΡ‚Π°ΡŽ ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Ρ€Π΅Π²ΠΎΠ»ΡŽΡ†ΠΈΠΎΠ½Π½Ρ‹ΠΌ ΠΈ опасным ΠΈΠ·ΠΎΠ±Ρ€Π΅Ρ‚Π΅Π½ΠΈΠ΅ΠΌ XXI Π²Π΅ΠΊΠ°). Нарыл Π²ΠΈΠ΄Π΅ΠΎ ΠΎΠ΄Π½ΠΎΠ³ΠΎ программиста, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π΄Π΅Π»Π°Π» ΠΊΠΎΠ½ΡΠΎΠ»ΡŒΠ½Ρ‹ΠΉ тСтрис. И ΠΏΠΎ подобию Π΅Π³ΠΎ ΠΈΠ³Ρ€Ρ‹ Ρ€Π΅ΡˆΠΈΠ» Π·Π°ΠΏΠΈΠ»ΠΈΡ‚ΡŒ Β«Π·ΠΌΠ΅ΠΉΠΊΡƒΒ». Π‘ Π²ΠΈΠ΄Π΅ΠΎ я ΡƒΠ·Π½Π°Π» ΠΏΡ€ΠΎ Π΄Π²Π΅ Ρ„ΡƒΠ½Π΄Π°ΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹Π΅ Π²Π΅Ρ‰ΠΈ β€” ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠΉ Ρ†ΠΈΠΊΠ» (с трСмя Π±Π°Π·ΠΎΠ²Ρ‹ΠΌΠΈ функциями/частями) ΠΈ Π²Ρ‹Π²ΠΎΠ΄ Π² Π±ΡƒΡ„Π΅Ρ€.

Π˜Π³Ρ€ΠΎΠ²ΠΎΠΉ Ρ†ΠΈΠΊΠ» ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Ρ‚Π°ΠΊ:

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

Π’ ΠΊΠΎΠ΄Π΅ прСдставлСна сразу вся функция main(). А ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠΉ Ρ†ΠΈΠΊΠ» начинаСтся послС ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ коммСнтария. Π’ Ρ†ΠΈΠΊΠ»Π΅ Ρ‚Ρ€ΠΈ Π±Π°Π·ΠΎΠ²Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ: Input(), Logic(), Draw(). Π‘Π½Π°Ρ‡Π°Π»Π° Π²Π²ΠΎΠ΄ Π΄Π°Π½Π½Ρ‹Ρ… Input (Π² основном ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒ наТатия клавиш), ΠΏΠΎΡ‚ΠΎΠΌ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π²Π²Π΅Π΄Π΅Π½Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… Logic, Π·Π°Ρ‚Π΅ΠΌ Π²Ρ‹Π²ΠΎΠ΄ Π½Π° экран β€” Draw. И Ρ‚Π°ΠΊ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΊΠ°Π΄Ρ€. Π’ Ρ‚Π°ΠΊΠΎΠΉ способ создаСтся анимация. Π­Ρ‚ΠΎ ΠΊΠ°ΠΊ Π² рисованных ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΊΠ°Ρ…. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π²Π²Π΅Π΄Π΅Π½Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… ΠΎΡ‚Π±ΠΈΡ€Π°Π΅Ρ‚ большС всСго Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΈ, насколько я знаю, опрСдСляСт Ρ„Ρ€Π΅ΠΉΠΌΡ€Π΅ΠΉΡ‚ ΠΈΠ³Ρ€Ρ‹. Но Ρ‚ΡƒΡ‚ функция Logic() выполняСтся ΠΎΡ‡Π΅Π½ΡŒ быстро. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ смСны ΠΊΠ°Π΄Ρ€ΠΎΠ² приходится Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ Sleep() с ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ gameSpeed, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈ опрСдСляСт эту ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ.

DevOps’Π½Ρ‹ΠΉ C++ ΠΈ «ΠΊΡƒΡ…ΠΎΠ½Π½Ρ‹Π΅ Π²ΠΎΠΉΠ½Ρ‹», ΠΈΠ»ΠΈ Как я Π½Π°Ρ‡Π°Π» ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΈΠ³Ρ€Ρ‹ Π²ΠΎ врСмя Π΅Π΄Ρ‹
Π˜Π³Ρ€ΠΎΠ²ΠΎΠΉ Ρ†ΠΈΠΊΠ». ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Β«Π·ΠΌΠ΅ΠΉΠΊΠΈΒ» Π² Π±Π»ΠΎΠΊΠ½ΠΎΡ‚Π΅

Если Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ ΡΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½ΡƒΡŽ ΠΊΠΎΠ½ΡΠΎΠ»ΡŒΠ½ΡƒΡŽ ΠΈΠ³Ρ€Ρƒ, Ρ‚ΠΎ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ Π½Π° экран с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠ³ΠΎ ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ²ΠΎΠ³ΠΎ Π²Ρ‹Π²ΠΎΠ΄Π° β€˜cout’ Π½Π΅ получится β€” ΠΎΠ½ ΠΎΡ‡Π΅Π½ΡŒ ΠΌΠ΅Π΄Π»Π΅Π½Π½Ρ‹ΠΉ. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π²Ρ‹Π²ΠΎΠ΄ Π½ΡƒΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΡ‚ΡŒ Π² Π±ΡƒΡ„Π΅Ρ€ экрана. Π’Π°ΠΊ Π³ΠΎΡ€Π°Π·Π΄ΠΎ быстрСС ΠΈ ΠΈΠ³Ρ€Π° Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π±Π΅Π· глюков. ЧСстно говоря, я Π½Π΅ совсСм понимаю, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π±ΡƒΡ„Π΅Ρ€ экрана ΠΈ ΠΊΠ°ΠΊ это Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚. Но я ΠΏΡ€ΠΈΠ²Π΅Π΄Ρƒ Ρ‚ΡƒΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠ΄Π°, ΠΈ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π² коммСнтариях ΠΊΡ‚ΠΎ-Ρ‚ΠΎ смоТСт ΠΏΡ€ΠΎΡΡΠ½ΠΈΡ‚ΡŒ ΡΠΈΡ‚ΡƒΠ°Ρ†ΠΈΡŽ.

ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ Π±ΡƒΡ„Π΅Ρ€Π° экрана (Ссли ΠΌΠΎΠΆΠ½ΠΎ Ρ‚Π°ΠΊ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ):

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

НСпосрСдствСнный Π²Ρ‹Π²ΠΎΠ΄ Π½Π° экран Π½Π΅ΠΊΠΎΠΉ строки scoreLine (строка отобраТСния ΠΎΡ‡ΠΊΠΎΠ²):

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

По ΠΈΠ΄Π΅Π΅, Π½ΠΈΡ‡Π΅Π³ΠΎ слоТного Π² этой ΠΈΠ³Ρ€Π΅ Π½Π΅Ρ‚, ΠΌΠ½Π΅ ΠΎΠ½Π° прСдставляСтся Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠΌ Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ уровня. Код написан Π² ΠΎΠ΄Π½ΠΎΠΌ Ρ„Π°ΠΉΠ»Π΅ ΠΈ ΠΎΡ„ΠΎΡ€ΠΌΠ»Π΅Π½ Π² Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… функциях. НСт классов, Π½Π΅Ρ‚ наслСдования. Π’Ρ‹ ΠΈ сами всС ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π² исходниках ΠΈΠ³Ρ€Ρ‹, пСрСйдя Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ Π½Π° GitHub.

Game 2. Crazy Tanks

  • ΠŸΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°: Windows (тСстировал Π½Π° Windows 7, 10)
  • Π―Π·Ρ‹ΠΊ: C++
  • Π˜Π³Ρ€ΠΎΠ²ΠΎΠΉ Π΄Π²ΠΈΠΆΠΎΠΊ: консоль Windows
  • Π’Π΄ΠΎΡ…Π½ΠΎΠ²Π΅Π½ΠΈΠ΅: ΠΊΠ½ΠΈΠ³Π° Beginning C++ Through Game Programming
  • Π Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ: GitHub

DevOps’Π½Ρ‹ΠΉ C++ ΠΈ «ΠΊΡƒΡ…ΠΎΠ½Π½Ρ‹Π΅ Π²ΠΎΠΉΠ½Ρ‹», ΠΈΠ»ΠΈ Как я Π½Π°Ρ‡Π°Π» ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΈΠ³Ρ€Ρ‹ Π²ΠΎ врСмя Π΅Π΄Ρ‹
Π˜Π³Ρ€Π° Crazy Tanks

Π’Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ΡŒ символы Π² консоль β€” это, Π½Π°Π²Π΅Ρ€Π½ΠΎΠ΅, самоС простоС, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€Π΅Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π² ΠΈΠ³Ρ€Ρƒ. Но Ρ‚ΠΎΠ³Π΄Π° появляСтся ΠΎΠ΄Π½Π° Π½Π΅ΠΏΡ€ΠΈΡΡ‚Π½ΠΎΡΡ‚ΡŒ: символы ΠΈΠΌΠ΅ΡŽΡ‚ Ρ€Π°Π·Π½ΡƒΡŽ высоту ΠΈ ΡˆΠΈΡ€ΠΈΠ½Ρƒ (высота большС, Ρ‡Π΅ΠΌ ΡˆΠΈΡ€ΠΈΠ½Π°). Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, всС Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ Π½Π΅ΠΏΡ€ΠΎΠΏΠΎΡ€Ρ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎ, Π° Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ Π²Π½ΠΈΠ· ΠΈΠ»ΠΈ Π²Π²Π΅Ρ€Ρ… ΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ Π³ΠΎΡ€Π°Π·Π΄ΠΎ быстрСС, Ρ‡Π΅ΠΌ Π²Π»Π΅Π²ΠΎ ΠΈΠ»ΠΈ Π²ΠΏΡ€Π°Π²ΠΎ. Π­Ρ‚ΠΎΡ‚ эффСкт ΠΎΡ‡Π΅Π½ΡŒ Π·Π°ΠΌΠ΅Ρ‚Π΅Π½ Π² Β«Π—ΠΌΠ΅ΠΉΠΊΠ΅Β» (Game 1). Β«Π’Π°Π½Ρ‡ΠΈΠΊΠΈΒ» (Game 2) Π»ΠΈΡˆΠ΅Π½Ρ‹ Ρ‚Π°ΠΊΠΎΠ³ΠΎ нСдостатка, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π²Ρ‹Π²ΠΎΠ΄ Ρ‚Π°ΠΌ ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Π½ Ρ‡Π΅Ρ€Π΅Π· Π·Π°ΠΊΡ€Π°ΡˆΠΈΠ²Π°Π½ΠΈΠ΅ экранных пиксСлСй Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ Ρ†Π²Π΅Ρ‚Π°ΠΌΠΈ. МоТно ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, я написал Ρ€Π΅Π½Π΄Π΅Ρ€Π΅Ρ€. ΠŸΡ€Π°Π²Π΄Π°, это ΡƒΠΆΠ΅ Ρ‡ΡƒΡ‚ΡŒ слоТнСС, хотя ΠΈ Π³ΠΎΡ€Π°Π·Π΄ΠΎ интСрСснСС.

По Π΄Π°Π½Π½ΠΎΠΉ ΠΈΠ³Ρ€Π΅ Π±ΡƒΠ΄Π΅Ρ‚ достаточно ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ мою систСму Π²Ρ‹Π²ΠΎΠ΄Π° пиксСлСй Π½Π° экран. Π‘Ρ‡ΠΈΡ‚Π°ΡŽ это основной Ρ‡Π°ΡΡ‚ΡŒΡŽ ΠΈΠ³Ρ€Ρ‹. А всС ΠΎΡΡ‚Π°Π»ΡŒΠ½ΠΎΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΠ΄ΡƒΠΌΠ°Ρ‚ΡŒ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ.

Π˜Ρ‚Π°ΠΊ, Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Π²ΠΈΠ΄ΠΈΡ‚Π΅ Π½Π° экранС β€” это просто Π½Π°Π±ΠΎΡ€ двиТущихся Ρ€Π°Π·Π½ΠΎΡ†Π²Π΅Ρ‚Π½Ρ‹Ρ… ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠΎΠ².

DevOps’Π½Ρ‹ΠΉ C++ ΠΈ «ΠΊΡƒΡ…ΠΎΠ½Π½Ρ‹Π΅ Π²ΠΎΠΉΠ½Ρ‹», ΠΈΠ»ΠΈ Как я Π½Π°Ρ‡Π°Π» ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΈΠ³Ρ€Ρ‹ Π²ΠΎ врСмя Π΅Π΄Ρ‹
Набор ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠΎΠ²

ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊ прСдставлСн ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π΅ΠΉ, Π·Π°ΠΏΠΎΠ»Π½Π΅Π½Π½ΠΎΠΉ числами. ΠšΡΡ‚Π°Ρ‚ΠΈ, ΠΌΠΎΠ³Ρƒ Π²Ρ‹Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΎΠ΄ΠΈΠ½ интСрСсный нюанс β€” всС ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ Π² ΠΈΠ³Ρ€Π΅ Π·Π°ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½Ρ‹ ΠΊΠ°ΠΊ ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив. НС Π΄Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹ΠΉ, Π° ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΉ! Π‘ ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΌΠΈ массивами Π³ΠΎΡ€Π°Π·Π΄ΠΎ ΠΏΡ€ΠΎΡ‰Π΅ ΠΈ быстрСС Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ.

DevOps’Π½Ρ‹ΠΉ C++ ΠΈ «ΠΊΡƒΡ…ΠΎΠ½Π½Ρ‹Π΅ Π²ΠΎΠΉΠ½Ρ‹», ΠΈΠ»ΠΈ Как я Π½Π°Ρ‡Π°Π» ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΈΠ³Ρ€Ρ‹ Π²ΠΎ врСмя Π΅Π΄Ρ‹
ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠ³ΠΎ Ρ‚Π°Π½ΠΊΠ°

DevOps’Π½Ρ‹ΠΉ C++ ΠΈ «ΠΊΡƒΡ…ΠΎΠ½Π½Ρ‹Π΅ Π²ΠΎΠΉΠ½Ρ‹», ΠΈΠ»ΠΈ Как я Π½Π°Ρ‡Π°Π» ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΈΠ³Ρ€Ρ‹ Π²ΠΎ врСмя Π΅Π΄Ρ‹
ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠ³ΠΎ Ρ‚Π°Π½ΠΊΠ° ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΌ массивом

DevOps’Π½Ρ‹ΠΉ C++ ΠΈ «ΠΊΡƒΡ…ΠΎΠ½Π½Ρ‹Π΅ Π²ΠΎΠΉΠ½Ρ‹», ΠΈΠ»ΠΈ Как я Π½Π°Ρ‡Π°Π» ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΈΠ³Ρ€Ρ‹ Π²ΠΎ врСмя Π΅Π΄Ρ‹
Π‘ΠΎΠ»Π΅Π΅ наглядный ΠΏΡ€ΠΈΠΌΠ΅Ρ€ прСдставлСния ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΌ массивом

Но доступ ΠΊ элСмСнтам массива происходит Π² Π΄Π²ΠΎΠΉΠ½ΠΎΠΌ Ρ†ΠΈΠΊΠ»Π΅, ΠΊΠ°ΠΊ Π±ΡƒΠ΄Ρ‚ΠΎ это Π½Π΅ ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΉ, Π° Π΄Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив. Π’Π°ΠΊ сдСлано ΠΏΠΎΡ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ всС-Ρ‚Π°ΠΊΠΈ Ρ€Π°Π±ΠΎΡ‚Π°Π΅ΠΌ с ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π°ΠΌΠΈ.

DevOps’Π½Ρ‹ΠΉ C++ ΠΈ «ΠΊΡƒΡ…ΠΎΠ½Π½Ρ‹Π΅ Π²ΠΎΠΉΠ½Ρ‹», ΠΈΠ»ΠΈ Как я Π½Π°Ρ‡Π°Π» ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΈΠ³Ρ€Ρ‹ Π²ΠΎ врСмя Π΅Π΄Ρ‹
ΠžΠ±Ρ…ΠΎΠ΄ ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива Π² Π΄Π²ΠΎΠΉΠ½ΠΎΠΌ Ρ†ΠΈΠΊΠ»Π΅. Y β€” ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ строк, X β€” ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ столбцов

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: вмСсто ΠΏΡ€ΠΈΠ²Ρ‹Ρ‡Π½Ρ‹Ρ… ΠΌΠ°Ρ‚Ρ€ΠΈΡ‡Π½Ρ‹Ρ… ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ² i, j я ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ x ΠΈ y. Π’Π°ΠΊ, ΠΌΠ½Π΅ каТСтся, приятнСй для Π³Π»Π°Π· ΠΈ понятнСй для ΠΌΠΎΠ·Π³Π°. К Ρ‚ΠΎΠΌΡƒ ΠΆΠ΅ такая запись позволяСт ΡƒΠ΄ΠΎΠ±Π½ΠΎ ΠΏΡ€ΠΎΠ΅Ρ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ Π½Π° оси ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚ Π΄Π²ΡƒΡ…ΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ изобраТСния.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΎ пиксСлях, Ρ†Π²Π΅Ρ‚Π΅ ΠΈ Π²Ρ‹Π²ΠΎΠ΄Π΅ Π½Π° экран. Для Π²Ρ‹Π²ΠΎΠ΄Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ функция StretchDIBits (Header: windows.h; Library: gdi32.lib). Π’ эту Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, ΠΏΠΎΠΌΠΈΠΌΠΎ всСго ΠΏΡ€ΠΎΡ‡Π΅Π³ΠΎ, пСрСдаСтся ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅: устройство, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ выводится ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ (Π² ΠΌΠΎΠ΅ΠΌ случаС это консоль Windows), ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ старта отобраТСния ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠΈ, Π΅Π΅ ΡˆΠΈΡ€ΠΈΠ½Π°/высота ΠΈ сама ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Π² Π²ΠΈΠ΄Π΅ Π±ΠΈΡ‚ΠΎΠ²ΠΎΠΉ ΠΊΠ°Ρ€Ρ‚Ρ‹ (bitmap), прСдставлСнной массивом Π±Π°ΠΉΡ‚ΠΎΠ². Битовая ΠΊΠ°Ρ€Ρ‚Π° Π² Π²ΠΈΠ΄Π΅ массива Π±Π°ΠΉΡ‚!

Ѐункция StretchDIBits() Π² Ρ€Π°Π±ΠΎΡ‚Π΅:

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

Под эту Π±ΠΈΡ‚ΠΎΠ²ΡƒΡŽ ΠΊΠ°Ρ€Ρ‚Ρƒ Π·Π°Π±Π»Π°Π³ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ выдСляСтся ΠΏΠ°ΠΌΡΡ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ VirtualAlloc(). Π’ΠΎ Π΅ΡΡ‚ΡŒ рСзСрвируСтся Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΠ΅ количСство Π±Π°ΠΉΡ‚ для хранСния ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎΠ±ΠΎ всСх пиксСлях, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΡ‚ΠΎΠΌ Π±ΡƒΠ΄ΡƒΡ‚ Π²Ρ‹Π²Π΅Π΄Π΅Π½Ρ‹ Π½Π° экран.

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π±ΠΈΡ‚ΠΎΠ²ΠΎΠΉ ΠΊΠ°Ρ€Ρ‚Ρ‹ 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);

Π“Ρ€ΡƒΠ±ΠΎ говоря, битовая ΠΊΠ°Ρ€Ρ‚Π° состоит ΠΈΠ· Π½Π°Π±ΠΎΡ€Π° пиксСлСй. ΠšΠ°ΠΆΠ΄Ρ‹Π΅ Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ Π±Π°ΠΉΡ‚Π° Π² массивС β€” это пиксСль Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ RGB. Один Π±Π°ΠΉΡ‚ Π½Π° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ красного Ρ†Π²Π΅Ρ‚Π°, ΠΎΠ΄ΠΈΠ½ Π±Π°ΠΉΡ‚ Π½Π° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π·Π΅Π»Π΅Π½ΠΎΠ³ΠΎ Ρ†Π²Π΅Ρ‚Π° (G) ΠΈ ΠΎΠ΄ΠΈΠ½ Π±Π°ΠΉΡ‚ Π½Π° синий Ρ†Π²Π΅Ρ‚ (B). Плюс остаСтся ΠΎΠ΄ΠΈΠ½ Π±Π°ΠΉΡ‚ Π½Π° отступ. Π­Ρ‚ΠΈ Ρ‚Ρ€ΠΈ Ρ†Π²Π΅Ρ‚Π° β€” Red/Green/Blue (RGB) β€” ΡΠΌΠ΅ΡˆΠΈΠ²Π°ΡŽΡ‚ΡΡ Π΄Ρ€ΡƒΠ³ с Π΄Ρ€ΡƒΠ³ΠΎΠΌ Π² Ρ€Π°Π·Π½Ρ‹Ρ… пропорциях β€” ΠΈ получаСтся Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ Ρ†Π²Π΅Ρ‚ пиксСля.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ, ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡŽΡΡŒ, ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊ, ΠΈΠ»ΠΈ ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, прСдставлСн числовой ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π΅ΠΉ. ВсС эти ΠΈΠ³Ρ€ΠΎΠ²Ρ‹Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΏΠΎΠΌΠ΅Ρ‰Π°ΡŽΡ‚ΡΡ Π² ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡŽ. И Π·Π°Ρ‚Π΅ΠΌ Ρ€Π°ΡΡΡ‚Π°Π²Π»ΡΡŽΡ‚ΡΡ ΠΏΠΎ ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠΌΡƒ полю, формируя ΠΎΠ΄Π½Ρƒ Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ Ρ‡ΠΈΡΠ»ΠΎΠ²ΡƒΡŽ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ. КаТдоС число Π² ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π΅ я сопоставил с ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌ Ρ†Π²Π΅Ρ‚ΠΎΠΌ. НапримСр, числу 8 соотвСтствуСт синий Ρ†Π²Π΅Ρ‚, числу 9 β€” ΠΆΠ΅Π»Ρ‚Ρ‹ΠΉ, числу 10 β€” Ρ‚Π΅ΠΌΠ½ΠΎ-сСрый Ρ†Π²Π΅Ρ‚ ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρƒ нас ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»Π°ΡΡŒ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π° ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠ³ΠΎ поля, Π³Π΄Π΅ ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ число β€” это ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ Ρ†Π²Π΅Ρ‚.

Π˜Ρ‚Π°ΠΊ, ΠΌΡ‹ ΠΈΠΌΠ΅Π΅ΠΌ Ρ‡ΠΈΡΠ»ΠΎΠ²ΡƒΡŽ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ всСго ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠ³ΠΎ поля с ΠΎΠ΄Π½ΠΎΠΉ стороны ΠΈ Π±ΠΈΡ‚ΠΎΠ²ΡƒΡŽ ΠΊΠ°Ρ€Ρ‚Ρƒ для Π²Ρ‹Π²ΠΎΠ΄Π° изобраТСния с Π΄Ρ€ΡƒΠ³ΠΎΠΉ. Пока Ρ‡Ρ‚ΠΎ битовая ΠΊΠ°Ρ€Ρ‚Π° «пустая» β€” Π² Π½Π΅ΠΉ Π΅Ρ‰Π΅ Π½Π΅Ρ‚ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ пиксСлях Π½ΡƒΠΆΠ½ΠΎΠ³ΠΎ Ρ†Π²Π΅Ρ‚Π°. Π­Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚, Ρ‡Ρ‚ΠΎ послСдним этапом Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π±ΠΈΡ‚ΠΎΠ²ΠΎΠΉ ΠΊΠ°Ρ€Ρ‚Ρ‹ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠ΅ΠΉ ΠΎ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ пиксСлС Π½Π° основС числовой ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠ³ΠΎ поля. Наглядный ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρ‚Π°ΠΊΠΎΠ³ΠΎ прСобразования Π½Π° ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ΅ Π½ΠΈΠΆΠ΅.

DevOps’Π½Ρ‹ΠΉ C++ ΠΈ «ΠΊΡƒΡ…ΠΎΠ½Π½Ρ‹Π΅ Π²ΠΎΠΉΠ½Ρ‹», ΠΈΠ»ΠΈ Как я Π½Π°Ρ‡Π°Π» ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΈΠ³Ρ€Ρ‹ Π²ΠΎ врСмя Π΅Π΄Ρ‹
ΠŸΡ€ΠΈΠΌΠ΅Ρ€ заполнСния Π±ΠΈΡ‚ΠΎΠ²ΠΎΠΉ ΠΊΠ°Ρ€Ρ‚Ρ‹ (Pixel matrix) ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠ΅ΠΉ Π½Π° основС числовой ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ (Digital matrix) ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠ³ΠΎ поля (индСксы Ρ†Π²Π΅Ρ‚ΠΎΠ² Π½Π΅ ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡŽΡ‚ с индСксами Π² ΠΈΠ³Ρ€Π΅)

Π’Π°ΠΊΠΆΠ΅ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡŽ кусок Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° ΠΈΠ· ΠΈΠ³Ρ€Ρ‹. ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ colorIndex Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ Ρ†ΠΈΠΊΠ»Π° присваиваСтся Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ (индСкс Ρ†Π²Π΅Ρ‚Π°) ΠΈΠ· числовой ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠ³ΠΎ поля (mainDigitalMatrix). Π—Π°Ρ‚Π΅ΠΌ Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ color записываСтся сам Ρ†Π²Π΅Ρ‚ Π½Π° основС индСкса. Π”Π°Π»ΡŒΡˆΠ΅ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹ΠΉ Ρ†Π²Π΅Ρ‚ раздСляСтся Π½Π° ΡΠΎΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ красного, Π·Π΅Π»Π΅Π½ΠΎΠ³ΠΎ ΠΈ синСго ΠΎΡ‚Ρ‚Π΅Π½ΠΊΠ° (RGB). И вмСстС с отступом (pixelPadding) Ρ€Π°Π· Π·Π° Ρ€Π°Π·ΠΎΠΌ эта информация записываСтся Π² пиксСль, формируя Ρ†Π²Π΅Ρ‚Π½ΠΎΠ΅ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π² Π±ΠΈΡ‚ΠΎΠ²ΠΎΠΉ ΠΊΠ°Ρ€Ρ‚Π΅.

Π’ ΠΊΠΎΠ΄Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ ΠΈ ΠΏΠΎΠ±ΠΈΡ‚ΠΎΠ²Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ слоТны для понимания. Π’Π°ΠΊ Ρ‡Ρ‚ΠΎ ΡΠΎΠ²Π΅Ρ‚ΡƒΡŽ Π΅Ρ‰Π΅ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ Π³Π΄Π΅-Ρ‚ΠΎ ΠΏΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ Ρ‚Π°ΠΊΠΈΠ΅ конструкции.

Π—Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π±ΠΈΡ‚ΠΎΠ²ΠΎΠΉ ΠΊΠ°Ρ€Ρ‚Ρ‹ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠ΅ΠΉ Π½Π° основС числовой ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠ³ΠΎ поля:

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

По описанному Π²Ρ‹ΡˆΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρƒ Π² ΠΈΠ³Ρ€Π΅ Crazy Tanks формируСтся ΠΎΠ΄Π½Π° ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° (ΠΊΠ°Π΄Ρ€) ΠΈ выводится Π½Π° экран Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Draw(). ПослС рСгистрации наТатия клавиш Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Input() ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ΠΈΡ… ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Logic() формируСтся новая ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° (ΠΊΠ°Π΄Ρ€). ΠŸΡ€Π°Π²Π΄Π°, ΠΈΠ³Ρ€ΠΎΠ²Ρ‹Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΡƒΠΆΠ΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΎΠ΅ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠΌ ΠΏΠΎΠ»Π΅ ΠΈ, соотвСтствСнно, ΠΎΡ‚Ρ€ΠΈΡΠΎΠ²Ρ‹Π²Π°ΡŽΡ‚ΡΡ Π² Π΄Ρ€ΡƒΠ³ΠΎΠΌ мСстС. Π’Π°ΠΊ ΠΈ происходит анимация (Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅).

По ΠΈΠ΄Π΅Π΅ (Ссли Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ Π·Π°Π±Ρ‹Π»), ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠ³ΠΎ Ρ†ΠΈΠΊΠ»Π° ΠΈΠ· ΠΏΠ΅Ρ€Π²ΠΎΠΉ ΠΈΠ³Ρ€Ρ‹ (Β«Π—ΠΌΠ΅ΠΉΠΊΠ°Β») ΠΈ систСмы Π²Ρ‹Π²ΠΎΠ΄Π° пиксСлСй Π½Π° экран ΠΈΠ· Π²Ρ‚ΠΎΡ€ΠΎΠΉ ΠΈΠ³Ρ€Ρ‹ (Β«Π’Π°Π½Ρ‡ΠΈΠΊΠΈΒ») β€” это всС, Ρ‡Ρ‚ΠΎ Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π»ΡŽΠ±ΡƒΡŽ свою 2D-ΠΈΠ³Ρ€Ρƒ ΠΏΠΎΠ΄ Windows. Π‘Π΅Π· Π·Π²ΡƒΠΊΠ°! πŸ˜‰ ΠžΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΆΠ΅ части β€” просто ΠΏΠΎΠ»Π΅Ρ‚ Ρ„Π°Π½Ρ‚Π°Π·ΠΈΠΈ.

ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, ΠΈΠ³Ρ€Π° Β«Π’Π°Π½Ρ‡ΠΈΠΊΠΈΒ» сконструирована Π³ΠΎΡ€Π°Π·Π΄ΠΎ слоТнСС, Ρ‡Π΅ΠΌ Β«Π—ΠΌΠ΅ΠΉΠΊΠ°Β». Π― использовал ΡƒΠΆΠ΅ язык C++, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ описывал Ρ€Π°Π·Π½Ρ‹Π΅ ΠΈΠ³Ρ€ΠΎΠ²Ρ‹Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ классами. Π‘ΠΎΠ·Π΄Π°Π» ΡΠΎΠ±ΡΡ‚Π²Π΅Π½Π½ΡƒΡŽ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡŽ β€” ΠΊΠΎΠ΄ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π² headers/Box.h. ΠšΡΡ‚Π°Ρ‚ΠΈ, Π² ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ, скорСС всСго, Π΅ΡΡ‚ΡŒ ΡƒΡ‚Π΅Ρ‡ΠΊΠ° памяти (memory leak). Использовал ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ. Π Π°Π±ΠΎΡ‚Π°Π» с ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ. Π”ΠΎΠ»ΠΆΠ΅Π½ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΌΠ½Π΅ ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΠΌΠΎΠ³Π»Π° ΠΊΠ½ΠΈΠ³Π° Beginning C++ Through Game Programming. Π­Ρ‚ΠΎ ΠΎΡ‚Π»ΠΈΡ‡Π½Ρ‹ΠΉ старт для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ… Π² C++. Она нСбольшая, интСрСсная ΠΈ Π½Π΅ΠΏΠ»ΠΎΡ…ΠΎ ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Π½Π°.

На Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ этой ΠΈΠ³Ρ€Ρ‹ ΡƒΡˆΠ»ΠΎ Π³Π΄Π΅-Ρ‚ΠΎ ΠΏΠΎΠ»Π³ΠΎΠ΄Π°. Писал, Π² основном, Π²ΠΎ врСмя ΠΎΠ±Π΅Π΄Π° ΠΈ пСрСкусов Π½Π° Ρ€Π°Π±ΠΎΡ‚Π΅. Бадился Π½Π° офисной ΠΊΡƒΡ…Π½Π΅, Ρ‚ΠΎΠΏΡ‚Π°Π» Ρ…Π°Ρ€Ρ‡ΠΈ ΠΈ писал ΠΊΠΎΠ΄. Или ΠΆΠ΅ Π·Π° ΡƒΠΆΠΈΠ½ΠΎΠΌ Π΄ΠΎΠΌΠ°. Π’ΠΎΡ‚ ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈΡΡŒ Ρƒ мСня Ρ‚Π°ΠΊΠΈΠ΅ Β«ΠΊΡƒΡ…ΠΎΠ½Π½Ρ‹Π΅ Π²ΠΎΠΉΠ½Ρ‹Β». Как всСгда, я Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ использовал Π±Π»ΠΎΠΊΠ½ΠΎΡ‚, ΠΈ всС ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ ΡˆΡ‚ΡƒΠΊΠΈ Ρ€ΠΎΠΆΠ΄Π°Π»ΠΈΡΡŒ ΠΈΠΌΠ΅Π½Π½ΠΎ Π² Π½Π΅ΠΌ.

Π’ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠ΅ практичСской части ΠΏΡƒΠ»ΡŒΠ½Ρƒ нСсколько сканов ΠΌΠΎΠ΅Π³ΠΎ Π±Π»ΠΎΠΊΠ½ΠΎΡ‚Π°. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΈΠΌΠ΅Π½Π½ΠΎ я записывал, рисовал, считал, проСктировал…

DevOps’Π½Ρ‹ΠΉ C++ ΠΈ «ΠΊΡƒΡ…ΠΎΠ½Π½Ρ‹Π΅ Π²ΠΎΠΉΠ½Ρ‹», ΠΈΠ»ΠΈ Как я Π½Π°Ρ‡Π°Π» ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΈΠ³Ρ€Ρ‹ Π²ΠΎ врСмя Π΅Π΄Ρ‹
ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ изобраТСния Ρ‚Π°Π½ΠΊΠΎΠ². И ΠΎΡ‚ΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π΅ΠΈ Ρ‚ΠΎΠ³ΠΎ, сколько пиксСлСй ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ‚Π°Π½ΠΊ Π΄ΠΎΠ»ΠΆΠ΅ Π·Π°Π½ΠΈΠΌΠ°Ρ‚ΡŒ Π½Π° экранС

DevOps’Π½Ρ‹ΠΉ C++ ΠΈ «ΠΊΡƒΡ…ΠΎΠ½Π½Ρ‹Π΅ Π²ΠΎΠΉΠ½Ρ‹», ΠΈΠ»ΠΈ Как я Π½Π°Ρ‡Π°Π» ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΈΠ³Ρ€Ρ‹ Π²ΠΎ врСмя Π΅Π΄Ρ‹
ΠŸΡ€ΠΎΡΡ‡Π΅Ρ‚ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° ΠΈ Ρ„ΠΎΡ€ΠΌΡƒΠ» ΠΏΠΎ ΠΎΠ±ΠΎΡ€ΠΎΡ‚Ρƒ Ρ‚Π°Π½ΠΊΠ° Π²ΠΎΠΊΡ€ΡƒΠ³ своСй оси

DevOps’Π½Ρ‹ΠΉ C++ ΠΈ «ΠΊΡƒΡ…ΠΎΠ½Π½Ρ‹Π΅ Π²ΠΎΠΉΠ½Ρ‹», ΠΈΠ»ΠΈ Как я Π½Π°Ρ‡Π°Π» ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΈΠ³Ρ€Ρ‹ Π²ΠΎ врСмя Π΅Π΄Ρ‹
Π‘Ρ…Π΅ΠΌΠ° ΠΌΠΎΠ΅ΠΉ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ (Ρ‚ΠΎΠΉ самой, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π΅ΡΡ‚ΡŒ memory leak, скорСС всСго). ΠšΠΎΠ»Π»Π΅Π³ΠΊΡ†ΠΈΡ создана ΠΏΠΎ Ρ‚ΠΈΠΏΡƒ Linked List

DevOps’Π½Ρ‹ΠΉ C++ ΠΈ «ΠΊΡƒΡ…ΠΎΠ½Π½Ρ‹Π΅ Π²ΠΎΠΉΠ½Ρ‹», ΠΈΠ»ΠΈ Как я Π½Π°Ρ‡Π°Π» ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΈΠ³Ρ€Ρ‹ Π²ΠΎ врСмя Π΅Π΄Ρ‹
А это Ρ‚Ρ‰Π΅Ρ‚Π½Ρ‹Π΅ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠΈ ΠΏΡ€ΠΈΠΊΡ€ΡƒΡ‚ΠΈΡ‚ΡŒ ΠΊ ΠΈΠ³Ρ€Π΅ искусствСнный ΠΈΠ½Ρ‚Π΅Π»Π»Π΅ΠΊΡ‚

ВСория

Β«Π”Π°ΠΆΠ΅ ΠΏΡƒΡ‚ΡŒ Π² тысячу миль начинаСтся с ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ шага» (ДрСвнСкитайская ΠΌΡƒΠ΄Ρ€ΠΎΡΡ‚ΡŒ)

ΠŸΠ΅Ρ€Π΅ΠΉΠ΄Π΅ΠΌ ΠΎΡ‚ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΈ ΠΊ Ρ‚Π΅ΠΎΡ€ΠΈΠΈ! Как ΠΆΠ΅ Π½Π°ΠΉΡ‚ΠΈ врСмя Π½Π° своС Ρ…ΠΎΠ±Π±ΠΈ?

  1. ΠžΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ, Ρ‡Π΅Π³ΠΎ Π²Ρ‹ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ (ΡƒΠ²Ρ‹, это самоС слоТноС).
  2. Π Π°ΡΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚Ρ‹.
  3. ΠŸΠΎΠΆΠ΅Ρ€Ρ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ всСм «лишним» Π² ΡƒΠ³ΠΎΠ΄Ρƒ Π²Ρ‹ΡΡˆΠΈΠΌ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚Π°ΠΌ.
  4. Π”Π²ΠΈΠ³Π°Ρ‚ΡŒΡΡ ΠΊ цСлям ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ дСнь.
  5. НС ΠΆΠ΄Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ появится Π΄Π²Π°-Ρ‚Ρ€ΠΈ часа свободного Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π½Π° Ρ…ΠΎΠ±Π±ΠΈ.

Π‘ ΠΎΠ΄Π½ΠΎΠΉ стороны, Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ, Ρ‡Π΅Π³ΠΎ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΈ Ρ€Π°ΡΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚Ρ‹. А с Π΄Ρ€ΡƒΠ³ΠΎΠΉ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΠΎΡ‚ΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ ΠΎΡ‚ ΠΊΠ°ΠΊΠΈΡ…-Ρ‚ΠΎ Π΄Π΅Π»/ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² Π² ΠΏΠΎΠ»ΡŒΠ·Ρƒ этих ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ΠΎΠ². Π”Ρ€ΡƒΠ³ΠΈΠΌΠΈ словами, придСтся ΠΏΠΎΠΆΠ΅Ρ€Ρ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ всСм «лишним». Π― Π³Π΄Π΅-Ρ‚ΠΎ ΡΠ»Ρ‹ΡˆΠ°Π», Ρ‡Ρ‚ΠΎ Π² ΠΆΠΈΠ·Π½ΠΈ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ максимум Ρ‚Ρ€ΠΈ основных занятия. Π’ΠΎΠ³Π΄Π° Π²Ρ‹ смоТСтС ΠΈΠΌΠΈ Π·Π°Π½ΠΈΠΌΠ°Ρ‚ΡŒΡΡ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ качСствСнно. А Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρ‹/направлСния Π½Π°Ρ‡Π½ΡƒΡ‚ банально ΠΏΠ΅Ρ€Π΅Π³Ρ€ΡƒΠΆΠ°Ρ‚ΡŒ. Но это всС, Π½Π°Π²Π΅Ρ€Π½ΠΎΠ΅, ΡΡƒΠ±ΡŠΠ΅ΠΊΡ‚ΠΈΠ²Π½ΠΎ ΠΈ ΠΈΠ½Π΄ΠΈΠ²ΠΈΠ΄ΡƒΠ°Π»ΡŒΠ½ΠΎ.

БущСствуСт Π½Π΅ΠΊΠΎΠ΅ Π·ΠΎΠ»ΠΎΡ‚ΠΎΠ΅ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ: never have a 0% day! О Π½Π΅ΠΌ я ΡƒΠ·Π½Π°Π» Π² ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ indie-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°. Если Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚Π΅ Π½Π°Π΄ ΠΊΠ°ΠΊΠΈΠΌ-Ρ‚ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠΌ, Ρ‚ΠΎ Π΄Π΅Π»Π°ΠΉΡ‚Π΅ ΠΏΠΎ Π½Π΅ΠΌΡƒ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ дСнь. И Π½Π΅Π²Π°ΠΆΠ½ΠΎ, сколько Π²Ρ‹ сдСлаСтС. ΠΠ°ΠΏΠΈΡˆΠΈΡ‚Π΅ ΠΎΠ΄Π½ΠΎ слово ΠΈΠ»ΠΈ ΠΎΠ΄Π½Ρƒ строчку ΠΊΠΎΠ΄Π°, посмотритС ΠΎΠ΄Π½ΠΎ ΠΎΠ±ΡƒΡ‡Π°ΡŽΡ‰Π΅Π΅ Π²ΠΈΠ΄Π΅ΠΎ ΠΈΠ»ΠΈ Π·Π°Π±Π΅ΠΉΡ‚Π΅ ΠΎΠ΄ΠΈΠ½ гвоздь Π² доску β€” просто сдСлайтС Ρ…ΠΎΡ‚ΡŒ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ. Π‘Π°ΠΌΠΎΠ΅ слоТноС β€” это Π½Π°Ρ‡Π°Ρ‚ΡŒ. Как Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π°Ρ‡Π½Π΅Ρ‚Π΅, Ρ‚ΠΎ навСрняка сдСлаСтС Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ большС, Ρ‡Π΅ΠΌ Ρ…ΠΎΡ‚Π΅Π»ΠΈ. Π’Π°ΠΊ Π²Ρ‹ Π±ΡƒΠ΄Π΅Ρ‚Π΅ постоянно Π΄Π²ΠΈΠ³Π°Ρ‚ΡŒΡΡ ΠΊ своСй Ρ†Π΅Π»ΠΈ ΠΈ, ΠΏΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅, ΠΎΡ‡Π΅Π½ΡŒ быстро. Π’Π΅Π΄ΡŒ основной Ρ‚ΠΎΡ€ΠΌΠΎΠ· всСх Π΄Π΅Π» β€” это прокрастинация.

И Π²Π°ΠΆΠ½ΠΎ ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π½Π΅ стоит Π½Π΅Π΄ΠΎΠΎΡ†Π΅Π½ΠΈΠ²Π°Ρ‚ΡŒ ΠΈ ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ свободныС Β«ΠΎΠΏΠΈΠ»ΠΊΠΈΒ» Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π² 5, 10, 15 ΠΌΠΈΠ½ΡƒΡ‚, ΠΆΠ΄Π°Ρ‚ΡŒ ΠΊΠ°ΠΊΠΈΡ…-Ρ‚ΠΎ Π±ΠΎΠ»ΡŒΡˆΠΈΡ… Β«Π±Ρ€Π΅Π²Π΅Π½Β» Π΄Π»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ Π² час ΠΈΠ»ΠΈ Π΄Π²Π°. Π‘Ρ‚ΠΎΠΈΡ‚Π΅ Π² ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ? ΠŸΡ€ΠΎΠ΄ΡƒΠΌΠ°ΠΉΡ‚Π΅ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ ΠΏΠΎ Π²Π°ΡˆΠ΅ΠΌΡƒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρƒ. ΠŸΠΎΠ΄Π½ΠΈΠΌΠ°Π΅Ρ‚Π΅ΡΡŒ ΠΏΠΎ эскалатору? Π—Π°ΠΏΠΈΡˆΠΈΡ‚Π΅ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π² Π±Π»ΠΎΠΊΠ½ΠΎΡ‚. Π•Π΄ΠΈΡ‚Π΅ Π² автобусС? ΠžΡ‚Π»ΠΈΡ‡Π½ΠΎ, ΠΏΡ€ΠΎΡ‡Ρ‚ΠΈΡ‚Π΅ ΠΊΠ°ΠΊΡƒΡŽ-Ρ‚ΠΎ ΡΡ‚Π°Ρ‚ΡŒΡŽ. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΊΠ°ΠΆΠ΄ΡƒΡŽ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ. Π₯Π²Π°Ρ‚ΠΈΡ‚ ΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠΎΡ‚ΠΈΠΊΠΎΠ² ΠΈ собачСк Π½Π° YouTube! НС засоряйтС сСбС ΠΌΠΎΠ·Π³!

И послСднСС. Если, ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Π² эту ΡΡ‚Π°Ρ‚ΡŒΡŽ, Π²Π°ΠΌ ΠΏΠΎΠ½Ρ€Π°Π²ΠΈΠ»Π°ΡΡŒ идСя создания ΠΈΠ³Ρ€ Π±Π΅Π· использования ΠΈΠ³Ρ€ΠΎΠ²Ρ‹Ρ… Π΄Π²ΠΈΠΆΠΊΠΎΠ², Ρ‚ΠΎ Π·Π°ΠΏΠΎΠΌΠ½ΠΈΡ‚Π΅ имя Casey Muratori. Π£ этого парня Π΅ΡΡ‚ΡŒ сайт. Π’ сСкции Β«watch -> PREVIOUS EPISODESΒ» Π²Ρ‹ Π½Π°ΠΉΠ΄Π΅Ρ‚Π΅ чудСсныС бСсплатныС Π²ΠΈΠ΄Π΅ΠΎΡƒΡ€ΠΎΠΊΠΈ ΠΏΠΎ созданию ΠΏΡ€ΠΎΡ„Π΅ΡΡΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠΉ ΠΈΠ³Ρ€Ρ‹ с полнСйшСго нуля. Π—Π° ΠΏΡΡ‚ΡŒ ΡƒΡ€ΠΎΠΊΠΎΠ² Intro to C for Windows Π²Ρ‹, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΡƒΠ·Π½Π°Π΅Ρ‚Π΅ большС, Ρ‡Π΅ΠΌ Π·Π° ΠΏΡΡ‚ΡŒ Π»Π΅Ρ‚ обучСния Π² унивСрситСтС (ΠΎΠ± этом ΠΊΡ‚ΠΎ-Ρ‚ΠΎ написал Π² коммСнтариях ΠΏΠΎΠ΄ Π²ΠΈΠ΄Π΅ΠΎ).

Π’Π°ΠΊΠΆΠ΅ КСйси ΠΎΠ±ΡŠΡΡΠ½ΡΠ΅Ρ‚, Ρ‡Ρ‚ΠΎ, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π² свой собствСнный ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠΉ Π΄Π²ΠΈΠΆΠΎΠΊ, Π²Ρ‹ Π±ΡƒΠ΄Π΅Ρ‚Π΅ Π»ΡƒΡ‡ΡˆΠ΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ Π»ΡŽΠ±Ρ‹Π΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ Π΄Π²ΠΈΠΆΠΊΠΈ. Π’ ΠΌΠΈΡ€Π΅ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΎΠ², Π³Π΄Π΅ всС ΠΏΡ‹Ρ‚Π°ΡŽΡ‚ΡΡ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, Π²Ρ‹ Π½Π°ΡƒΡ‡ΠΈΡ‚Π΅ΡΡŒ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ, Π° Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ. ΠžΡΠΎΠ·Π½Π°Π΅Ρ‚Π΅ саму ΠΏΡ€ΠΈΡ€ΠΎΠ΄Ρƒ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ΠΎΠ². А Ρ‚Π°ΠΊΠΆΠ΅ станСтС Π³ΠΎΡ€Π°Π·Π΄ΠΎ Π±ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΠ»ΠΊΠΎΠ²Ρ‹ΠΌ ΠΈ Π·Ρ€Π΅Π»Ρ‹ΠΌ программистом β€” ΠΏΡ€ΠΎΡ„ΠΈ.

Π£Π΄Π°Ρ‡ΠΈ Π²Π°ΠΌ Π½Π° Π²Ρ‹Π±Ρ€Π°Π½Π½ΠΎΠΌ ΠΏΡƒΡ‚ΠΈ! И Π΄Π°Π²Π°ΠΉΡ‚Π΅ сдСлаСм ΠΌΠΈΡ€ ΠΏΡ€ΠΎΡ„Π΅ΡΡΠΈΠΎΠ½Π°Π»ΡŒΠ½Π΅ΠΉ.

Автор: Π“Ρ€Π°Π½ΠΊΠΈΠ½ АндрСй, DevOps



Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: habr.com