{"id":381617,"date":"2024-06-29T03:46:06","date_gmt":"2024-06-29T03:46:06","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=381617"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=381617","title":{"rendered":"<span>\u041a\u0430\u043a \u044f \u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043b \u0438\u0433\u0440\u0443 \u0441 Visual Basic 6 \u043d\u0430 \u0421++, \u0441\u0434\u0435\u043b\u0430\u0432 \u0435\u0451 \u043a\u0440\u043e\u0441\u0441-\u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0435\u043d\u043d\u043e\u0439<\/span>"},"content":{"rendered":"<div><!--[--><!--]--><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p>\u0412\u0441\u0435\u043c \u0434\u043e\u0431\u0440\u043e\u0433\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0441\u0443\u0442\u043e\u043a! \u042d\u0442\u043e \u043c\u043e\u044f \u0438\u0441\u0442\u043e\u0440\u0438\u044f \u043e \u0442\u043e\u043c, \u043a\u0430\u043a \u044f \u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043b \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u043a\u043e\u0434 \u043e\u0434\u043d\u043e\u0439 \u0444\u0430\u043d\u0430\u0442\u0441\u043a\u043e\u0439 Windows-\u0438\u0433\u0440\u044b \u043e \u041c\u0430\u0440\u0438\u043e \u0441 Visual Basic 6 \u043d\u0430 C++, \u0438 \u0441 \u043a\u0430\u043a\u0438\u043c\u0438 \u0442\u0440\u0443\u0434\u043d\u043e\u0441\u0442\u044f\u043c\u0438 \u044f \u0441\u0442\u043e\u043b\u043a\u043d\u0443\u043b\u0441\u044f \u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043f\u043e\u0440\u0442\u0430.<\/p>\n<h2>\u041d\u0435\u043c\u043d\u043e\u0433\u043e \u043e\u0431 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u044c\u043d\u043e\u0439 \u0438\u0433\u0440\u0435<\/h2>\n<p><strong>Super Mario Bros. X<\/strong> (\u0438\u043b\u0438 \u043a\u043e\u0440\u043e\u0442\u043a\u043e SMBX) &#8212; \u044d\u0442\u043e \u0444\u0430\u043d\u0430\u0442\u0441\u043a\u0430\u044f \u0438\u0433\u0440\u0430 \u043f\u043e \u043c\u043e\u0442\u0438\u0432\u0430\u043c \u0432\u0441\u0435\u043b\u0435\u043d\u043d\u043e\u0439 \u041c\u0430\u0440\u0438\u043e, \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u0430\u044f \u0432 2009 \u0433\u043e\u0434\u0443 \u0430\u043c\u0435\u0440\u0438\u043a\u0430\u043d\u0446\u0435\u043c \u042d\u043d\u0434\u0440\u044e \u0421\u043f\u0438\u043d\u043a\u0441\u043e\u043c (\u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u0437\u0436\u0435 \u043f\u0440\u043e\u0441\u043b\u0430\u0432\u0438\u043b\u0441\u044f \u043a\u0430\u043a \u0441\u043e\u0437\u0434\u0430\u0442\u0435\u043b\u044c \u0438\u0433\u0440\u044b Terraria). \u042d\u0442\u0430 \u0444\u0430\u043d\u0430\u0442\u0441\u043a\u0430\u044f \u0438\u0433\u0440\u0430 \u0431\u044b\u043b\u0430 \u0435\u0433\u043e \u043f\u0435\u0440\u0432\u044b\u043c \u043e\u043f\u044b\u0442\u043e\u043c \u0432 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u0438\u0433\u0440. \u0412 \u043d\u0435\u0439 \u043e\u043d \u043f\u043e\u0437\u043d\u0430\u0432\u0430\u043b \u0430\u0437\u044b \u0438\u0433\u0440\u043e\u0441\u0442\u0440\u043e\u044f. \u0418\u0433\u0440\u0430 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u043b\u0430\u0441\u044c \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c Visual Basic 6.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/204\/b12\/71a\/204b1271adfcb9b51051852d03de0afc.png\" alt=\"\u0413\u043b\u0430\u0432\u043d\u043e\u0435 \u043c\u0435\u043d\u044e \u0438\u0433\u0440\u044b Super Mario Bros. X \u0432\u0435\u0440\u0441\u0438\u0438 1.3\" title=\"\u0413\u043b\u0430\u0432\u043d\u043e\u0435 \u043c\u0435\u043d\u044e \u0438\u0433\u0440\u044b Super Mario Bros. X \u0432\u0435\u0440\u0441\u0438\u0438 1.3\" width=\"816\" height=\"638\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/204\/b12\/71a\/204b1271adfcb9b51051852d03de0afc.png\"\/><\/p>\n<div><figcaption>\u0413\u043b\u0430\u0432\u043d\u043e\u0435 \u043c\u0435\u043d\u044e \u0438\u0433\u0440\u044b Super Mario Bros. X \u0432\u0435\u0440\u0441\u0438\u0438 1.3<\/figcaption><\/div>\n<\/figure>\n<p>\u0412 \u0438\u0433\u0440\u0435 \u0438\u043c\u0435\u0435\u0442\u0441\u044f \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0438\u0433\u0440\u0430\u0442\u044c \u0437\u0430 \u043e\u0434\u043d\u043e\u0433\u043e \u0438\u0437 \u043f\u044f\u0442\u0435\u0440\u044b\u0445 \u043f\u0435\u0440\u0441\u043e\u043d\u0430\u0436\u0435\u0439: \u041c\u0430\u0440\u0438\u043e, \u041b\u0443\u0438\u0434\u0436\u0438, \u041f\u0438\u0447, \u0422\u043e\u0430\u0434 \u0438 \u041b\u0438\u043d\u043a. \u041c\u043e\u0436\u043d\u043e \u0438\u0433\u0440\u0430\u0442\u044c \u0432 \u043e\u0434\u0438\u043d\u043e\u0447\u043a\u0443, \u043c\u043e\u0436\u043d\u043e \u0438\u0433\u0440\u0430\u0442\u044c \u0432\u0434\u0432\u043e\u0451\u043c \u0432 \u043a\u043e\u043e\u043f\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u043e\u043c \u0440\u0435\u0436\u0438\u043c\u0435. \u0422\u0430\u043a\u0436\u0435 \u0438\u043c\u0435\u0435\u0442\u0441\u044f \u0440\u0435\u0436\u0438\u043c \u0431\u0438\u0442\u0432\u044b, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0438\u0433\u0440\u043e\u043a\u0438 \u0434\u043e\u043b\u0436\u043d\u044b \u043f\u043e\u0431\u0438\u0442\u044c \u0434\u0440\u0443\u0433 \u0434\u0440\u0443\u0433\u0430, \u043f\u043e\u043b\u044c\u0437\u0443\u044f\u0441\u044c \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u043c\u0438 \u043f\u043e\u0434\u0440\u0443\u0447\u043d\u044b\u043c\u0438 \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430\u043c\u0438. \u0421\u0430\u043c\u0430 \u0438\u0433\u0440\u0430 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043d\u0435\u043a\u0438\u043c \u043f\u043e\u0434\u043e\u0431\u0438\u0435\u043c \u043f\u0435\u0441\u043e\u0447\u043d\u0438\u0446\u044b \u0434\u043b\u044f \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u0430, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0438\u0433\u0440\u043e\u043a\u0438 \u043c\u043e\u0433\u0443\u0442 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u0441\u0432\u043e\u0438 \u0443\u0440\u043e\u0432\u043d\u0438 \u0438 \u0446\u0435\u043b\u044b\u0435 \u044d\u043f\u0438\u0437\u043e\u0434\u044b, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u0432\u043e \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u043e\u043c \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0435. \u0422\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c \u0432 \u0438\u0433\u0440\u0443 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 \u0440\u0435\u0441\u0443\u0440\u0441\u044b (\u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0438 \u0438 \u043c\u0443\u0437\u044b\u043a\u0443).<\/p>\n<p>\u0414\u0430\u0436\u0435 \u043d\u0435 \u0441\u043c\u043e\u0442\u0440\u044f \u043d\u0430 \u043f\u043e\u043b\u043d\u043e\u0435 \u043f\u0440\u0435\u043a\u0440\u0430\u0449\u0435\u043d\u0438\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0438\u0433\u0440\u044b \u0432 2011 \u0433\u043e\u0434\u0443, \u043e\u043d\u0430 \u0431\u044b\u043b\u0430 \u0432\u043e\u0441\u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0430, \u0438 \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u043b\u0430 \u0448\u0438\u0440\u043e\u043a\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0430\u0442\u044c\u0441\u044f \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u043e\u043c. \u0418\u0433\u0440\u0430 \u0442\u0430\u043a\u0436\u0435 \u043f\u0440\u0438\u0432\u043b\u0435\u043a\u043b\u0430 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432-\u044d\u043d\u0442\u0443\u0437\u0438\u0430\u0441\u0442\u043e\u0432 \u0438 \u0445\u0430\u043a\u0435\u0440\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u043b\u0438 \u0434\u043b\u044f \u043d\u0435\u0451 \u0432\u0441\u043f\u043e\u043c\u043e\u0433\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0434\u0435\u043b\u0430\u043b\u0438 \u043f\u043e\u043f\u044b\u0442\u043a\u0438 \u043c\u043e\u0434\u0438\u0444\u0438\u0446\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438 \u0440\u0430\u0441\u0448\u0438\u0440\u0438\u0442\u044c \u0438\u0433\u0440\u0443. \u0421\u0430\u043c\u044b\u043c\u0438 \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b\u043c\u0438 \u0438\u0437 \u043d\u0438\u0445 \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u043d\u0430\u0431\u043e\u0440 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0438\u0437 \u0442\u0443\u043b\u043a\u0438\u0442\u0430 Moondust Project (\u0438\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u043d\u0430\u0437\u044b\u0432\u0430\u0432\u0448\u0438\u043c\u0441\u044f PGE Project), \u0430 \u0442\u0430\u043a\u0436\u0435, \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 LunaLua (\u0438\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u0430\u044f \u043a\u0430\u043a LunaDll), \u0440\u0430\u0441\u0448\u0438\u0440\u044f\u044e\u0449\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b \u0438\u0433\u0440\u044b \u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u043e\u043c dll-\u0438\u043d\u044a\u0435\u043a\u0446\u0438\u0438.<\/p>\n<p>\u0418\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u043a\u043e\u0434 \u0438\u0433\u0440\u044b \u0434\u043e\u043b\u0433\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u0431\u044b\u043b \u0437\u0430\u043a\u0440\u044b\u0442\u044b\u043c. \u041e\u0434\u043d\u0430\u043a\u043e, \u0432\u0441\u0451 \u0438\u0437\u043c\u0435\u043d\u0438\u043b\u043e\u0441\u044c, \u043a\u043e\u0433\u0434\u0430 2 \u0444\u0435\u0432\u0440\u0430\u043b\u044f 2020 \u0433\u043e\u0434\u0430 \u043d\u0430 \u0444\u043e\u0440\u0443\u043c\u0435 \u0431\u044b\u043b\u0438 \u043e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043d\u044b \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0435 \u043a\u043e\u0434\u044b \u0438\u0433\u0440\u044b.<\/p>\n<h2>\u041d\u0430\u0447\u0430\u043b\u043e \u0440\u0430\u0431\u043e\u0442<\/h2>\n<p>\u0421\u043b\u0443\u0445\u0438 \u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0439 \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438 \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0445 \u043a\u043e\u0434\u043e\u0432 \u0438\u0433\u0440\u044b \u0431\u044b\u043b\u0438 \u0435\u0449\u0451 \u0432 2016\u043c \u0433\u043e\u0434\u0443, \u043e\u0434\u043d\u0430\u043a\u043e, \u044d\u0442\u043e\u0433\u043e \u043d\u0435 \u043f\u0440\u043e\u0438\u0437\u043e\u0448\u043b\u043e. \u042d\u0442\u043e \u0434\u0430\u043b\u043e \u043c\u043d\u0435 \u0438\u0434\u0435\u044e \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u0430\u0442\u044c \u0438\u0433\u0440\u0443 \u043d\u0430 C++, \u0447\u0442\u043e\u0431\u044b \u0441 \u043d\u0435\u0439 \u0443\u0434\u043e\u0431\u043d\u043e \u0431\u044b\u043b\u043e \u0432\u043e\u0437\u0438\u0442\u044c\u0441\u044f. \u041d\u043e, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443, \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u043e\u0432 \u043d\u0435 \u0431\u044b\u043b\u043e, \u0438\u0434\u0435\u044f \u0441\u043b\u0435\u0433\u043b\u0430 \u0432 \u0434\u043e\u043b\u0433\u0438\u0439 \u044f\u0449\u0438\u043a. \u0421 \u0432\u044b\u0445\u043e\u0434\u043e\u043c \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u043e\u0432 \u0432 \u0444\u0435\u0432\u0440\u0430\u043b\u0435 2020-\u0433\u043e \u0433\u043e\u0434\u0430, \u044f \u0431\u0443\u043a\u0432\u0430\u043b\u044c\u043d\u043e \u0434\u043e\u0441\u0442\u0430\u043b \u044d\u0442\u0443 \u0438\u0434\u0435\u044e \u0438\u0437 \u0433\u043b\u0443\u0431\u043e\u043a\u043e\u0439 \u044f\u043c\u044b \u0437\u0430\u0431\u0432\u0435\u043d\u0438\u044f. \u041f\u0435\u0440\u0432\u044b\u043c \u0434\u0435\u043b\u043e\u043c, \u044f \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u043b \u0441\u0432\u043e\u044e \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u0443\u044e \u043c\u0430\u0448\u0438\u043d\u0443 \u0441 Windows XP, \u0433\u0434\u0435 \u044f \u0438 \u0440\u0430\u0437\u0432\u0435\u0440\u043d\u0443\u043b \u0441\u0440\u0435\u0434\u0443 VB6, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0437\u0430\u0442\u0435\u043c \u044f \u043e\u0442\u043a\u0440\u044b\u043b \u043f\u0440\u043e\u0435\u043a\u0442 \u0438\u0433\u0440\u044b, \u0438, \u043f\u043e\u0441\u043b\u0435 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0439 \u043e\u0448\u0438\u0431\u043e\u043a \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438, \u0443\u0441\u043f\u0435\u0448\u043d\u043e \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u043b \u0438\u0433\u0440\u0443 \u0438\u0437 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430. <\/p>\n<p>\u0420\u0430\u0431\u043e\u0442\u044b \u043d\u0430\u0447\u0430\u043b\u0438\u0441\u044c \u0441 \u0438\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u044f \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u043a\u043e\u0434\u0430 \u0438\u0433\u0440\u044b \u0438 \u0435\u0433\u043e \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0441 \u0437\u0430\u043c\u0435\u043d\u044b \u043a\u043e\u0434\u0430 \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u0430\u0443\u0434\u0438\u043e \u0441 \u0434\u0440\u0435\u0432\u043d\u0435\u0433\u043e MCI \u043d\u0430 \u043c\u043e\u044e \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u0443\u044e \u0441\u0431\u043e\u0440\u043a\u0443 SDL Mixer X, \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u0443\u044e \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0432 VB6-\u043f\u0440\u043e\u0435\u043a\u0442\u0430\u0445. \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u044f \u0440\u0435\u0448\u0438\u043b \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443 \u0440\u0430\u0431\u043e\u0442\u044b \u0438\u0433\u0440\u044b \u043d\u0430 Linux \u043f\u043e\u0434 Wine, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0443\u0441\u043a\u043e\u0440\u0438\u043b \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0443 \u0438\u0433\u0440\u044b \u0438 \u0443\u043c\u0435\u043d\u044c\u0448\u0438\u043b \u043f\u043e\u0442\u0440\u0435\u0431\u043b\u0435\u043d\u0438\u0435 \u0435\u044e \u043f\u0430\u043c\u044f\u0442\u0438.<\/p>\n<h2>\u0418\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0439<\/h2>\n<p>\u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b <a href=\"https:\/\/gist.github.com\/Wohlstand\/3895db6a738aebce296c2f284cb163a7\" rel=\"noopener noreferrer nofollow\">\u0441\u0430\u043c\u043e\u043f\u0438\u0441\u043d\u044b\u0439 \u043a\u0443\u0441\u043e\u043a \u043a\u043e\u0434\u0430 \u043d\u0430 JavaScript<\/a>, \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u044f \u0447\u0435\u0440\u0435\u0437 \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u044b\u0435 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u043f\u0430\u0440\u0441\u0438\u043b \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445, \u043c\u0430\u0441\u0441\u0438\u0432\u043e\u0432 \u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u0439. \u0417\u0430\u0442\u0435\u043c, \u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e &#171;VB to C++ Converter&#187; \u043e\u0442 Tangible Software Solutions, \u0447\u0442\u043e\u0431\u044b \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0442\u043e\u0447\u043d\u043e \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u044b\u0432\u0430\u0442\u044c \u043a\u0443\u0441\u043a\u0438 \u043a\u043e\u0434\u0430 \u0432 C++ (\u042f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0441\u044f \u0440\u0435\u0436\u0438\u043c\u043e\u043c Snifit, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u043a\u043e\u043d\u0432\u0435\u0440\u0442\u0435\u0440 \u0431\u044b\u043b \u043e\u0440\u0438\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d \u043d\u0430 VB.NET, \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043e\u0442\u043b\u0438\u0447\u0430\u0432\u0448\u0438\u0439\u0441\u044f \u043e\u0442 VB6. \u0422\u0430\u043a\u0436\u0435 \u043d\u0435 \u043e\u0431\u043e\u0448\u043b\u043e\u0441\u044c \u0431\u0435\u0437 \u043e\u0433\u0440\u043e\u043c\u043d\u043e\u0433\u043e \u0447\u0438\u0441\u043b\u0430 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0440\u0443\u0447\u043d\u044b\u0445 \u043c\u0430\u043d\u0438\u043f\u0443\u043b\u044f\u0446\u0438\u0439 \u0438 \u043c\u0430\u043a\u0440\u043e\u0441\u043e\u0432). \u0427\u0430\u0441\u0442\u044c \u043a\u043e\u0434\u0430 \u0431\u044b\u043b\u0430 \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u0430\u043d\u0430 \u043c\u043d\u043e\u044e \u0432\u0440\u0443\u0447\u043d\u0443\u044e, \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u043d\u0430 \u043d\u0430\u0447\u0430\u043b\u044c\u043d\u044b\u0445 \u044d\u0442\u0430\u043f\u0430\u0445. \u041c\u043d\u043e\u0433\u043e \u043c\u043e\u0434\u0443\u043b\u0435\u0439 \u044f \u043f\u0438\u0441\u0430\u043b \u0441 \u043d\u0443\u043b\u044f (\u043b\u0438\u0431\u043e \u0437\u0430\u0438\u043c\u0441\u0442\u0432\u043e\u0432\u0430\u043b \u0438\u0437 \u0434\u0440\u0443\u0433\u0438\u0445 \u043c\u043e\u0438\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432), \u0447\u0442\u043e\u0431\u044b \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0442\u044c \u043a\u043e\u043d\u0435\u0447\u043d\u044b\u0439 \u043f\u0440\u043e\u0435\u043a\u0442 \u0432\u0441\u0435\u0439 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c\u044e. \u0412\u0435\u0441\u044c \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u044f \u0432\u0451\u043b \u043d\u0430 Linux Mint, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u0441\u0440\u0435\u0434\u0443 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 Qt Creator, \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u043e \u0441 CLion. \u0422\u0430\u043a\u0436\u0435, \u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0435 \u043c\u0430\u0448\u0438\u043d\u044b \u0441 Windows XP \u0438 Windows 7 \u0434\u043b\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u044b\u0445 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432, \u0430 \u0442\u0430\u043a\u0436\u0435 VisualStudio Code \u0434\u043b\u044f \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0430 VB6-\u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0438\u0433\u0440\u044b \u0438\u0437 \u043f\u043e\u0434 Linux-\u0441\u0438\u0441\u0442\u0435\u043c\u044b.<\/p>\n<h2>\u041e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u0438 Visual Basic \u0438 \u0440\u0430\u0437\u043b\u0438\u0447\u0438\u044f \u0441 C++<\/h2>\n<p>\u041a\u0440\u043e\u043c\u0435 \u044f\u0432\u043d\u043e\u0433\u043e \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0440\u0430\u0437\u043b\u0438\u0447\u0438\u044f \u043c\u0435\u0436\u0434\u0443 \u044f\u0437\u044b\u043a\u0430\u043c\u0438, \u0438\u043c\u0435\u0435\u0442\u0441\u044f \u043e\u0433\u0440\u043e\u043c\u043d\u043e\u0435 \u0447\u0438\u0441\u043b\u043e \u0442\u043e\u043d\u043a\u0438\u0445 \u043d\u0435 \u0438\u043d\u0442\u0443\u0438\u0442\u0438\u0432\u043d\u044b\u0445 \u0440\u0430\u0437\u043b\u0438\u0447\u0438\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0437\u0430\u043c\u0435\u0442\u0438\u0442\u044c \u0431\u0435\u0437 \u043f\u0440\u044f\u043c\u043e\u0433\u043e \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0438 \u0431\u0435\u0437 \u0447\u0442\u0435\u043d\u0438\u044f \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438. \u042f \u0441\u0430\u043c \u043b\u0438\u0447\u043d\u043e \u043c\u0430\u043b\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u043b \u0441 Visual Basic, \u0438 \u0431\u043e\u043b\u044c\u0448\u0443\u044e \u0447\u0430\u0441\u0442\u044c \u0437\u043d\u0430\u043d\u0438\u0439 \u043e \u043d\u0451\u043c \u044f \u0443\u0437\u043d\u0430\u043b \u0438\u0437 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0445 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c \u0438 MSDN-\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 (\u0434\u043b\u044f Visual Basic 6, \u043d\u0443\u0436\u043d\u043e \u043a\u0430\u0447\u0430\u0442\u044c \u0440\u0435\u0434\u0430\u043a\u0446\u0438\u044e 2001 \u0433\u043e\u0434\u0430, \u043a \u0441\u0447\u0430\u0441\u0442\u044c\u044e, \u043e\u043d\u0430 \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u043d\u0430 archive.org \u0432 \u0441\u0432\u043e\u0431\u043e\u0434\u043d\u043e\u043c \u0434\u043e\u0441\u0442\u0443\u043f\u0435).<\/p>\n<p>\u0411\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044e <a class=\"mention\" href=\"\/users\/firehacker\">@firehacker<\/a> \u0437\u0430 \u0443\u0442\u043e\u0447\u043d\u0435\u043d\u0438\u044f \u0438 \u0437\u0430 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u043d\u044b\u0435 \u043e\u0431\u044a\u044f\u0441\u043d\u0435\u043d\u0438\u044f.<\/p>\n<h3>\u0412\u0438\u0434\u0438\u043c\u043e\u0441\u0442\u044c \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u0439<\/h3>\n<p>\u041f\u0435\u0440\u0432\u044b\u0439 \u044d\u0442\u0430\u043f \u043d\u0430\u0447\u0430\u043b\u0441\u044f \u0441 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0444\u0430\u0439\u043b\u0430 globals.h, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u043b \u0432\u0441\u0435 \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u044b\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0438\u0433\u0440\u044b \u0438 \u0432\u0441\u0435 \u0442\u0438\u043f\u044b (\u043c\u0430\u0441\u0441\u0438\u0432\u044b, \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b, \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u044b, \u0438 \u0442.\u043f.). \u0412\u0441\u0451 \u0434\u0435\u043b\u043e \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u043f\u043e \u0441\u0432\u043e\u0435\u0439 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0435, Visual Basic \u043f\u043e\u0434\u0440\u0430\u0437\u0443\u043c\u0435\u0432\u0430\u0435\u0442, \u0447\u0442\u043e \u043a\u043e \u0432\u0441\u0435\u043c \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u043e \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u043c \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u043c \u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u044f\u043c (\u043e\u0442\u043c\u0435\u0447\u0435\u043d\u043d\u044b\u0445 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c), \u043c\u043e\u0436\u043d\u043e \u043e\u0431\u0440\u0430\u0449\u0430\u0442\u044c\u0441\u044f \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e \u0431\u0435\u0437 \u043f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0439 \u0438\u043b\u0438 \u0438\u043c\u043f\u043e\u0440\u0442\u043e\u0432 \u0432\u0442\u043e\u0440\u043e\u0433\u043e \u043c\u043e\u0434\u0443\u043b\u044f \u0432 \u043a\u043e\u0434\u0435 \u043f\u0435\u0440\u0432\u043e\u0433\u043e. <\/p>\n<p>\u041f\u043e\u0442\u043e\u043c, \u043f\u043e\u0434 \u043a\u0430\u0436\u0434\u044b\u0439 \u043c\u043e\u0434\u0443\u043b\u044c, \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u043b \u0441\u043f\u0438\u0441\u043a\u0438 \u043f\u0440\u043e\u0442\u043e\u0442\u0438\u043f\u043e\u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u0438 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u0447\u043d\u044b\u0435 \u0444\u0430\u0439\u043b\u044b \u043a \u043d\u0438\u043c. \u0417\u0430\u0442\u0435\u043c, \u044f \u0432\u043a\u043b\u044e\u0447\u0430\u043b \u044d\u0442\u0438 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0438 \u043c\u0435\u0436\u0434\u0443 \u0432\u0441\u0435\u043c\u0438 \u043c\u043e\u0434\u0443\u043b\u044f\u043c\u0438, \u0447\u0442\u043e\u0431\u044b \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0442\u044c \u0438 \u043f\u043e\u043b\u043d\u0443\u044e \u0432\u0438\u0434\u0438\u043c\u043e\u0441\u0442\u044c \u0432\u0441\u0435\u0445 \u0432\u0430\u0436\u043d\u044b\u0445 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 \u043a\u043e\u0434\u0430, \u0438 \u043d\u0430\u0432\u0435\u0441\u0442\u0438 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u0440\u044f\u0434\u043e\u043a \u043f\u043e \u0444\u0430\u0439\u043b\u0430\u043c.<\/p>\n<h3>\u0421\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b<\/h3>\n<p>\u041e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0439 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u043e\u0439 \u0441\u0442\u0430\u043b\u043e \u0442\u043e, \u0447\u0442\u043e Visual Basic \u043f\u0440\u044f\u043c\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0438\u043c\u0435\u043d\u043e\u0432\u0430\u0442\u044c \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u0438 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u043e, \u0431\u0443\u043a\u0432\u0430-\u0432-\u0431\u0443\u043a\u0432\u0443:<\/p>\n<pre><code class=\"vbscript\">' \u041e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b Public Type Controls     Up As Boolean     Down As Boolean     Left As Boolean     Right As Boolean     Jump As Boolean     AltJump As Boolean     Run As Boolean     AltRun As Boolean     Drop As Boolean     Start As Boolean End Type  ' \u041e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u043e\u0434\u043d\u043e\u0438\u043c\u0451\u043d\u043d\u043e\u0439 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 Controls As Controls<\/code><\/pre>\n<p>\u0421 \u043e\u0434\u043d\u043e\u0439 \u0441\u0442\u043e\u0440\u043e\u043d\u044b, \u0442\u0430\u043a\u043e\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0438 \u0432 C\/C++ \u0442\u043e\u0436\u0435 (\u0435\u0441\u043b\u0438 \u043d\u0435 \u0437\u0430\u0431\u044b\u0432\u0430\u0442\u044c \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u043a\u043b\u044e\u0447\u0435\u0432\u043e\u0435 \u0441\u043b\u043e\u0432\u043e struct \u043f\u0435\u0440\u0435\u0434 \u0438\u043c\u0435\u043d\u0435\u043c \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b). \u041e\u0434\u043d\u0430\u043a\u043e, \u043e\u0434\u043d\u043e\u0438\u043c\u0451\u043d\u043d\u044b\u0435, \u043d\u043e \u0440\u0430\u0437\u043d\u043e\u0442\u0438\u043f\u043d\u044b\u0435, \u043e\u0431\u044a\u0435\u043a\u0442\u044b \u0441\u0438\u043b\u044c\u043d\u043e \u0432\u0440\u0435\u0434\u044f\u0442 \u043d\u0430\u0433\u043b\u044f\u0434\u043d\u043e\u0441\u0442\u0438, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0441\u043e\u0437\u0434\u0430\u044e\u0442 \u043d\u0435\u043e\u0434\u043d\u043e\u0437\u043d\u0430\u0447\u043d\u043e\u0441\u0442\u0438 \u0432 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044f\u0445, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043f\u0440\u0438 \u043f\u043e\u043f\u044b\u0442\u043a\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u0443\u044e \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e <code>Controls ko<\/code> \u0431\u0435\u0437 \u043a\u043b\u044e\u0447\u0435\u0432\u043e\u0433\u043e \u0441\u043b\u043e\u0432\u0430 struct, \u0432\u044b\u043b\u0435\u0437\u0435\u0442 \u043e\u0448\u0438\u0431\u043a\u0430 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438 <u>error: expected \u2018;\u2019 before \u2018ko\u2019<\/u>. \u041f\u0440\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 <code>sizeof(Controls)<\/code> \u0442\u0430\u043a\u0436\u0435 \u0441\u043e\u0437\u0434\u0430\u0451\u0442\u0441\u044f \u043d\u0435\u043e\u0434\u043d\u043e\u0437\u043d\u0430\u0447\u043d\u043e\u0441\u0442\u044c, \u0445\u043e\u0442\u0438\u043c \u043b\u0438 \u043c\u044b \u0443\u0437\u043d\u0430\u0442\u044c \u0440\u0430\u0437\u043c\u0435\u0440 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 Controls, \u0438\u043b\u0438 \u0440\u0430\u0437\u043c\u0435\u0440 \u0442\u0438\u043f\u0430 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b Controls.<\/p>\n<p>\u0418\u0437-\u0437\u0430 \u044d\u0442\u043e\u0433\u043e, \u044f \u0440\u0435\u0448\u0438\u043b \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c \u0432\u0441\u0435\u043c \u0438\u043c\u0435\u043d\u0430\u043c \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440 \u043e\u043a\u043e\u043d\u0447\u0430\u043d\u0438\u0435 &#171;_t&#187;, \u0447\u0442\u043e\u0431\u044b \u0443\u0441\u0442\u0440\u0430\u043d\u0438\u0442\u044c \u0432\u0441\u0435 \u043d\u0435\u043e\u0434\u043d\u043e\u0437\u043d\u0430\u0447\u043d\u043e\u0441\u0442\u0438:<\/p>\n<pre><code class=\"cpp\">struct Controls_t {     bool Up = false;     bool Down = false;     bool Left = false;     bool Right = false;     bool Jump = false;     bool AltJump = false;     bool Run = false;     bool AltRun = false;     bool Drop = false;     bool Start = false; };  extern Controls_t Controls;<\/code><\/pre>\n<h3>\u041c\u0430\u0441\u0441\u0438\u0432\u044b \u0441 \u044f\u0432\u043d\u044b\u043c \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d\u043e\u043c<\/h3>\n<p>\u0412 Visual Basic \u043f\u0440\u0435\u0434\u0443\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u0430 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u043c\u0430\u0441\u0441\u0438\u0432\u044b \u0441 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u043c\u0438 \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d\u0430\u043c\u0438 \u0438\u043d\u0434\u0435\u043a\u0441\u043e\u0432, \u0438 \u043d\u0435 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u043e\u0442 0 \u0434\u043e N-1, \u0430 \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043e\u0442 1 \u0434\u043e 5, \u043e\u0442 -1000 \u0434\u043e +1000, \u0438 \u0442.\u043f.:<\/p>\n<pre><code class=\"vbscript\">Public BlockSwitch(1 To 4) As Boolean<\/code><\/pre>\n<p>\u0412 C++ \u0442\u0430\u043a\u043e\u0433\u043e \u043d\u0435\u0442\u0443. \u041e\u0434\u043d\u0430\u043a\u043e, \u043c\u043d\u0435 \u043d\u0435 \u043f\u043e\u043c\u0435\u0448\u0430\u043b\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e \u0442\u0430\u043a\u043e\u0439 \u043a\u043e\u043d\u0446\u0435\u043f\u0446\u0438\u0438, \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0441\u044f \u0432\u043e\u0442 \u0442\u0430\u043a\u043e\u0439 \u0448\u0430\u0431\u043b\u043e\u043d:<\/p>\n<pre><code class=\"cpp\">template &lt;class T, long begin, long end> class RangeArr {     static constexpr long range_diff = begin - end;     static constexpr size_t size = (range_diff &lt; 0 ? -range_diff : range_diff) + 1;     static const long offset = -begin;     T array[size];  public:     RangeArr()     {}      ~RangeArr()     {}      RangeArr(const RangeArr &amp;o)     {         for(size_t i = 0; i &lt; size; i++)             array[i] = o.array[i];     }      RangeArr&amp; operator=(const RangeArr &amp;o)     {         for(size_t i = 0; i &lt; size; i++)             array[i] = o.array[i];         return *this;     }      void fill(const T &amp;o)     {         for(size_t i = 0; i &lt; size; i++)             array[i] = o;     }      T&amp; operator[](long index)     {         assert(index &lt;= end);         assert(index >= begin);         assert(offset + index &lt; static_cast&lt;long>(size));         assert(offset + index >= 0);         return array[offset + index];     } };<\/code><\/pre>\n<p>\u0410 \u0442\u0430\u043a\u0436\u0435 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u0448\u0430\u0431\u043b\u043e\u043d\u0430 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e \u0434\u043b\u044f \u0446\u0435\u043b\u043e\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u044b\u0445 \u0442\u0438\u043f\u043e\u0432 \u0441 \u043f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0435\u0439:<\/p>\n<pre><code class=\"cpp\">template &lt;class T, long begin, long end, T defaultValue> class RangeArrI {     static constexpr long range_diff = begin - end;     static constexpr size_t size = (range_diff &lt; 0 ? -range_diff : range_diff) + 1;     static const long offset = -begin;     T array[size];  public:     RangeArrI()     {         for(size_t i = 0; i &lt; size; i++)             array[i] = defaultValue;     }      ~RangeArrI()     {}      RangeArrI(const RangeArrI &amp;o)     {         for(size_t i = 0; i &lt; size; i++)             array[i] = o.array[i];     }      RangeArrI&amp; operator=(const RangeArrI &amp;o)     {         for(size_t i = 0; i &lt; size; i++)             array[i] = o.array[i];         return *this;     }      void fill(const T &amp;o)     {         for(size_t i = 0; i &lt; size; i++)             array[i] = o;     }      T&amp; operator[](long index)     {         assert(index &lt;= end);         assert(index >= begin);         assert(offset + index &lt; static_cast&lt;long>(size));         assert(offset + index >= 0);         return array[offset + index];     } };<\/code><\/pre>\n<p>\u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u0432\u044b\u0448\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0439 \u043f\u0440\u0438\u043c\u0435\u0440 \u043d\u0430 C++ \u0431\u0443\u0434\u0435\u0442 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c:<\/p>\n<pre><code class=\"cpp\">extern RangeArrI&lt;bool, 1, 4, false> BlockSwitch;<\/code><\/pre>\n<p>\u041a \u0441\u0447\u0430\u0441\u0442\u044c\u044e (\u0438\u043b\u0438 \u043a \u0441\u043e\u0436\u0430\u043b\u0435\u043d\u0438\u044e), \u042d\u043d\u0434\u0440\u044e \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b \u0432 \u0441\u0432\u043e\u0451\u043c \u043a\u043e\u0434\u0435 \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u043c\u0430\u0441\u0441\u0438\u0432\u043e\u0432, \u0445\u043e\u0442\u044f, \u0441 \u0434\u0440\u0443\u0433\u043e\u0439 \u0441\u0442\u043e\u0440\u043e\u043d\u044b, \u043f\u043e \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044e \u0441 std::vector \u0432 \u0421++, \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u043c\u0430\u0441\u0441\u0438\u0432\u044b \u0432 Visual Basic 6 \u0431\u044b\u043b\u0438 \u043d\u0435 \u043e\u0447\u0435\u043d\u044c \u0443\u0434\u043e\u0431\u043d\u044b\u043c\u0438 \u0432 \u0440\u0430\u0431\u043e\u0442\u0435.<\/p>\n<p>\u0412 \u043c\u043e\u0438\u0445 \u0448\u0430\u0431\u043b\u043e\u043d\u0430\u0445 \u044f \u0442\u0430\u043a\u0436\u0435 \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u043b assert-\u044b, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u043e\u043d\u0438 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0442 \u043e\u0442\u043b\u0430\u0432\u043b\u0438\u0432\u0430\u0442\u044c \u043e\u0448\u0438\u0431\u043a\u0438 \u0432\u044b\u0445\u043e\u0434\u0430 \u0437\u0430 \u043f\u0440\u0435\u0434\u0435\u043b\u044b \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d\u0430 \u043c\u0430\u0441\u0441\u0438\u0432\u0430 \u0432 \u043a\u043e\u0434\u0435 (\u0432 Visual Basic 6 \u0442\u0438\u043f\u0438\u0447\u043d\u0430\u044f \u043e\u0448\u0438\u0431\u043a\u0430 \u044d\u0442\u043e &#171;Runtime Error 9: Subscript out of range&#187;). \u0418 \u0442\u0435\u043c \u0441\u0430\u043c\u044b\u043c, \u0438\u043c\u0435\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043b\u0435\u0433\u043a\u043e \u043e\u0442\u043b\u0430\u0436\u0438\u0432\u0430\u0442\u044c \u0438\u0445, \u043d\u0435 \u0434\u043e\u043f\u0443\u0441\u043a\u0430\u044f \u043f\u043e\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u043f\u043e\u0440\u0447\u0438 \u043f\u0430\u043c\u044f\u0442\u0438 \u0438 \u0432\u043e\u0437\u043d\u0438\u043a\u043d\u043e\u0432\u0435\u043d\u0438\u044f SIGSEGV.<\/p>\n<p><strong>Upd:<\/strong> \u0412 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u044f\u0445, <a class=\"mention\" href=\"\/users\/izaron\">@Izaron<\/a>-\u043e\u043c <a href=\"https:\/\/habr.com\/ru\/post\/582566\/#comment_23573508\" rel=\"noopener noreferrer nofollow\">\u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u0430<\/a> \u0430\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u043d\u0430\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0448\u0430\u0431\u043b\u043e\u043d\u0430, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f std::array \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044f:<\/p>\n<pre><code class=\"cpp\">template&lt;class T, long Begin, long End> class range_arr : public std::array&lt;T, End - Begin + 1> { public:     using underlying_t = std::array&lt;T, End - Begin + 1>;     using typename underlying_t::reference;          constexpr reference operator[](long pos) {         return underlying_t::operator[](pos - Begin);     }     constexpr reference operator[](long pos) const {         return underlying_t::operator[](pos - Begin);     } };<\/code><\/pre>\n<h3>\u041e\u043f\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0435 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u044b-\u0441\u0441\u044b\u043b\u043a\u0438<\/h3>\n<p>\u0412 Visual Basic, \u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u044f\u0445 \u0438 \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u0430\u0445, \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e (\u0435\u0441\u043b\u0438 \u044f\u0432\u043d\u043e \u043d\u0435 \u0443\u043a\u0430\u0437\u0430\u0442\u044c <code>ByVal<\/code> \u0438\u043b\u0438 <code>ByRef<\/code>), \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u044b \u043f\u0435\u0440\u0435\u0434\u0430\u044e\u0442\u0441\u044f \u043f\u043e \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0443 \u0441\u0441\u044b\u043b\u043e\u043a: \u0438\u0445 \u043c\u043e\u0436\u043d\u043e \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0438\u0437 \u043a\u043e\u0434\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u0438:<\/p>\n<pre><code class=\"vbscript\">Public Sub addValue(number As Integer)   number = 42 End Sub<\/code><\/pre>\n<p>\u0412 C++, \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e, \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u044b \u043f\u0435\u0440\u0435\u0434\u0430\u044e\u0442\u0441\u044f \u043f\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044e. \u041d\u0443\u0436\u043d\u043e \u044f\u0432\u043d\u043e \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c, \u0447\u0442\u043e \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442 \u043f\u0435\u0440\u0435\u0434\u0430\u0451\u0442\u0441\u044f \u043f\u043e \u0441\u0441\u044b\u043b\u043a\u0435:<\/p>\n<pre><code class=\"cpp\">void addValue(int &amp;number) {   number = 42; }<\/code><\/pre>\n<p>\u041f\u0440\u0438 \u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438 \u043a\u043e\u0434\u0430 \u0441 Visual Basic 6 \u044f \u0441\u0442\u043e\u043b\u043a\u043d\u0443\u043b\u0441\u044f \u0441\u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u044f\u0432\u043b\u0435\u043d\u0438\u0435\u043c:<\/p>\n<pre><code class=\"vbscript\">Public Sub addValue(step As Integer, Optional number As Integer = 0)   number = step End Sub<\/code><\/pre>\n<p>\u042d\u0442\u043e \u0442.\u043d. \u043e\u043f\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u0430\u044f \u0441\u0441\u044b\u043b\u043a\u0430. \u0415\u0451 \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c, \u0430 \u043c\u043e\u0436\u043d\u043e \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c, \u0442\u043e\u0433\u0434\u0430 \u0437\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u043e\u0435 \u0432 \u043d\u0435\u0451 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u043e\u0442\u0435\u0440\u044f\u0435\u0442\u0441\u044f.<\/p>\n<p>\u0412 C++ \u0438\u0437-\u0437\u0430 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u044f \u0443\u043f\u0443\u0441\u0442\u0438\u043b \u0442\u043e\u0442 \u0444\u0430\u043a\u0442, \u0447\u0442\u043e \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u044b \u0432 VB \u044d\u0442\u043e \u0441\u0441\u044b\u043b\u043a\u0438, \u0441\u043b\u043e\u0432\u0438\u043b \u0431\u0430\u0433, \u0447\u0442\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435, \u043f\u0435\u0440\u0435\u0434\u0430\u043d\u043d\u043e\u0435 \u043f\u043e \u043e\u043f\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u043c\u0443 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u0443, \u043d\u0435 \u043e\u0431\u043d\u043e\u0432\u0438\u043b\u043e\u0441\u044c \u0432 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0438 \u0441 \u043a\u043e\u0434\u043e\u043c:<\/p>\n<pre><code class=\"cpp\">void addValue(int step, int number = 0) {   number = step; }<\/code><\/pre>\n<p>\u0412 \u0438\u0442\u043e\u0433\u0435, \u044f \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u0440\u0435\u0448\u0438\u043b \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442 number \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u0435\u043c, \u043e\u0434\u043d\u0430\u043a\u043e \u043f\u043e\u0442\u043e\u043c \u0434\u043e \u043c\u0435\u043d\u044f \u0434\u043e\u0448\u043b\u043e, \u0447\u0442\u043e \u044f \u043c\u043e\u0433\u0443 \u0441 \u043b\u0451\u0433\u043a\u043e\u0441\u0442\u044c\u044e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u0435\u0440\u0435\u0433\u0440\u0443\u0437\u043a\u0443 \u0444\u0443\u043d\u043a\u0446\u0438\u0439, \u0438 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0436\u0435\u043b\u0430\u043d\u043d\u0443\u044e \u043e\u043f\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u0443\u044e \u0441\u0441\u044b\u043b\u043a\u0443:<\/p>\n<pre><code class=\"cpp\">void addValue(int step, int &amp;number) {   number = step; }  void addValue(int step) {   int dummy = 0;   addValue(step, dummy); }<\/code><\/pre>\n<p><strong>Upd:<\/strong> \u0412 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u044f\u0445, <a class=\"mention\" href=\"\/users\/izaron\">@Izaron<\/a>-\u043e\u043c <a href=\"https:\/\/habr.com\/ru\/post\/582566\/#comment_23573508\" rel=\"noopener noreferrer nofollow\">\u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u0430<\/a> \u0430\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u043d\u0430\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u043a\u043e\u043d\u0446\u0435\u043f\u0446\u0438\u0438 \u0447\u0435\u0440\u0435\u0437 \u0448\u0430\u0431\u043b\u043e\u043d\u044b:<\/p>\n<pre><code class=\"cpp\">template&lt;typename T> T dummy;  template&lt;typename T> T&amp; dummy_ref(T value) {     dummy&lt;T> = value;     return dummy&lt;T>; }  void addValue(int step, int&amp; number = dummy_ref&lt;int>(0)) {     number = step; }<\/code><\/pre>\n<p>\u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0449\u0435 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u0442\u0430\u043a\u0438\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0431\u0435\u0437 \u0438\u0437\u043b\u0438\u0448\u043d\u0438\u0445 \u0434\u0443\u0431\u043b\u0438\u0440\u0443\u044e\u0449\u0438\u0445 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0439.<\/p>\n<h3>\u041e\u043a\u0440\u0443\u0433\u043b\u0435\u043d\u0438\u0435 \u0447\u0438\u0441\u0435\u043b<\/h3>\n<p>\u0412 Visual Basic \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0438\u0430\u043b\u044c\u043d\u043e \u043e\u0442\u043b\u0438\u0447\u0430\u0435\u0442\u0441\u044f \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0430 \u043e\u043a\u0440\u0443\u0433\u043b\u0435\u043d\u0438\u044f \u0447\u0438\u0441\u0435\u043b, \u0447\u0435\u043c \u043e\u0442 C++:<\/p>\n<ul>\n<li>\n<p>\u041f\u043e\u043f\u044b\u0442\u043a\u0430 \u043f\u0440\u0438\u0441\u0432\u043e\u0438\u0442\u044c \u0447\u0438\u0441\u043b\u043e \u0441 \u043f\u043b\u0430\u0432\u0430\u044e\u0449\u0435\u0439 \u0442\u043e\u0447\u043a\u043e\u0439 \u0446\u0435\u043b\u043e\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u043e\u0439 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439, \u0432\u0441\u0435\u0433\u0434\u0430 \u043e\u043a\u0440\u0443\u0433\u043b\u044f\u0435\u0442 \u0441\u0432\u043e\u0451 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435. \u0412 C++ \u0438\u0434\u0451\u0442 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0442\u0438\u043f\u0430 \u0441 \u043e\u0442\u0441\u0435\u0447\u0435\u043d\u0438\u0435\u043c \u0434\u0440\u043e\u0431\u043d\u043e\u0439 \u0447\u0430\u0441\u0442\u0438.<\/p>\n<\/li>\n<li>\n<p>\u041e\u043a\u0440\u0443\u0433\u043b\u0435\u043d\u0438\u0435 \u0438\u0434\u0451\u0442 \u043d\u0435\u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u0447\u0435\u0440\u0435\u0437 x86-\u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044e FRNDINT, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043e\u043a\u0440\u0443\u0433\u043b\u044f\u0435\u0442 \u0441\u0435\u0440\u0435\u0434\u0438\u043d\u043d\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043f\u043e \u0442\u0438\u043f\u0443 0.5 \u043a \u0431\u043b\u0438\u0436\u0430\u0439\u0448\u0435\u043c\u0443 \u0447\u0451\u0442\u043d\u043e\u043c\u0443 \u0446\u0435\u043b\u043e\u043c\u0443. \u0422\u043e \u0435\u0441\u0442\u044c, \u0431\u044b\u043b\u043e 15.5, \u043e\u043a\u0440\u0443\u0433\u043b\u0435\u043d\u0438\u0435 \u0431\u0443\u0434\u0435\u0442 \u0432 16, \u0435\u0441\u043b\u0438 \u0431\u044b\u043b\u043e 42.5, \u0442\u043e \u043e\u043a\u0440\u0443\u0433\u043b\u0438\u0442\u0441\u044f \u043a 42\u043c.<\/p>\n<\/li>\n<\/ul>\n<p>\u041f\u043e\u0447\u0435\u043c\u0443 \u044f \u043e\u0431\u0440\u0430\u0442\u0438\u043b \u043d\u0430 \u044d\u0442\u043e \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435? \u041f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0444\u0438\u0437\u0438\u043a\u0430 \u0432 \u0438\u0433\u0440\u0435 \u0432\u043e \u043c\u043d\u043e\u0433\u043e\u043c \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043e\u0442 \u0447\u0430\u0441\u0442\u0435\u0439 \u043a\u043e\u0434\u0430, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0449\u0435\u0433\u043e \u043e\u043a\u0440\u0443\u0433\u043b\u0435\u043d\u0438\u0435. \u0415\u0441\u043b\u0438 \u043e\u043a\u0440\u0443\u0433\u043b\u0435\u043d\u0438\u0435 \u0434\u0435\u043b\u0430\u0442\u044c \u043d\u0435 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e (\u043d\u0435 \u0442\u0430\u043a, \u043a\u0430\u043a \u043e\u043d\u043e \u0434\u0435\u043b\u0430\u043b\u043e\u0441\u044c \u0432 Visual Basic), \u0442\u043e \u0432 \u0438\u0442\u043e\u0433\u0435, \u0444\u0438\u0437\u0438\u043a\u0430 \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043a\u0430\u0436\u0435\u043d\u0430 (\u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043a\u0430\u0436\u0435\u043d\u043e \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u0435 \u043f\u0440\u0435\u0441\u0441\u0430-\u0434\u0430\u0432\u0438\u043b\u043a\u0438 \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 &#171;Dungeon of Pain&#187; \u0432 \u044d\u043f\u0438\u0437\u043e\u0434\u0435 &#171;The Invasion 2&#187;).<\/p>\n<p>\u0427\u0442\u043e\u0431\u044b \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0440\u0435\u0448\u0438\u0442\u044c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443 \u043e\u043a\u0440\u0443\u0433\u043b\u0435\u043d\u0438\u044f, \u044f \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043b \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 \u0432\u0435\u043b\u043e\u0441\u0438\u043f\u0435\u0434:<\/p>\n<pre><code class=\"cpp\">const double power10[] = {     1.0,     10.0,     100.0,     1000.0,     10000.0,      100000.0,     1000000.0,     10000000.0,     100000000.0,     1000000000.0,      10000000000.0,     100000000000.0,     1000000000000.0,     10000000000000.0,     100000000000000.0,      1000000000000000.0,     10000000000000000.0,     100000000000000000.0,     1000000000000000000.0,     10000000000000000000.0,      100000000000000000000.0,     1000000000000000000000.0 };  double vb6round(double x, int deimals);  int vb6Round(double x) {     return static_cast&lt;int>(vb6Round(x, 0)); }  static SDL_INLINE double toNearest(double x) {     int round_old = std::fegetround();     if(round_old == FE_TONEAREST)         return std::nearbyint(x);     else     {         std::fesetround(FE_TONEAREST);         x = std::nearbyint(x);         std::fesetround(round_old);         return x;     } }  double vb6Round(double x, int decimals) {     double res = x, decmul;      if(decimals &lt; 0 || decimals > 22)         decimals = 0;      if(SDL_fabs(x) &lt; 1.0e16)     {         decmul = power10[decimals];         res = toNearest(x * decmul) \/ decmul;     }      return res; }<\/code><\/pre>\n<p>\u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0430\u0441\u044c \u0432\u0435\u0441\u044c\u043c\u0430 \u0442\u043e\u0447\u043d\u0430\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u043e\u043a\u0440\u0443\u0433\u043b\u0435\u043d\u0438\u044f, \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0430\u044f \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u044e Visual Basic 6.<\/p>\n<h3>\u0422\u0430\u0439\u043c\u0435\u0440\u044b<\/h3>\n<p>\u0412 \u0438\u0433\u0440\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0438\u0441\u044c \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0438 \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u044b\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435, \u043e\u0442\u0432\u0435\u0447\u0430\u044e\u0449\u0438\u0435 \u0437\u0430 \u0432\u0440\u0435\u043c\u044f: \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f Timer, \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u044e\u0449\u0430\u044f <strong>Single<\/strong>-\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 (\u0430\u043d\u0430\u043b\u043e\u0433 float \u0432 C++) \u0441\u0435\u043a\u0443\u043d\u0434, \u043f\u0440\u043e\u0448\u0435\u0434\u0448\u0438\u0445 \u0441 \u043f\u043e\u043b\u0443\u043d\u043e\u0447\u0438, \u0438 WinAPI-\u0444\u0443\u043d\u043a\u0446\u0438\u044f Sleep \u0434\u043b\u044f \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u0437\u0430\u0434\u0435\u0440\u0436\u0435\u043a.<\/p>\n<pre><code class=\"vbscript\">Public Declare Sub Sleep Lib \"kernel32\" (ByVal dwMilliseconds As Long)<\/code><\/pre>\n<p>\u041a \u0441\u0447\u0430\u0441\u0442\u044c\u044e, SDL2 \u043b\u0435\u0433\u043a\u043e \u0437\u0430\u043c\u0435\u043d\u044f\u0435\u0442 \u044d\u0442\u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043d\u0430 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 SDL_GetTicks() \u0438 SDL_Delay(). \u041e\u0434\u043d\u0430\u043a\u043e, \u0438\u043c\u0435\u0435\u0442\u0441\u044f \u0432\u043e\u043f\u0440\u043e\u0441 \u0431\u043e\u043b\u0435\u0435 \u0441\u0435\u0440\u044c\u0451\u0437\u043d\u044b\u0439, \u0447\u0435\u043c \u043f\u0440\u043e\u0441\u0442\u043e \u0432\u044b\u0436\u0438\u0434\u0430\u043d\u0438\u0435 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0438 \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u0430: \u0438\u0433\u0440\u0430 \u0441\u0442\u0430\u0440\u0430\u0435\u0442\u0441\u044f \u0436\u0451\u0441\u0442\u043a\u043e \u0432\u044b\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0442\u044c \u0447\u0430\u0441\u0442\u043e\u0442\u0443 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u0432 65 \u043a\u0430\u0434\u0440\u043e\u0432 \u0432 \u0441\u0435\u043a\u0443\u043d\u0434\u0443. \u0415\u0441\u043b\u0438 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e \u043d\u0435 \u0441\u0442\u0430\u0440\u0430\u0442\u044c\u0441\u044f, \u0438\u0433\u0440\u0430 \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 \u0447\u0430\u0441\u0442\u043e\u0442\u043e\u0439 67 \u043a\u0430\u0434\u0440\u043e\u0432 \u0432 \u0441\u0435\u043a\u0443\u043d\u0434\u0443 \u0431\u0435\u0437 \u0432\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u044c\u043d\u043e\u0439 \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u0438. \u042d\u0442\u043e \u0431\u043e\u043b\u044c\u0448\u0430\u044f \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0434\u043b\u044f \u0441\u043f\u0438\u0434\u0440\u0430\u043d\u043d\u0435\u0440\u043e\u0432, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0449\u0438\u0445 \u0432\u043d\u0435\u0448\u043d\u0438\u0435 \u0442\u0430\u0439\u043c\u0435\u0440\u044b \u0434\u043b\u044f \u0447\u0435\u0441\u0442\u043d\u043e\u0433\u043e \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u044f \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u043f\u0440\u043e\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u044f \u0438\u0433\u0440\u044b.<\/p>\n<p>\u0427\u0442\u043e\u0431\u044b \u0438\u0441\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443, \u044f \u043d\u0430\u0448\u0451\u043b \u043a\u043e\u0434, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u044b\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u0443\u044e \u0447\u0430\u0441\u0442\u043e\u0442\u0443, \u0438 \u0434\u043e\u0440\u0430\u0431\u043e\u0442\u0430\u043b \u0435\u0433\u043e. \u041f\u043e\u043b\u0443\u0447\u0438\u043b\u0441\u044f <a href=\"https:\/\/github.com\/Wohlstand\/TheXTech\/blob\/42508590c1d18d9c79c0965077ec7a0d31099451\/src\/frame_timer.cpp\" rel=\"noopener noreferrer nofollow\">\u0446\u0435\u043b\u044b\u0439 \u043c\u043e\u0434\u0443\u043b\u044c<\/a>, \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u044e\u0449\u0438\u0439 \u043b\u043e\u0433\u0438\u043a\u0443 \u0436\u0451\u0441\u0442\u043a\u043e\u0439 \u0432\u044b\u0434\u0435\u0440\u0436\u043a\u0438 \u0447\u0430\u0441\u0442\u043e\u0442\u044b \u0432 65 \u043a\u0430\u0434\u0440\u043e\u0432 \u0432 \u0441\u0435\u043a\u0443\u043d\u0434\u0443. \u041f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e \u043f\u043e\u0432\u043e\u0437\u0438\u0442\u044c\u0441\u044f, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0432 Linux \u0438 macOS \u0443\u0436\u0435 \u0431\u044b\u043b\u0438 \u043d\u0443\u0436\u043d\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u0441\u0447\u0438\u0442\u0430\u044e\u0449\u0438\u0435 \u043d\u0430\u043d\u043e\u0432\u0440\u0435\u043c\u044f, \u0430 \u0432 Windows \u0441 \u044d\u0442\u0438\u043c \u0431\u043e\u043b\u044c\u0448\u0430\u044f \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430. \u041e\u0434\u043d\u0430\u043a\u043e, \u0441\u043f\u0443\u0441\u0442\u044f \u0432\u0440\u0435\u043c\u044f \u044f \u043d\u0430\u0448\u0451\u043b \u0443\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u044c\u043d\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0431\u0443\u0434\u0435\u0442 \u0438\u0434\u0435\u0430\u043b\u044c\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0438 \u043d\u0430 \u043c\u0438\u043b\u043b\u0438\u0441\u0435\u043a\u0443\u043d\u0434\u0430\u0445.<\/p>\n<h3>\u0411\u043e\u043b\u044c \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0439<\/h3>\n<p>\u0415\u0449\u0451 \u043e\u0434\u043d\u0430 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u044c, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0437\u0430\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e Visual Basic 6 \u0438 C++ \u043f\u043e \u0440\u0430\u0437\u043d\u043e\u043c\u0443 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u044e\u0442 \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044f:<\/p>\n<ul>\n<li>\n<p>\u0412 C++ \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044e\u0442 \u0440\u0430\u0437\u0434\u0435\u043b\u044c\u043d\u044b\u0435 \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u044b <code>&amp;&amp;<\/code>, <code>||<\/code>, <code>!<\/code>, <code>!=<\/code> \u0438 \u043f\u043e\u0431\u0438\u0442\u043e\u0432\u044b\u0435 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u044b <code>&amp;<\/code>, <code>|<\/code>, <code>~<\/code>, <code>^<\/code>. \u0411\u0443\u043b\u0435\u0432\u044b\u0439 \u0442\u0438\u043f \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 0 (false) \u0438 1 (true).<\/p>\n<\/li>\n<li>\n<p>\u0412 Visual Basic, \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u044b <code>And<\/code>, <code>Or<\/code>, <code>Not<\/code>, <code>Xor<\/code>, \u043f\u043e\u0431\u0438\u0442\u043e\u0432\u044b\u0435 \u0438 \u043f\u0440\u044f\u043c\u043e \u044d\u043a\u0432\u0438\u0432\u0430\u043b\u0435\u043d\u0442\u043d\u044b \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430\u043c <code>&amp;<\/code>, <code>|<\/code>, <code>~<\/code>, <code>^<\/code>. \u0411\u0443\u043b\u0435\u0432\u044b\u0439 \u0442\u0438\u043f \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d \u0432 \u0432\u0438\u0434\u0435 \u043f\u043e\u043b\u043d\u043e\u0439 \u0438\u043d\u0432\u0435\u0440\u0441\u0438\u0438 \u0446\u0435\u043b\u043e\u0433\u043e \u0447\u0438\u0441\u043b\u0430: 0x0000 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 <strong>True<\/strong> \u0438 0xFFFF \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 <strong>False<\/strong>.<\/p>\n<\/li>\n<li>\n<p>\u0412\u0441\u043b\u0435\u0434\u0441\u0442\u0432\u0438\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u043e\u0432, \u0432 \u0421++ \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u043f\u043e\u0441\u0442\u0435\u043f\u0435\u043d\u043d\u044b\u0439 \u0440\u0430\u0441\u0447\u0451\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u0438 \u043f\u043e\u0441\u0442\u0435\u043f\u0435\u043d\u043d\u043e\u0435 \u043d\u0430\u043b\u043e\u0436\u0435\u043d\u0438\u0435. \u0422\u043e \u0435\u0441\u0442\u044c, \u043c\u044b \u0438\u043c\u0435\u0435\u043c \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0435 <code>if(A &lt; 5 &amp;&amp; Array[A] == 1)<\/code>, \u0438 \u0432 \u0441\u043b\u0443\u0447\u0430\u0435, \u043a\u043e\u0433\u0434\u0430 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0435 <code>A &lt; 5<\/code> \u043b\u043e\u0436\u043d\u043e\u0435, \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0435 <code>Array[A] == 1<\/code> \u0440\u0430\u0441\u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0435 \u0431\u0443\u0434\u0435\u0442.<\/p>\n<\/li>\n<li>\n<p>\u0412 Visual Basic, \u0447\u043b\u0435\u043d\u044b \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0440\u0430\u0441\u0441\u0447\u0438\u0442\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u0441\u0440\u0430\u0437\u0443, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u043f\u043e\u0431\u0438\u0442\u043e\u0432\u044b\u0439 \u0440\u0430\u0441\u0441\u0447\u0451\u0442 \u0432\u0441\u0435\u0439 \u0444\u043e\u0440\u043c\u0443\u043b\u044b. \u0422\u043e \u0435\u0441\u0442\u044c, \u0432 \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u043e\u043c \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0438 <code>if A &lt; 5 And Array(A) = 1 Then<\/code> \u0431\u0443\u0434\u0443\u0442 \u0432\u0441\u0435\u0433\u0434\u0430 \u0440\u0430\u0441\u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0442\u044c\u0441\u044f \u043e\u0431\u0430 \u0447\u043b\u0435\u043d\u0430 (\u041a\u043e\u0434 \u044d\u043a\u0432\u0438\u0432\u0430\u043b\u0435\u043d\u0442\u0435\u043d <code>if((A &lt; 5 ? 0xFFFF : 0) &amp; (Array[A] == 1 ? 0xFFFF : 0)<\/code>). \u0417\u0434\u0435\u0441\u044c \u043f\u0440\u043e\u0438\u0437\u043e\u0439\u0434\u0451\u0442 \u043e\u0448\u0438\u0431\u043a\u0430 \u0438\u0437-\u0437\u0430 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u0438\u043d\u0434\u0435\u043a\u0441 A \u0432\u044b\u0445\u043e\u0434\u0438\u0442 \u0437\u0430 \u043f\u0440\u0435\u0434\u0435\u043b\u044b \u0440\u0430\u0437\u043c\u0435\u0440\u0430 \u043c\u0430\u0441\u0441\u0438\u0432\u0430. \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u043f\u0440\u0438 \u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438 \u043d\u0430 C++ \u044f \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e \u0438\u0441\u043f\u0440\u0430\u0432\u0438\u043b \u0431\u0430\u0433, \u0440\u0443\u0448\u0438\u0432\u0448\u0438\u0439 \u0438\u0433\u0440\u0443. \u0418\u0437-\u0437\u0430 \u044d\u0442\u043e\u0439 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u044f\u0437\u044b\u043a\u0430 \u0432 \u043a\u043e\u0434\u0435 \u043c\u043e\u0436\u043d\u043e \u0432\u0441\u0442\u0440\u0435\u0442\u0438\u0442\u044c \u0431\u043e\u043b\u044c\u0448\u043e\u0435 \u0447\u0438\u0441\u043b\u043e \u043b\u0430\u0437\u0430\u043d\u0438\u0439 \u0438\u0437 <code>if() { if {} if { .... } }<\/code>, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 \u0442\u0435\u043c, \u0447\u0442\u043e \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u043d\u0435\u0443\u043a\u043b\u044e\u0436\u0435, \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u043c \u043a\u043e\u0441\u0442\u044b\u043b\u0451\u043c \u043d\u0430\u0434 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u044c\u044e \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0439 \u0432 Visual Basic.<\/p>\n<\/li>\n<li>\n<p>\u041f\u0440\u0438 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0438 \u0441\u043b\u043e\u0436\u043d\u044b\u0445 \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0439 \u0438\u0437 Visual Basic \u0432 C++ \u043c\u043e\u0436\u0435\u0442 \u0432\u043e\u0437\u043d\u0438\u043a\u043d\u0443\u0442\u044c \u043f\u0443\u0442\u0430\u043d\u0438\u0446\u0430 \u0442\u0430\u043c, \u0433\u0434\u0435 \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0438\u0441\u044c \u0441\u043a\u043e\u0431\u043a\u0438, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0432\u0441\u043f\u043b\u044b\u0432\u0430\u0442\u044c \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u044f \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0430. \u0420\u0435\u0448\u0430\u0435\u0442\u0441\u044f \u043b\u0435\u0433\u043a\u043e \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435\u043c \u0441\u043a\u043e\u0431\u043e\u043a \u0432\u043e\u043a\u0440\u0443\u0433 \u043a\u043b\u044e\u0447\u0435\u0432\u044b\u0445 \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0433\u0440\u0443\u043f\u043f. \u0422\u0430\u043a\u0436\u0435 \u043d\u0443\u0436\u043d\u043e \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u0442\u044c, \u0447\u0442\u043e \u0432 \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044f\u0445 \u043d\u0430 VB \u043e\u0447\u0435\u043d\u044c \u043b\u0435\u0433\u043a\u043e \u043f\u0435\u0440\u0435\u043f\u0443\u0442\u0430\u0442\u044c \u043f\u043e\u0431\u0438\u0442\u043e\u0432\u044b\u0439 \u0440\u0430\u0441\u0441\u0447\u0451\u0442 \u043c\u0435\u0436\u0434\u0443 \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u043c \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0435\u043c, \u0438\u0437-\u0437\u0430 \u0447\u0435\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043a\u0430\u0437\u0438\u0442\u044c \u043a\u043e\u043d\u0435\u0447\u043d\u044b\u0439 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442: \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043e\u0434\u0438\u043d \u0431\u0438\u0442 \u0432\u043c\u0435\u0441\u0442\u043e \u0446\u0435\u043b\u043e\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f.<\/p>\n<\/li>\n<\/ul>\n<p>\u0422\u0430\u043a\u0436\u0435 \u0431\u044b\u043b\u043e \u044f\u0432\u043d\u043e \u0437\u0430\u043c\u0435\u0442\u043d\u043e, \u0447\u0442\u043e \u042d\u043d\u0434\u0440\u044e \u043d\u0430 \u0442\u043e\u0442 \u043c\u043e\u043c\u0435\u043d\u0442 \u0430\u0431\u0441\u043e\u043b\u044e\u0442\u043d\u043e \u043d\u0435 \u0438\u043c\u0435\u043b \u043d\u0438\u043a\u0430\u043a\u043e\u0433\u043e \u043f\u043e\u043d\u044f\u0442\u0438\u044f \u043e <code>Select Case<\/code> (\u0430\u043d\u0430\u043b\u043e\u0433\u0430 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430 <code>switch()<\/code>), \u0438 \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432 \u0435\u0433\u043e \u043a\u043e\u0434\u0435 \u0431\u044b\u043b\u043e \u0447\u0440\u0435\u0437\u0432\u044b\u0447\u0430\u0439\u043d\u043e\u0435 \u0437\u043b\u043e\u0443\u043f\u043e\u0442\u0440\u0435\u0431\u043b\u0435\u043d\u0438\u0435 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f\u043c\u0438 <code>if else if else if else...<\/code> .<\/p>\n<h3>\u041a\u043e\u0448\u043c\u0430\u0440\u043d\u044b\u0439 \u0441\u043f\u0430\u0433\u0435\u0442\u0442\u0438-\u043f\u043e\u043b\u0438\u043c\u043e\u0440\u0444\u0438\u0437\u043c<\/h3>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/517\/6e8\/6b3\/5176e86b36dfe60f52b74423bb625ce9.png\" alt=\"\u0424\u0440\u0430\u0433\u043c\u0435\u043d\u0442 \u0441\u043f\u0430\u0433\u0435\u0442\u0442\u0438-\u043a\u043e\u0434\u0430, \u043e\u0442\u0432\u0435\u0447\u0430\u044e\u0449\u0435\u0433\u043e \u0437\u0430 \u043b\u043e\u0433\u0438\u043a\u0443 \u041d\u0418\u041f \u0440\u0430\u0437\u043d\u044b\u0445 \u0442\u0438\u043f\u043e\u0432\" title=\"\u0424\u0440\u0430\u0433\u043c\u0435\u043d\u0442 \u0441\u043f\u0430\u0433\u0435\u0442\u0442\u0438-\u043a\u043e\u0434\u0430, \u043e\u0442\u0432\u0435\u0447\u0430\u044e\u0449\u0435\u0433\u043e \u0437\u0430 \u043b\u043e\u0433\u0438\u043a\u0443 \u041d\u0418\u041f \u0440\u0430\u0437\u043d\u044b\u0445 \u0442\u0438\u043f\u043e\u0432\" width=\"1227\" height=\"803\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/517\/6e8\/6b3\/5176e86b36dfe60f52b74423bb625ce9.png\"\/><\/p>\n<div><figcaption>\u0424\u0440\u0430\u0433\u043c\u0435\u043d\u0442 \u0441\u043f\u0430\u0433\u0435\u0442\u0442\u0438-\u043a\u043e\u0434\u0430, \u043e\u0442\u0432\u0435\u0447\u0430\u044e\u0449\u0435\u0433\u043e \u0437\u0430 \u043b\u043e\u0433\u0438\u043a\u0443 \u041d\u0418\u041f \u0440\u0430\u0437\u043d\u044b\u0445 \u0442\u0438\u043f\u043e\u0432<\/figcaption><\/div>\n<\/figure>\n<p>\u041d\u0438 \u0434\u043b\u044f \u043a\u043e\u0433\u043e \u043d\u0435 \u0441\u0435\u043a\u0440\u0435\u0442, \u0447\u0442\u043e \u0432 Visual Basic \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u043a\u043b\u0430\u0441\u0441\u043e\u0432 \u0431\u044b\u043b\u0430 \u0441\u0438\u043b\u044c\u043d\u043e \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u043d\u043e\u0439 \u0438 \u043f\u0440\u044f\u043c\u043e \u0437\u0430\u0432\u044f\u0437\u0430\u043d\u043d\u043e\u0439 \u043d\u0430 \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0438 COM. \u042d\u043d\u0434\u0440\u044e \u0440\u0435\u0448\u0438\u043b \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0435\u0451 \u0432\u043e\u0432\u0441\u0435. \u041e\u0434\u043d\u0430\u043a\u043e, \u042d\u043d\u0434\u0440\u044e \u0434\u0430\u0436\u0435 \u043d\u0435 \u0441\u0442\u0430\u043b \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u0440\u0430\u0437\u0434\u0435\u043b\u044c\u043d\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0434\u043b\u044f \u0440\u0430\u0437\u0431\u0438\u0435\u043d\u0438\u044f \u043b\u043e\u0433\u0438\u043a\u0438 \u0440\u0430\u0437\u043d\u043e\u0442\u0438\u043f\u043d\u044b\u0445 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432. \u0412\u043c\u0435\u0441\u0442\u043e \u044d\u0442\u043e\u0433\u043e, \u043e\u043d \u0441\u043e\u0437\u0434\u0430\u043b \u0446\u0435\u043f\u044c \u0433\u0440\u043e\u043c\u043e\u0437\u0434\u043a\u0438\u0445 \u0431\u043e\u0436\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439, \u043a\u0430\u0436\u0434\u0430\u044f \u0438\u0437 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u043b\u0430 \u043e\u0433\u0440\u043e\u043c\u043d\u0435\u0439\u0448\u0438\u0435 \u043c\u0430\u0441\u0441\u0438\u0432\u044b \u043a\u043e\u0434\u0430, \u0440\u0430\u0437\u0431\u0438\u0432\u0430\u044e\u0449\u0438\u0435 \u043b\u043e\u0433\u0438\u043a\u0443 \u0440\u0430\u0437\u043d\u043e\u0442\u0438\u043f\u043d\u044b\u0445 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 \u0447\u0435\u0440\u0435\u0437 \u0446\u0435\u043f\u044c <code>if else if else if else<\/code>. \u0415\u0449\u0451 \u043e\u0434\u043d\u0430 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u044c \u043a\u043e\u0434\u0430 \u0438\u0433\u0440\u044b, \u044d\u0442\u043e \u043e\u0447\u0435\u043d\u044c \u0438 \u043e\u0447\u0435\u043d\u044c \u0434\u043b\u0438\u043d\u043d\u044b\u0435 \u043e\u0434\u043d\u043e\u0441\u0442\u0440\u043e\u0447\u043d\u044b\u0435 \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0438 \u0430\u0440\u0438\u0444\u043c\u0435\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044f, \u043f\u043e\u0447\u0442\u0438 \u043d\u0438\u043a\u0430\u043a\u043e\u0433\u043e \u043f\u0435\u0440\u0435\u043d\u043e\u0441\u0430 \u043a\u043e\u0434\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u043e \u043d\u0435 \u0431\u044b\u043b\u043e. \u0422\u0430\u043a\u0436\u0435 \u042d\u043d\u0434\u0440\u044e \u043d\u0435 \u043f\u043e\u0437\u0430\u0431\u043e\u0442\u0438\u043b\u0441\u044f \u043e\u0431 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0439, \u0447\u0442\u043e\u0431\u044b \u043d\u0430\u0433\u043b\u044f\u0434\u043d\u043e \u0438\u043c\u0435\u043d\u043e\u0432\u0430\u0442\u044c \u043a\u0430\u0436\u0434\u044b\u0439 \u0442\u0438\u043f \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432, \u0430 \u043f\u0440\u043e\u0441\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b \u0441\u044b\u0440\u044b\u0435 \u0447\u0438\u0441\u043b\u043e\u0432\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f, \u0447\u0442\u043e\u0431\u044b \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0438\u0442\u044c \u0442\u043e\u0442 \u0438\u043b\u0438 \u0438\u043d\u043e\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 (\u0430 \u0438\u0445 \u0442\u0430\u043c \u0441\u043e\u0442\u043d\u0438 \u0440\u0430\u0437\u043d\u044b\u0445!). \u0411\u043e\u043b\u044c\u0448\u0443\u044e \u0447\u0430\u0441\u0442\u044c \u043a\u043e\u0434\u0430 \u044f \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043b \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0442\u043e\u0447\u043d\u043e, \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0432 \u0438\u0441\u0445\u043e\u0434\u043d\u0443\u044e \u043b\u043e\u0433\u0438\u043a\u0443. \u0427\u0430\u0441\u0442\u044c \u044d\u0442\u043e\u0433\u043e \u0432\u0441\u0435\u0433\u043e &#171;\u0441\u043f\u0430\u0433\u0435\u0442\u0442\u0438&#187; \u043c\u043d\u0435 \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u0440\u0430\u0437\u0431\u0438\u0442\u044c \u043d\u0430 \u0441\u0435\u043a\u0442\u043e\u0440\u044b, \u0432\u044b\u043d\u043e\u0441\u044f \u0432 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u0447\u0442\u043e\u0431\u044b \u0442\u0435\u043c \u0441\u0430\u043c\u044b\u043c \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u043d\u0430\u0433\u043b\u044f\u0434\u043d\u043e\u0441\u0442\u044c.<\/p>\n<h3>\u041f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u0442\u0435\u043a\u0441\u0442\u0430 \u0438 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0439 \u0441\u0442\u0440\u043e\u043a \u0432 \u0447\u0438\u0441\u043b\u0430<\/h3>\n<p>Visual Basic 6, \u0434\u0430\u0436\u0435 \u043d\u0435 \u0441\u043c\u043e\u0442\u0440\u044f \u043d\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u044e\u043d\u0438\u043a\u043e\u0434\u0430 \u0432 \u0441\u0432\u043e\u0451\u043c \u044f\u0434\u0440\u0435, \u0438 \u0434\u0430\u0436\u0435 \u043d\u0430 \u0442\u043e, \u0447\u0442\u043e \u0441\u0442\u0440\u043e\u043a\u0438 \u0431\u0430\u0437\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u043d\u0430 COM-\u0442\u0438\u043f\u0435 <a href=\"https:\/\/docs.microsoft.com\/en-us\/previous-versions\/windows\/desktop\/automat\/bstr\" rel=\"noopener noreferrer nofollow\">BSTR<\/a> \u0441 \u044e\u043d\u0438\u043a\u043e\u0434\u043e\u043c, \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u043c\u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u044f\u043c\u0438 \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u0444\u0430\u0439\u043b\u043e\u0432\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u043e\u0439, \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0432 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0435, \u0438 \u0447\u0442\u0435\u043d\u0438\u044f-\u0437\u0430\u043f\u0438\u0441\u0438 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u0445 \u0441\u0442\u0440\u043e\u043a (\u0435\u0441\u043b\u0438 \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0442\u044c \u0444\u0430\u0439\u043b \u043a\u0430\u043a \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u0439), \u043f\u043e \u0444\u0430\u043a\u0442\u0443, \u043d\u0435 \u0443\u043c\u0435\u0435\u0442 \u043d\u0438\u0447\u0435\u0433\u043e, \u043a\u0440\u043e\u043c\u0435 \u043b\u043e\u043a\u0430\u043b\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u044b\u0445 ANSI-\u043a\u043e\u0434\u0438\u0440\u043e\u0432\u043e\u043a \u0438 \u043e\u0447\u0435\u043d\u044c \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u043d\u043e\u0439 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0438 UTF16 \u0438\u0437-\u0437\u0430 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u0441\u0440\u0435\u0434\u0430\u043c VB4-VB6 \u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430\u043c, \u0441\u043e\u0431\u0440\u0430\u043d\u043d\u044b\u0445 \u043d\u0430 \u043d\u0438\u0445, \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043b\u043e\u0441\u044c \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043d\u0430 Windows 9x, \u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e\u0449\u0438\u0445 \u044e\u043d\u0438\u043a\u043e\u0434. \u0418\u0437-\u0437\u0430 \u044d\u0442\u043e\u0433\u043e \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u044e\u0442 \u0441\u0435\u0440\u044c\u0451\u0437\u043d\u044b\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u043f\u0440\u0438 \u0440\u0430\u0431\u043e\u0442\u0435 \u0438\u0433\u0440\u044b \u043d\u0430 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0430\u0445 \u043f\u043e \u0432\u0441\u0435\u043c\u0443 \u043c\u0438\u0440\u0443. \u041f\u043e\u044d\u0442\u043e\u043c\u0443, \u043d\u0435\u043b\u044c\u0437\u044f \u0438\u043c\u0435\u043d\u043e\u0432\u0430\u0442\u044c \u0438\u0433\u0440\u043e\u0432\u044b\u0435 \u0444\u0430\u0439\u043b\u044b \u043d\u0430 \u043a\u0438\u0440\u0438\u043b\u043b\u0438\u0446\u0435, \u0438\u043d\u0430\u0447\u0435 \u0438\u0433\u0440\u0430 \u043d\u0435 \u0437\u0430\u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043d\u0430 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0435 \u0432 \u041a\u0438\u0442\u0430\u0435. \u0418 \u043d\u0430\u043e\u0431\u043e\u0440\u043e\u0442. \u042f \u0440\u0435\u0448\u0438\u043b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0432 \u0438\u0433\u0440\u0435 UTF8, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u044d\u0442\u0430 \u043a\u043e\u0434\u0438\u0440\u043e\u0432\u043a\u0430 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0443\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u044c\u043d\u043e\u0439 \u0438 \u043f\u043e\u0432\u0441\u0435\u043c\u0435\u0441\u0442\u043d\u043e\u0439, \u0445\u043e\u0442\u044c \u0438 \u043e\u0447\u0435\u043d\u044c \u043d\u0435\u0443\u0434\u043e\u0431\u043d\u043e\u0439 \u0434\u043b\u044f \u0437\u0430\u0434\u0430\u0447 \u043f\u043e\u0441\u0438\u043c\u0432\u043e\u043b\u044c\u043d\u043e\u0439 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0442\u0435\u043a\u0441\u0442\u0430, \u0442\u0440\u0435\u0431\u0443\u044e\u0449\u0438\u0445 \u0441\u043a\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432\u0441\u044e \u0441\u0442\u0440\u043e\u043a\u0443. \u0411\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0445 \u0441\u0438\u0441\u0442\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 \u0438\u043c\u0435\u043d\u043d\u043e \u0435\u0451 \u0432 \u0441\u0432\u043e\u0438\u0445 \u0444\u0430\u0439\u043b\u043e\u0432\u044b\u0445 \u0441\u0438\u0441\u0442\u0435\u043c\u0430\u0445. \u041e\u0442\u043b\u0438\u0447\u0430\u0435\u0442\u0441\u044f \u043b\u0438\u0448\u044c Windows, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u0440\u0435\u0434\u043f\u043e\u0447\u0438\u0442\u0430\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043b\u043e\u043a\u0430\u043b\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u044b\u0435 ANSI-\u043a\u043e\u0434\u0438\u0440\u043e\u0432\u043a\u0438 (\u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 \u044f\u0434\u0435\u0440 9x) \u0438 UTF16 (\u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 \u044f\u0434\u0435\u0440 NT). \u0418\u0437-\u0437\u0430 \u0447\u0435\u0433\u043e, \u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u044f\u0445 \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0441 Windows \u044f \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u043b \u043f\u0440\u044f\u043c\u043e\u0435 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u043c\u0435\u0436\u0434\u0443 UTF8 \u0438 UTF16, \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c UTF8 \u0432\u043d\u0443\u0442\u0440\u0438 \u0438\u0433\u0440\u044b, \u0438 UTF16 \u043f\u0440\u0438 \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u0438 \u043a \u0444\u0443\u043d\u043a\u0446\u0438\u044f\u043c \u0441\u0430\u043c\u043e\u0439 Windows.<\/p>\n<p>\u0427\u0442\u043e \u043a\u0430\u0441\u0430\u0435\u0442\u0441\u044f \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0439 \u0441\u0442\u0440\u043e\u043a \u0432 \u0447\u0438\u0441\u043b\u0430, \u0437\u0434\u0435\u0441\u044c \u043e\u043d\u0438 \u0442\u043e\u0436\u0435 \u043b\u043e\u043a\u0430\u043b\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u044b: \u042d\u043d\u0434\u0440\u044e, \u043a\u0430\u043a \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u043e \u043f\u043e \u0430\u043c\u0435\u0440\u0438\u043a\u0430\u043d\u0441\u043a\u0438\u043c \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u0430\u043c, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b \u0442\u043e\u0447\u043a\u0443 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0440\u0430\u0437\u0434\u0435\u043b\u0438\u0442\u0435\u043b\u044f \u0446\u0435\u043b\u043e\u0439 \u0438 \u0434\u0435\u0441\u044f\u0442\u0438\u0447\u043d\u043e\u0439 \u0447\u0430\u0441\u0442\u044f\u043c\u0438 \u0447\u0438\u0441\u0435\u043b. \u0418\u0437-\u0437\u0430 \u044d\u0442\u043e\u0433\u043e, \u0435\u0441\u043b\u0438 \u0432 \u043f\u043e\u043b\u044f\u0445 \u0444\u0430\u0439\u043b\u043e\u0432 \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u043e\u0432\u0430\u043b\u0438 \u0447\u0438\u0441\u043b\u0430 \u0441 \u043f\u043b\u0430\u0432\u0430\u044e\u0449\u0435\u0439 \u0442\u043e\u0447\u043a\u043e\u0439, \u0438\u0433\u0440\u0430 \u043f\u0430\u0434\u0430\u043b\u0430, \u0432\u044b\u0434\u0430\u0432\u0430\u044f \u043e\u0448\u0438\u0431\u043a\u0443 &#171;<u>Runtime Error 13<\/u>&#187; \u043b\u0438\u0448\u044c \u043f\u043e\u0442\u043e\u043c\u0443, \u0447\u0442\u043e \u043f\u043e \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u043c\u0443 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u0443 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432 \u0420\u043e\u0441\u0441\u0438\u0438, \u0432 \u0413\u0435\u0440\u043c\u0430\u043d\u0438\u0438 \u0438 \u0434\u0440\u0443\u0433\u0438\u0445 \u0441\u0442\u0440\u0430\u043d\u0430\u0445), \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0434\u0435\u0441\u044f\u0442\u0438\u0447\u043d\u043e\u0433\u043e \u0440\u0430\u0437\u0434\u0435\u043b\u0438\u0442\u0435\u043b\u044f \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0437\u0430\u043f\u044f\u0442\u0430\u044f. \u042d\u0442\u0430 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043b\u0430 \u043e\u0442 \u0438\u0433\u0440\u043e\u043a\u043e\u0432 \u043c\u0435\u043d\u044f\u0442\u044c \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043e\u0432, \u0447\u0442\u043e\u0431\u044b \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u0442\u043e\u0447\u043a\u0443, \u043b\u0438\u0431\u043e \u0443\u0431\u0438\u0440\u0430\u0442\u044c \u0447\u0438\u0441\u043b\u0430 \u0441 \u043f\u043b\u0430\u0432\u0430\u044e\u0449\u0435\u0439 \u0442\u043e\u0447\u043a\u043e\u0439 \u0438\u0437 \u0438\u0433\u0440\u043e\u0432\u044b\u0445 \u0444\u0430\u0439\u043b\u043e\u0432. \u0412 \u0438\u0442\u043e\u0433\u0435, \u043c\u043d\u0435 \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u043e\u0431\u0451\u0440\u0442\u043a\u0443, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u0442\u044c \u0447\u0438\u0441\u043b\u0430 \u043a\u0430\u043a \u0441 \u0442\u043e\u0447\u043a\u043e\u0439, \u0442\u0430\u043a \u0438 \u0441 \u0437\u0430\u043f\u044f\u0442\u043e\u0439, \u0447\u0442\u043e\u0431\u044b \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0442\u044c \u043f\u043e\u043b\u043d\u0443\u044e \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u044c \u0441\u043e \u0432\u0441\u0435\u043c\u0438.<\/p>\n<h3>\u0413\u0440\u0430\u0444\u0438\u043a\u0430<\/h3>\n<p>\u0414\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u0438\u0433\u0440\u044b \u0431\u044b\u043b\u0430 \u0441\u043e\u0437\u0434\u0430\u043d\u0430 \u0444\u043e\u0440\u043c\u0430, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0438 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u043b\u0430 \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u043a\u0430 \u0432\u0441\u0435\u0439 \u0438\u0433\u0440\u044b. \u0414\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u0433\u0440\u0430\u0444\u0438\u043a\u043e\u0439 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0430\u0441\u044c \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 GDI \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e:<\/p>\n<pre><code class=\"vbscript\">Public Declare Function BitBlt Lib \"gdi32\" (ByVal hDestDC As Long, ByVal X As Long, ByVal Y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hSrcDC As Long, ByVal xSrc As Long, ByVal ySrc As Long, ByVal dwRop As Long) As Long Public Declare Function StretchBlt Lib \"gdi32\" (ByVal hdc As Long, ByVal X As Long, ByVal Y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hSrcDC As Long, ByVal xSrc As Long, ByVal ySrc As Long, ByVal nSrcWidth As Long, ByVal nSrcHeight As Long, ByVal dwRop As Long) As Long Public Declare Function CreateCompatibleBitmap Lib \"gdi32\" (ByVal hdc As Long, ByVal nWidth As Long, ByVal nHeight As Long) As Long Public Declare Function CreateCompatibleDC Lib \"gdi32\" (ByVal hdc As Long) As Long Public Declare Function GetDC Lib \"user32\" (ByVal hWnd As Long) As Long Public Declare Function SelectObject Lib \"gdi32\" (ByVal hdc As Long, ByVal hObject As Long) As Long Public Declare Function DeleteObject Lib \"gdi32\" (ByVal hObject As Long) As Long Public Declare Function DeleteDC Lib \"gdi32\" (ByVal hdc As Long) As Long Public Declare Function GetWindowDC Lib \"user32.dll\" (ByVal hWnd As Long) As Long<\/code><\/pre>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/539\/b51\/3bf\/539b513bf7554c3427cd8c8096086ddf.png\" alt=\"\u0413\u043b\u0430\u0432\u043d\u0430\u044f \u0444\u043e\u0440\u043c\u0430 \u0438\u0433\u0440\u044b \u0438 \u043a\u043e\u0434, \u0440\u0438\u0441\u0443\u044e\u0449\u0438\u0439 \u043d\u0430 \u043d\u0435\u0439 \u0438\u0433\u0440\u043e\u0432\u0443\u044e \u0441\u0446\u0435\u043d\u0443 \u0438\u0437 \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u044b.\" title=\"\u0413\u043b\u0430\u0432\u043d\u0430\u044f \u0444\u043e\u0440\u043c\u0430 \u0438\u0433\u0440\u044b \u0438 \u043a\u043e\u0434, \u0440\u0438\u0441\u0443\u044e\u0449\u0438\u0439 \u043d\u0430 \u043d\u0435\u0439 \u0438\u0433\u0440\u043e\u0432\u0443\u044e \u0441\u0446\u0435\u043d\u0443 \u0438\u0437 \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u044b.\" width=\"1913\" height=\"923\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/539\/b51\/3bf\/539b513bf7554c3427cd8c8096086ddf.png\"\/><\/p>\n<div><figcaption>\u0413\u043b\u0430\u0432\u043d\u0430\u044f \u0444\u043e\u0440\u043c\u0430 \u0438\u0433\u0440\u044b \u0438 \u043a\u043e\u0434, \u0440\u0438\u0441\u0443\u044e\u0449\u0438\u0439 \u043d\u0430 \u043d\u0435\u0439 \u0438\u0433\u0440\u043e\u0432\u0443\u044e \u0441\u0446\u0435\u043d\u0443 \u0438\u0437 \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u044b.<\/figcaption><\/div>\n<\/figure>\n<p>\u0418\u0433\u0440\u0430 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u043b\u0430 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 \u0444\u043e\u0440\u043c\u0430\u0442\u0430\u043c\u0438 GIF, JPEG \u0438 BMP. \u041a \u043d\u0435\u0441\u0447\u0430\u0441\u0442\u044c\u044e, \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u0430\u0442\u044c \u0441 \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e\u0439 \u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u043e\u0441\u0442\u044c\u044e \u0447\u0435\u0440\u0435\u0437 GDI \u0431\u044b\u043b\u0430 \u0441\u043b\u043e\u0436\u043d\u0430\u044f \u0437\u0430\u0434\u0430\u0447\u0430, \u042d\u043d\u0434\u0440\u044e \u0440\u0435\u0448\u0438\u043b \u0435\u0451 \u043c\u0435\u0442\u043e\u0434\u043e\u043c \u0431\u0438\u0442\u043e\u0432\u043e\u0439 \u043c\u0430\u0441\u043a\u0438. \u0422\u043e \u0435\u0441\u0442\u044c, \u043f\u0440\u043e\u0441\u0442\u044b\u043c\u0438 \u0441\u043b\u043e\u0432\u0430\u043c\u0438, \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0430 \u0440\u0430\u0437\u0431\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u0434\u0432\u0435 \u0447\u0430\u0441\u0442\u0438: \u043e\u0441\u043d\u043e\u0432\u043d\u0430\u044f \u0438 \u043c\u0430\u0441\u043a\u0430. \u041e\u0441\u043d\u043e\u0432\u043d\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u044d\u0442\u043e \u043e\u0431\u044b\u0447\u043d\u0430\u044f \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0430, \u043d\u043e \u0441 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0447\u0451\u0440\u043d\u044b\u043c \u0444\u043e\u043d\u043e\u043c.<\/p>\n<figure class=\"\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/871\/b6d\/c3a\/871b6dc3a654f340efebb943581006a0.gif\" alt=\"\u0424\u0440\u043e\u043d\u0442\u0430\u043b\u044c\u043d\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0438 - \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0447\u0451\u0440\u043d\u044b\u0439 \u0444\u043e\u043d, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0440\u0435\u0432\u0440\u0430\u0442\u0438\u0442\u0441\u044f \u0432 \u0444\u043e\u043d \u0447\u0435\u0440\u0435\u0437 \u0418\u041b\u0418\" title=\"\u0424\u0440\u043e\u043d\u0442\u0430\u043b\u044c\u043d\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0438 - \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0447\u0451\u0440\u043d\u044b\u0439 \u0444\u043e\u043d, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0440\u0435\u0432\u0440\u0430\u0442\u0438\u0442\u0441\u044f \u0432 \u0444\u043e\u043d \u0447\u0435\u0440\u0435\u0437 \u0418\u041b\u0418\" width=\"96\" height=\"106\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/871\/b6d\/c3a\/871b6dc3a654f340efebb943581006a0.gif\"\/><\/p>\n<div><figcaption>\u0424\u0440\u043e\u043d\u0442\u0430\u043b\u044c\u043d\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0438 &#8212; \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0447\u0451\u0440\u043d\u044b\u0439 \u0444\u043e\u043d, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0440\u0435\u0432\u0440\u0430\u0442\u0438\u0442\u0441\u044f \u0432 \u0444\u043e\u043d \u0447\u0435\u0440\u0435\u0437 \u0418\u041b\u0418<\/figcaption><\/div>\n<\/figure>\n<p>\u041c\u0430\u0441\u043a\u0430 &#8212; \u044d\u0442\u043e \u0447\u0451\u0440\u043d\u043e-\u0431\u0435\u043b\u0430\u044f \u043a\u0430\u0440\u0442\u0430, \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u044e\u0449\u0430\u044f \u043f\u0438\u043a\u0441\u0435\u043b\u0438 \u0441 \u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u043e\u0441\u0442\u044c\u044e \u0438 \u0431\u0435\u0437.<\/p>\n<figure class=\"\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/670\/962\/bfd\/670962bfd93ee720101463272e8156e1.gif\" alt=\"\u0411\u0438\u0442\u043e\u0432\u0430\u044f \u043c\u0430\u0441\u043a\u0430, \u0442\u0430\u043c \u0433\u0434\u0435 \u043f\u0438\u043a\u0441\u0435\u043b\u0438 \u0431\u0435\u043b\u044b\u0435 - \u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u043e\u0441\u0442\u044c, \u0442\u0430\u043c \u0433\u0434\u0435 \u0447\u0451\u0440\u043d\u044b\u0435 - \u0431\u0443\u0434\u0443\u0442 \u0437\u0430\u043a\u0440\u0430\u0448\u0435\u043d\u044b\" title=\"\u0411\u0438\u0442\u043e\u0432\u0430\u044f \u043c\u0430\u0441\u043a\u0430, \u0442\u0430\u043c \u0433\u0434\u0435 \u043f\u0438\u043a\u0441\u0435\u043b\u0438 \u0431\u0435\u043b\u044b\u0435 - \u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u043e\u0441\u0442\u044c, \u0442\u0430\u043c \u0433\u0434\u0435 \u0447\u0451\u0440\u043d\u044b\u0435 - \u0431\u0443\u0434\u0443\u0442 \u0437\u0430\u043a\u0440\u0430\u0448\u0435\u043d\u044b\" width=\"96\" height=\"106\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/670\/962\/bfd\/670962bfd93ee720101463272e8156e1.gif\"\/><\/p>\n<div><figcaption>\u0411\u0438\u0442\u043e\u0432\u0430\u044f \u043c\u0430\u0441\u043a\u0430, \u0442\u0430\u043c \u0433\u0434\u0435 \u043f\u0438\u043a\u0441\u0435\u043b\u0438 \u0431\u0435\u043b\u044b\u0435 &#8212; \u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u043e\u0441\u0442\u044c, \u0442\u0430\u043c \u0433\u0434\u0435 \u0447\u0451\u0440\u043d\u044b\u0435 &#8212; \u0431\u0443\u0434\u0443\u0442 \u0437\u0430\u043a\u0440\u0430\u0448\u0435\u043d\u044b<\/figcaption><\/div>\n<\/figure>\n<p>\u0421\u0430\u043c \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u043a\u0438 \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0438\u0437 \u0434\u0432\u0443\u0445 \u044d\u0442\u0430\u043f\u043e\u0432:<\/p>\n<pre><code class=\"vbscript\">' \u041e\u0442\u0440\u0438\u0441\u043e\u0432\u043a\u0430 \u043c\u0430\u0441\u043a\u0438, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u043f\u043e\u0431\u0438\u0442\u043e\u0432\u043e\u0435 \u0418  ' \u043c\u0435\u0436\u0434\u0443 \u043a\u0430\u0436\u0434\u044b\u043c \u043f\u0438\u043a\u0441\u0435\u043b\u0435\u043c \u0446\u0435\u043b\u0435\u0432\u043e\u0439 \u043f\u043e\u0432\u0435\u0440\u0445\u043d\u043e\u0441\u0442\u0438 \u0438 \u043c\u0430\u0441\u043a\u0438. ' \u0411\u0435\u043b\u044b\u0435 \u043f\u0438\u043a\u0441\u0435\u043b\u0438 \u043e\u0441\u0442\u0430\u0432\u044f\u0442 \u0444\u043e\u043d \u043d\u0435\u0442\u0440\u043e\u043d\u0443\u0442\u044b\u043c, \u0447\u0451\u0440\u043d\u044b\u0435 \u0437\u0430\u043a\u0440\u0430\u0441\u044f\u0442 \u0435\u0433\u043e BitBlt targetDCSurface, X, Y, W, H, mask.hdc, 0, 0, vbSrcAnd  ' \u041e\u0442\u0440\u0438\u0441\u043e\u0432\u043a\u0430 \u043f\u0435\u0440\u0435\u0434\u043d\u0435\u0433\u043e \u043f\u043b\u0430\u043d\u0430 \u043f\u043e\u0432\u0435\u0440\u0445 \u043c\u0430\u0441\u043a\u0438 \u043d\u0430 \u0442\u0443 \u0436\u0435 \u043f\u043e\u0432\u0435\u0440\u0445\u043d\u043e\u0441\u0442\u044c, ' \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u043f\u043e\u0431\u0438\u0442\u043e\u0432\u043e\u0435 \u0418\u041b\u0418 \u043c\u0435\u0436\u0434\u0443 \u043a\u0430\u0436\u0434\u044b\u043c \u043f\u0438\u043a\u0441\u0435\u043b\u0435\u043c \u043f\u043e\u0432\u0435\u0440\u0445\u043d\u043e\u0441\u0442\u0438 \u0438 \u043c\u0430\u0441\u043a\u0438. ' \u0422\u0430\u043c \u0433\u0434\u0435 \u0447\u0451\u0440\u043d\u044b\u0435 \u043f\u0438\u043a\u0441\u0435\u043b\u0438, \u0446\u0432\u0435\u0442 \u043d\u0435 \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u0441\u044f, \u0430 \u0442\u0430\u043c \u0433\u0434\u0435 \u0446\u0432\u0435\u0442\u043d\u044b\u0435, \u0431\u0443\u0434\u0443\u0442 \u043f\u043e\u0431\u0438\u0442\u043e\u0433\u043e ' \u0441\u043c\u0435\u0448\u0430\u043d\u044b \u0441 \u0444\u043e\u043d\u043e\u043c. \u0415\u0441\u043b\u0438 \u043d\u0430 \u0444\u043e\u043d\u0435 \u0443\u0436\u0435 \u043d\u0430\u0440\u0438\u0441\u043e\u0432\u0430\u043d \u0447\u0451\u0440\u043d\u044b\u0439 \u0441\u0438\u043b\u0443\u0435\u0442, \u0442\u043e \u043f\u0435\u0440\u0435\u0434\u043d\u0438\u0439 \u043f\u043b\u0430\u043d ' \u043e\u0442\u0440\u0438\u0441\u0443\u0435\u0442\u0441\u044f \u043f\u043e\u0432\u0435\u0440\u0445 \u043d\u0435\u0433\u043e \u0431\u0435\u0437 \u0446\u0432\u0435\u0442\u043e\u0432\u044b\u0445 \u0438\u0441\u043a\u0430\u0436\u0435\u043d\u0438\u0439. BitBlt targetDCSurface, X, Y, W, H, front.hdc, 0, 0, vbSrcPaint<\/code><\/pre>\n<p>\u0422\u0430\u043a\u043e\u0439 \u043c\u0435\u0442\u043e\u0434 \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u043a\u0438 \u043d\u0435 \u0441\u043c\u043e\u0442\u0440\u044f \u043d\u0430 \u0441\u0432\u043e\u044e \u043f\u0440\u043e\u0441\u0442\u043e\u0442\u0443 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f, \u0438\u043c\u0435\u0435\u0442 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0439:<\/p>\n<ul>\n<li>\n<p>\u041e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u043f\u043e\u043d\u044f\u0442\u0438\u0435 \u043f\u043e\u043b\u0443\u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u043e\u0441\u0442\u0438. \u041f\u043e\u043f\u044b\u0442\u043a\u0438 \u0438\u0437\u043e\u0431\u0440\u0430\u0437\u0438\u0442\u044c \u043f\u043e\u043b\u0443\u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u043e\u0441\u0442\u044c \u043f\u0440\u0438\u0432\u043e\u0434\u044f\u0442 \u043a \u0446\u0432\u0435\u0442\u043e\u0432\u044b\u043c \u0438\u0441\u043a\u0430\u0436\u0435\u043d\u0438\u044f\u043c \u043f\u0438\u043a\u0441\u0435\u043b\u0435\u0439 \u0438 \u0430\u0440\u0442\u0435\u0444\u0430\u043a\u0442\u0430\u043c.<\/p>\n<\/li>\n<li>\n<p>\u0422\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u043f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u043e\u0434\u0433\u043e\u0442\u0430\u0432\u043b\u0438\u0432\u0430\u0442\u044c \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u0443, \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u044f \u043f\u0435\u0440\u0435\u0434\u043d\u0438\u0439 \u043f\u043b\u0430\u043d \u0438 \u043c\u0430\u0441\u043a\u0443 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e.<\/p>\n<\/li>\n<li>\n<p>\u0412 \u043f\u0430\u043c\u044f\u0442\u0438 \u043d\u0430\u0445\u043e\u0434\u044f\u0442\u0441\u044f \u0434\u0432\u0435 \u0447\u0430\u0441\u0442\u0438 \u043e\u0434\u043d\u043e\u0433\u043e \u0438 \u0442\u043e\u0433\u043e \u0436\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0432\u043c\u0435\u0441\u0442\u043e \u043e\u0434\u043d\u043e\u0439.<\/p>\n<\/li>\n<\/ul>\n<p>\u041f\u0435\u0440\u0435\u0434\u043e \u043c\u043d\u043e\u0439 \u0432\u0441\u0442\u0430\u043b\u0430 \u0437\u0430\u0434\u0430\u0447\u0430 \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0430\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u0443 \u0434\u043b\u044f \u0432\u0441\u0435\u0433\u043e \u044d\u0442\u043e\u0433\u043e, \u0438 \u044f \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u043b \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443 SDL2, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043c\u043d\u0435 \u043f\u043e\u043b\u044e\u0431\u0438\u043b\u0430\u0441\u044c \u0443\u0436\u0435 \u0434\u0430\u0432\u043d\u043e. \u041f\u0435\u0440\u0432\u044b\u043c \u0434\u0435\u043b\u043e\u043c \u044f \u0441\u043e\u0437\u0434\u0430\u043b \u043a\u043b\u0430\u0441\u0441-\u043e\u0431\u0451\u0440\u0442\u043a\u0443, \u043d\u0430\u0437\u0432\u0430\u043d\u043d\u044b\u0439 &#171;FrmMain&#187;, \u0432 \u0447\u0435\u0441\u0442\u044c \u0433\u043b\u0430\u0432\u043d\u043e\u0439 \u0444\u043e\u0440\u043c\u044b \u0438\u0433\u0440\u044b. \u0412 \u044d\u0442\u043e\u0439 &#171;\u0444\u043e\u0440\u043c\u0435&#187; \u044f \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043b \u043f\u0440\u044f\u043c\u043e\u0435 \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 \u0441 SDL2 \u043f\u043e \u0447\u0430\u0441\u0442\u0438 \u0433\u0440\u0430\u0444\u0438\u043a\u0438, \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f, \u0441\u043e\u0431\u044b\u0442\u0438\u0439 \u0438 \u0442.\u043f.<\/p>\n<p>\u042f \u0443 \u0441\u0435\u0431\u044f \u0440\u0435\u0448\u0438\u043b \u043e\u0442\u043a\u0430\u0437\u0430\u0442\u044c\u0441\u044f \u043e\u0442 \u043a\u043e\u043d\u0446\u0435\u043f\u0446\u0438\u0438 \u0431\u0438\u0442\u043e\u0432\u043e\u0439 \u043c\u0430\u0441\u043a\u0438 \u0432 \u043f\u043e\u043b\u044c\u0437\u0443 \u0430\u043b\u044c\u0444\u0430-\u043a\u0430\u043d\u0430\u043b\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u043e \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u043b\u0441\u044f \u043d\u0430 \u0441\u0442\u043e\u0440\u043e\u043d\u0435 \u043c\u043d\u043e\u0433\u0438\u0445 \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u044b\u0445 \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u0432, \u0438 \u043d\u0430 \u0441\u0442\u043e\u0440\u043e\u043d\u0435 SDL2, \u0434\u0430\u0436\u0435 \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e\u0439 \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u043a\u0438. \u0427\u0442\u043e\u0431\u044b \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u044c \u0441\u0442\u0430\u0440\u043e\u0439 \u0433\u0440\u0430\u0444\u0438\u043a\u0438, \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u043e\u043c \u0434\u043b\u044f \u0438\u0433\u0440\u044b, \u044f \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043b \u0444\u0443\u043d\u043a\u0446\u0438\u044e, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u0443\u0435\u0442 \u043f\u0430\u0440\u0443 \u043f\u0435\u0440\u0435\u0434+\u043c\u0430\u0441\u043a\u0430 \u0432 \u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u0443\u044e RGBA-\u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0443:<\/p>\n<pre><code class=\"cpp\">void bitmask_to_rgba(FIBITMAP *front, FIBITMAP *mask) {     unsigned int x, y, ym, img_w, img_h, mask_w, mask_h, img_pitch, mask_pitch;      BYTE *img_bits, *mask_bits, *FPixP, *SPixP;     RGBQUAD Npix = {0x00, 0x00, 0x00, 0xFF};   \/* \u0426\u0432\u0435\u0442 \u0446\u0435\u043b\u0435\u0432\u043e\u0433\u043e \u043f\u0438\u043a\u0441\u0435\u043b\u044f *\/     BYTE Bpix[] = {0x00, 0x0, 0x00, 0xFF};   \/* \u0427\u0451\u0440\u043d\u044b\u0439 \u043f\u0438\u043a\u0441\u0435\u043b\u044c-\u0437\u0430\u0433\u043b\u0443\u0448\u043a\u0430 *\/     unsigned short newAlpha = 0xFF; \/* \u0420\u0430\u0441\u0441\u0447\u0438\u0442\u0430\u043d\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0430\u043b\u044c\u0444\u0430-\u043a\u0430\u043d\u0430\u043b\u0430 *\/      BOOL endOfY = FALSE;      if(!mask)         return; \/* \u041d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u0434\u0435\u043b\u0430\u0442\u044c *\/      img_w  = FreeImage_GetWidth(front);     img_h  = FreeImage_GetHeight(front);     img_pitch = FreeImage_GetPitch(front);     mask_w = FreeImage_GetWidth(mask);     mask_h = FreeImage_GetHeight(mask);     mask_pitch = FreeImage_GetPitch(mask);      img_bits  = FreeImage_GetBits(front);     mask_bits = FreeImage_GetBits(mask);     FPixP = img_bits;     SPixP = mask_bits;      ym = mask_h - 1;     y = img_h - 1;      while(1)     {         FPixP = img_bits + (img_pitch * y);         if(!endOfY)             SPixP = mask_bits + (mask_pitch * ym);          for(x = 0; (x &lt; img_w); x++)         {             Npix.rgbBlue = ((SPixP[FI_RGBA_BLUE] &amp; 0x7F) | FPixP[FI_RGBA_BLUE]);             Npix.rgbGreen = ((SPixP[FI_RGBA_GREEN] &amp; 0x7F) | FPixP[FI_RGBA_GREEN]);             Npix.rgbRed = ((SPixP[FI_RGBA_RED] &amp; 0x7F) | FPixP[FI_RGBA_RED]);             newAlpha = 255 - (((unsigned short)(SPixP[FI_RGBA_RED]) +                                (unsigned short)(SPixP[FI_RGBA_GREEN]) +                                (unsigned short)(SPixP[FI_RGBA_BLUE])) \/ 3);              if((SPixP[FI_RGBA_RED] > 240u) \/\/ \u041f\u043e\u0447\u0442\u0438 \u0431\u0435\u043b\u044b\u0439                &amp;&amp; (SPixP[FI_RGBA_GREEN] > 240u)                &amp;&amp; (SPixP[FI_RGBA_BLUE] > 240u))                 newAlpha = 0;              newAlpha += (((unsigned short)(FPixP[FI_RGBA_RED]) +                           (unsigned short)(FPixP[FI_RGBA_GREEN]) +                           (unsigned short)(FPixP[FI_RGBA_BLUE])) \/ 3);              if(newAlpha > 255)                 newAlpha = 255;              FPixP[FI_RGBA_BLUE]  = Npix.rgbBlue;             FPixP[FI_RGBA_GREEN] = Npix.rgbGreen;             FPixP[FI_RGBA_RED]   = Npix.rgbRed;             FPixP[FI_RGBA_ALPHA] = (BYTE)(newAlpha);             FPixP += 4;              if(x >= mask_w - 1 || endOfY)                 SPixP = Bpix;             else                 SPixP += 4;         }          if(ym == 0)         {             endOfY = TRUE;             SPixP = Bpix;         }         else             ym--;          if(y == 0)             break;         y--;     } }<\/code><\/pre>\n<p><strong>\u041d\u0430 \u0437\u0430\u043c\u0435\u0442\u043a\u0443:<\/strong> \u042f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443 FreeImage (\u0430 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e <a href=\"https:\/\/github.com\/WohlSoft\/libFreeImage\" rel=\"noopener noreferrer nofollow\">FreeImageLite<\/a>, \u043c\u043e\u0439 \u0443\u0441\u0435\u0447\u0451\u043d\u043d\u044b\u0439 \u0444\u043e\u0440\u043a) \u0434\u043b\u044f \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0438 \u043f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0433\u0440\u0430\u0444\u0438\u043a\u0438 \u0443 \u0441\u0435\u0431\u044f.<\/p>\n<p>\u041e\u0442\u0434\u0435\u043b\u044c\u043d\u0430\u044f \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0443 \u0438\u0433\u0440\u044b \u043a\u0430\u0441\u0430\u043b\u0430\u0441\u044c \u0435\u0451 \u0447\u0440\u0435\u0437\u0432\u044b\u0447\u0430\u0439\u043d\u043e \u0434\u043e\u043b\u0433\u043e\u0439 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0438\u0437-\u0437\u0430 \u043e\u0431\u0438\u043b\u0438\u044f \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432. \u0427\u0442\u043e\u0431\u044b \u0440\u0435\u0448\u0438\u0442\u044c \u044d\u0442\u0443 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443, \u044f \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043b \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u043b\u0435\u043d\u0438\u0432\u043e\u0439 \u0440\u0430\u0441\u043f\u0430\u043a\u043e\u0432\u043a\u0438. \u0422\u043e \u0435\u0441\u0442\u044c, \u044f \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u044e \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0438 \u0441 \u0434\u0438\u0441\u043a\u0430, \u043d\u043e, \u044f \u0438\u0445 \u043d\u0435 \u0434\u0435\u043a\u043e\u0434\u0438\u0440\u0443\u044e \u0434\u043e \u0442\u0435\u0445 \u043f\u043e\u0440, \u043f\u043e\u043a\u0430 \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0434\u0432\u0438\u0436\u043e\u043a \u043d\u0435 \u0437\u0430\u043f\u0440\u043e\u0441\u0438\u0442 \u0438\u0445 \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u043a\u0443. \u0422\u0430\u043a\u0430\u044f \u043a\u043e\u043d\u0446\u0435\u043f\u0446\u0438\u044f \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u043b\u0430 \u043c\u043d\u0435 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0442\u044c \u0438\u0433\u0440\u0443 \u043f\u043e\u0447\u0442\u0438 \u043c\u0433\u043d\u043e\u0432\u0435\u043d\u043d\u043e (\u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u043c\u043e\u0449\u043d\u043e\u0441\u0442\u0438 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0430), \u0430 \u0442\u0430\u043a\u0436\u0435 \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0443\u043c\u0435\u043d\u044c\u0448\u0438\u0442\u044c \u043f\u043e\u0442\u0440\u0435\u0431\u043b\u0435\u043d\u0438\u0435 \u043e\u043f\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u0438 \u0441 \u043f\u043e\u0447\u0442\u0438 600 \u043c\u0435\u0433\u0430\u0431\u0430\u0439\u0442 \u0434\u043e 80~120 \u043c\u0435\u0433\u0430\u0431\u0430\u0439\u0442. \u041e\u0434\u043d\u0430\u043a\u043e, \u0443 \u044d\u0442\u043e\u0439 \u043a\u043e\u043d\u0446\u0435\u043f\u0446\u0438\u0438 \u0435\u0441\u0442\u044c \u0438 \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043e\u043a: \u0435\u0441\u043b\u0438 \u0434\u0438\u0441\u043a \u0438\u043b\u0438 \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0431\u044b\u0441\u0442\u0440\u044b\u0435, \u0438\u0433\u0440\u0430 \u0431\u0443\u0434\u0435\u0442 \u0441\u043b\u0435\u0433\u043a\u0430 \u043f\u0440\u0438\u0442\u043e\u0440\u043c\u0430\u0436\u0438\u0432\u0430\u0442\u044c \u043f\u0440\u0438 \u043f\u043e\u0434\u0433\u0440\u0443\u0437\u043a\u0435 \u043a\u0430\u0436\u0434\u043e\u0439 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0439 \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u044b, \u0432\u043f\u0435\u0440\u0432\u044b\u0435 \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u044b\u0432\u0430\u044e\u0449\u0435\u0439\u0441\u044f \u043d\u0430 \u044d\u043a\u0440\u0430\u043d\u0435, \u0447\u0435\u0433\u043e \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u0445\u043e\u0440\u043e\u0448\u043e \u0437\u0430\u043c\u0435\u0442\u043d\u043e \u0432 \u0433\u043b\u0430\u0432\u043d\u043e\u043c \u043c\u0435\u043d\u044e, \u0433\u0434\u0435 \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u0434\u0435\u043c\u043a\u0430 \u0441 \u0443\u0447\u0430\u0441\u0442\u0438\u0435\u043c \u043f\u044f\u0442\u0435\u0440\u044b\u0445 \u0438\u0433\u0440\u043e\u0432\u044b\u0445 \u043f\u0435\u0440\u0441\u043e\u043d\u0430\u0436\u0435\u0439, \u0447\u0430\u0441\u0442\u043e \u0441\u043c\u0435\u043d\u044f\u044e\u0449\u0438\u0445 \u0441\u0432\u043e\u0438 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f.<\/p>\n<p>\u0421\u0430\u043c\u0443 \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u043a\u0443 \u044f \u0434\u0435\u043b\u0430\u044e \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c SDL_Renderer, \u0441\u0434\u0435\u043b\u0430\u0432 \u043a\u043e\u043d\u0435\u0447\u043d\u044b\u0439 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043f\u0440\u043e\u0449\u0435 \u0438 \u0433\u0438\u0431\u0447\u0435. SDL2 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u0432 \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0443\u0441\u043a\u043e\u0440\u0438\u0442\u0435\u043b\u0435\u0439: \u0438 OpenGL, \u0438 DirectX, \u0438 Metal. \u0422\u0430\u043a\u0436\u0435 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u0442\u0441\u044f \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e\u0439 \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u043a\u0438 \u0432 \u0441\u043b\u0443\u0447\u0430\u0435, \u0435\u0441\u043b\u0438 \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0437\u0430\u0434\u0435\u0439\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u043e\u0434\u0438\u043d \u0438\u0437 \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u044b\u0445 \u043c\u0435\u0442\u043e\u0434\u043e\u0432 \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u043a\u0438.<\/p>\n<h3>\u0417\u0432\u0443\u043a \u0438 \u043c\u0443\u0437\u044b\u043a\u0430<\/h3>\n<p>\u0418\u0433\u0440\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0430 \u0434\u043b\u044f \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u043c\u0443\u0437\u044b\u043a\u0438 \u0438 \u0437\u0432\u0443\u043a\u0430 \u0441\u0442\u0430\u0440\u0438\u043d\u043d\u044b\u0439 <a href=\"https:\/\/docs.microsoft.com\/ru-ru\/windows\/win32\/multimedia\/mci\" rel=\"noopener noreferrer nofollow\">\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 MCI<\/a>, \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 \u0435\u0449\u0451 \u0441\u043e \u0432\u0440\u0435\u043c\u0451\u043d Windows 3.1.<\/p>\n<pre><code class=\"vbscript\">Public Declare Function mciSendString Lib \"winmm.dll\" Alias \"mciSendStringA\" (ByVal lpstrCommand As String, ByVal lpstrReturnString As String, ByVal uReturnLength As Integer, ByVal hwndCallback As Integer) As Integer<\/code><\/pre>\n<p>\u042d\u0442\u043e\u0442 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u043b \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043e\u0434\u043d\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043f\u043e\u0441\u044b\u043b\u0430\u0442\u044c \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u0434\u043b\u044f \u043e\u0442\u043a\u0440\u044b\u0442\u0438\u044f \u0430\u0443\u0434\u0438\u043e-\u0444\u0430\u0439\u043b\u043e\u0432 \u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0438\u043c\u0438: \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u0435, \u043f\u0440\u0438\u043e\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430, \u043f\u043e\u0432\u0442\u043e\u0440, \u0433\u0440\u043e\u043c\u043a\u043e\u0441\u0442\u044c, \u0438 \u0442.\u043f. \u0421\u0430\u043c\u044b\u0439 \u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043e\u043a \u043f\u043e\u0434\u043e\u0431\u043d\u043e\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 \u0437\u0430\u043a\u043b\u044e\u0447\u0430\u043b\u0441\u044f \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043b\u043e\u0441\u044c \u0434\u043e\u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0442\u044c \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043f\u0430\u043a\u0435\u0442\u044b \u043a\u043e\u0434\u0435\u043a\u043e\u0432. \u0418\u0437-\u0437\u0430 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u0438\u0433\u0440\u0430 \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u0442 \u0434\u0435\u0441\u044f\u0442\u043a\u0438 \u0430\u0443\u0434\u0438\u043e\u0444\u0430\u0439\u043b\u043e\u0432 \u0447\u0435\u0440\u0435\u0437 MCI, \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0438\u0433\u0440\u044b, \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0439 \u0442\u0440\u0435\u0439 \u0437\u0430\u0441\u043e\u0440\u044f\u043b\u0441\u044f \u0437\u043d\u0430\u0447\u043a\u0430\u043c\u0438 FFDshow \u0438 \u043f\u043e\u0434\u043e\u0431\u043d\u044b\u043c\u0438 (\u0435\u0441\u043b\u0438 \u043d\u0435 \u0431\u044b\u043b\u043e \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u043e \u0432 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u0445 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445 \u043a\u043e\u0434\u0435\u043a\u043e\u0432). \u0422\u0430\u043a\u0436\u0435 \u0441\u0430\u043c \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u043f\u043e\u0434\u043e\u0431\u043d\u043e\u0439 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0431\u044b\u043b \u0447\u0440\u0435\u0437\u0432\u044b\u0447\u0430\u0439\u043d\u043e \u0434\u043e\u043b\u0433\u0438\u043c. \u041f\u043e \u0444\u0430\u043a\u0442\u0443, \u0447\u0435\u0440\u0435\u0437 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0440\u0430\u0431\u043e\u0442\u0430\u043b\u0438 \u0444\u043e\u0440\u043c\u0430\u0442\u044b MP3, WAV, WMA, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043a\u0440\u0438\u0432\u043e-\u043a\u043e\u0441\u043e MIDI.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/b67\/bc7\/117\/b67bc7117f191acc6cb6331e33328961.png\" alt=\"\u0421\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0439 \u043b\u043e\u0442\u043e\u043a, \u0437\u0430\u0441\u043e\u0440\u0451\u043d\u043d\u044b\u0439 \u0437\u043d\u0430\u0447\u043a\u0430\u043c\u0438 \u043a\u043e\u0434\u0435\u043a\u0430 Lav\" title=\"\u0421\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0439 \u043b\u043e\u0442\u043e\u043a, \u0437\u0430\u0441\u043e\u0440\u0451\u043d\u043d\u044b\u0439 \u0437\u043d\u0430\u0447\u043a\u0430\u043c\u0438 \u043a\u043e\u0434\u0435\u043a\u0430 Lav\" width=\"678\" height=\"734\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/b67\/bc7\/117\/b67bc7117f191acc6cb6331e33328961.png\"\/><\/p>\n<div><figcaption>\u0421\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0439 \u043b\u043e\u0442\u043e\u043a, \u0437\u0430\u0441\u043e\u0440\u0451\u043d\u043d\u044b\u0439 \u0437\u043d\u0430\u0447\u043a\u0430\u043c\u0438 \u043a\u043e\u0434\u0435\u043a\u0430 Lav<\/figcaption><\/div>\n<\/figure>\n<p>\u042f \u0440\u0435\u0448\u0438\u043b \u0438\u0437\u0431\u0430\u0432\u0438\u0442\u044c\u0441\u044f \u043e\u0442 \u0442\u0430\u043a\u043e\u0433\u043e \u043d\u0435\u0434\u043e\u0440\u0430\u0437\u0443\u043c\u0435\u043d\u0438\u044f \u043a\u0430\u043a MCI \u0435\u0449\u0451 5 \u043b\u0435\u0442 \u043d\u0430\u0437\u0430\u0434. \u041c\u043d\u043e\u044e, \u043d\u0430 \u0431\u0430\u0437\u0435 \u0445\u0430\u043a\u0435\u0440\u0441\u043a\u043e\u0433\u043e \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f LunaLua, \u0431\u044b\u043b\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 SDL2_mixer (\u0430 \u0437\u0430\u0442\u0435\u043c \u0444\u043e\u0440\u043a\u0430 <a href=\"https:\/\/github.com\/WohlSoft\/SDL-Mixer-X\" rel=\"noopener noreferrer nofollow\">SDL Mixer X<\/a>), \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0440\u0430\u0431\u043e\u0442\u0430\u043b\u0430 \u0441 \u043c\u0443\u0437\u044b\u043a\u043e\u0439 \u0438 \u0437\u0432\u0443\u043a\u043e\u0432\u044b\u043c\u0438 \u044d\u0444\u0444\u0435\u043a\u0442\u0430\u043c\u0438 \u043d\u0430\u043c\u043d\u043e\u0433\u043e \u043b\u0443\u0447\u0448\u0435, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0441\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u043d\u043e \u043d\u0435 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043b\u0430 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u043a\u0430\u043a\u0438\u0445 \u043b\u0438\u0431\u043e \u0432\u043d\u0435\u0448\u043d\u0438\u0445 \u043a\u043e\u0434\u0435\u043a\u043e\u0432, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0432\u0441\u0435 \u043d\u0443\u0436\u043d\u044b\u0435 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u0443\u0436\u0435 \u0431\u044b\u043b\u0438 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u044b \u0432 \u0435\u0451 \u0441\u043e\u0441\u0442\u0430\u0432. \u0412\u043c\u0435\u0441\u0442\u0435 \u0441 \u044d\u0442\u0438\u043c \u0431\u044b\u043b\u0430 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0430 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u0431\u043e\u043b\u044c\u0448\u043e\u0433\u043e \u0447\u0438\u0441\u043b\u0430 \u043d\u043e\u0432\u044b\u0445 \u0444\u043e\u0440\u043c\u0430\u0442\u043e\u0432: \u0438 OGG Vorbis, \u0438 FLAC, \u0438 \u043e\u0433\u0440\u043e\u043c\u043d\u043e\u0433\u043e \u0447\u0438\u0441\u043b\u0430 \u0444\u043e\u0440\u043c\u0430\u0442\u043e\u0432 \u0442\u0440\u0435\u043a\u0435\u0440\u043d\u043e\u0439 \u043c\u0443\u0437\u044b\u043a\u0438, \u0438 \u0443\u043b\u0443\u0447\u0448\u0435\u043d\u043d\u0430\u044f \u043f\u043e\u0434\u0434\u0435\u0440\u043a\u0430 MIDI. \u0422\u0430\u043a\u0436\u0435 \u043f\u043e\u044f\u0432\u0438\u043b\u0430\u0441\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0438\u0433\u0440\u0430\u0442\u044c \u0434\u0443\u0431\u043b\u0438\u0440\u0443\u044e\u0449\u0438\u0435 \u0437\u0432\u0443\u043a\u043e\u0432\u044b\u0435 \u044d\u0444\u0444\u0435\u043a\u0442\u044b \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u043e.<\/p>\n<h3>\u0424\u0430\u0439\u043b\u043e\u0432\u0430\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u0430<\/h3>\n<p>\u0412 Visual Basic \u0431\u044b\u043b\u043e \u043c\u043d\u043e\u0433\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u0439, \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0449\u0438\u0445 \u0441 \u0444\u0430\u0439\u043b\u043e\u0432\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u043e\u0439: \u0431\u044b\u043b\u0430 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0442\u044c \u0444\u0430\u0439\u043b \u043d\u0430 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u043d\u0438\u0435, \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u044f\u0442\u044c \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438, \u043f\u0435\u0440\u0435\u0438\u043c\u0435\u043d\u043e\u0432\u044b\u0432\u0430\u0442\u044c \u0438 \u0443\u0434\u0430\u043b\u044f\u0442\u044c \u0444\u0430\u0439\u043b\u044b \u0438 \u0442.\u043f. \u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0443 \u043c\u0435\u043d\u044f \u0431\u044b\u043b\u0430 \u0446\u0435\u043b\u044c \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043f\u0440\u043e\u0435\u043a\u0442 \u043a\u0440\u043e\u0441\u0441\u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0435\u043d\u043d\u044b\u043c, \u044f \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u043b \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u0432\u043e\u0438\u0445 \u043e\u0431\u0451\u0440\u0442\u043e\u043a (<a href=\"https:\/\/github.com\/WohlSoft\/DirManager\/\" rel=\"noopener noreferrer nofollow\">\u043e\u0434\u043d\u0430 \u0438\u0437 \u043d\u0438\u0445<\/a> \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044f\u043c\u0438), \u043a\u043e\u0442\u043e\u0440\u044b\u043c\u0438 \u044f \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u043b \u043f\u043e\u0442\u0440\u0435\u0431\u043d\u043e\u0441\u0442\u0438 \u043a\u043e\u0434\u0430 \u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u044f\u0445 \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u0444\u0430\u0439\u043b\u043e\u0432\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u043e\u0439. <\/p>\n<p>\u041e\u0442\u0434\u0435\u043b\u044c\u043d\u043e \u0431\u043e\u043b\u044c\u0448\u0430\u044f \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 &#8212; \u044d\u0442\u043e \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u043e\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u044b\u0435 \u0444\u0430\u0439\u043b\u043e\u0432\u044b\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u044b. \u0418\u0437-\u0437\u0430 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u0434\u043b\u044f \u0438\u0433\u0440\u044b \u0447\u0430\u0441\u0442\u0435\u043d\u044c\u043a\u043e \u043c\u043e\u0436\u043d\u043e \u0432\u0441\u0442\u0440\u0435\u0442\u0438\u0442\u044c \u044d\u043f\u0438\u0437\u043e\u0434\u044b, \u0433\u0434\u0435 \u043f\u043e\u043b\u043d\u0430\u044f \u043a\u0430\u0448\u0430 \u0432 \u0438\u043c\u0435\u043d\u0430\u0445 \u0444\u0430\u0439\u043b\u043e\u0432 (\u0447\u0430\u0449\u0435 \u0432\u0441\u0435\u0433\u043e, \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442\u0441\u044f \u0441 \u0437\u0430\u0433\u043b\u0430\u0432\u043d\u043e\u0439 \u0431\u0443\u043a\u0432\u044b \u0432\u043c\u0435\u0441\u0442\u043e \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u043e\u0439, \u043b\u0438\u0431\u043e \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 \u0438\u043c\u0435\u043d\u0438 \u0444\u0430\u0439\u043b\u0430 \u0437\u0430\u043f\u0438\u0441\u0430\u043d\u043e \u0431\u043e\u043b\u044c\u0448\u0438\u043c\u0438 \u0431\u0443\u043a\u0432\u0430\u043c\u0438, \u0430 \u043d\u0435 \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u0438\u043c\u0438). \u0418\u0437-\u0437\u0430 \u044d\u0442\u043e\u0433\u043e, \u043c\u043d\u0435 \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u043e\u0431\u0451\u0440\u0442\u043a\u0443, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u0440\u043e\u0447\u0451\u0441\u044b\u0432\u0430\u043b\u0430 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438, \u0438 \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u043b\u0430 \u0438\u043c\u0435\u043d\u0430 \u0444\u0430\u0439\u043b\u043e\u0432 \u0438 \u043f\u0443\u0442\u0438 \u0432 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0438 \u0441 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u043e\u043c \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0435, \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432\u0430\u044f \u0432\u0438\u0434\u0438\u043c\u043e\u0441\u0442\u044c \u0432\u0441\u0435\u043c \u0442\u0435\u043c \u043a\u0440\u0438\u0432\u043e-\u0438\u043c\u0435\u043d\u043e\u0432\u0430\u043d\u043d\u044b\u043c \u0444\u0430\u0439\u043b\u0430\u043c \u043d\u0430 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u043e\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u044b\u0445 \u0444\u0430\u0439\u043b\u043e\u0432\u044b\u0445 \u0441\u0438\u0441\u0442\u0435\u043c\u0430\u0445.<\/p>\n<h3>\u041a\u043b\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u0430, \u043c\u044b\u0448\u044c, \u0433\u0435\u0439\u043c\u043f\u0430\u0434\u044b<\/h3>\n<p>\u0414\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u043a\u043b\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u043e\u0439, \u0432 \u0438\u0433\u0440\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0438\u0441\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u0438 WinAPI \u043d\u0430 \u0431\u0430\u0437\u0435 Virtual Key. \u0418\u0437-\u0437\u0430 \u044d\u0442\u043e\u0433\u043e \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u043b\u0438 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u043f\u0440\u0438 \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0438 \u0440\u0430\u0441\u043a\u043b\u0430\u0434\u043e\u043a, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u043b\u0438 \u0442\u0440\u0443\u0434\u043d\u043e\u0441\u0442\u0438 \u043d\u0430 \u043a\u043b\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u0430\u0445 QWERTZ \u0438 AZERTY, \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b\u0445 \u0432 \u0413\u0435\u0440\u043c\u0430\u043d\u0438\u0438 \u0438 \u0424\u0440\u0430\u043d\u0446\u0438\u0438. \u0427\u0442\u043e\u0431\u044b \u0440\u0435\u0448\u0438\u0442\u044c \u0432\u0441\u0435 \u044d\u0442\u0438 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b, \u044f \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u043b \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 SDL2, \u043f\u0435\u0440\u0435\u043e\u0440\u0438\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u0432 \u0438\u0433\u0440\u043e\u0432\u043e\u0435 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043d\u0430 \u0441\u043a\u0430\u043d\u043a\u043e\u0434\u044b. \u041e\u043d\u0438 \u043f\u0440\u0438\u0432\u044f\u0437\u0430\u043d\u044b \u043a \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u0438\u043c \u043a\u043b\u0430\u0432\u0438\u0448\u0430\u043c \u0438 \u0430\u0431\u0441\u043e\u043b\u044e\u0442\u043d\u043e \u043d\u0435 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u044b \u043e\u0442 \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u0440\u0430\u0441\u043a\u043b\u0430\u0434\u043a\u0438.<\/p>\n<p>\u0414\u043b\u044f \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0438 \u0433\u0435\u0439\u043c\u043f\u0430\u0434\u043e\u0432 \u0432 \u0438\u0433\u0440\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0438\u0441\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 WinMM:<\/p>\n<pre><code class=\"vbscript\">Public Declare Function joyGetPosEx Lib \"winmm.dll\" (ByVal uJoyID As Integer, pji As JOYINFOEX) As Integer Public Declare Function joyGetDevCapsA Lib \"winmm.dll\" (ByVal uJoyID As Integer, pjc As JOYCAPS, ByVal cjc As Integer) As Integer Public Type JOYCAPS     wMid As Long     wPid As Long     szPname As String * 32     wXmin As Long     wXmax As Long     wYmin As Long     wYmax As Long     wZmin As Long     wZmax As Long     wNumButtons As Long     wPeriodMin As Long     wPeriodMax As Long     wRmin As Long     wRmax As Long     wUmin As Long     wUmax As Long     wVmin As Long     wVmax As Long     wCaps As Long     wMaxAxes As Long     wNumAxes As Long     wMaxButtons As Long     szRegKey As String * 32     szOEMVxD As String * 260 End Type Public Type JOYINFOEX     dwSize As Long     dwFlags As Long     dwXpos As Long     dwYpos As Long     dwZpos As Long     dwRpos As Long     dwUpos As Long     dwVpos As Long     dwButtons As Long     dwButtonNumber As Long     dwPOV As Long     dwReserved1 As Long     dwReserved2 As Long End Type Public JoyNum As Long Public MYJOYEX As JOYINFOEX Public MYJOYCAPS As JOYCAPS Public CenterX(0 To 7) As Long Public CenterY(0 To 7) As Long Public JoyButtons(-15 To 15) As Boolean Public CurrentJoyX As Long Public CurrentJoyY As Long Public CurrentJoyPOV As Long<\/code><\/pre>\n<p>\u041a \u0441\u0447\u0430\u0441\u0442\u044c\u044e, \u0432 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0435 SDL2 \u0435\u0441\u0442\u044c \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0431\u043e\u043b\u0435\u0435 \u043c\u043e\u0449\u043d\u044b\u0435 \u043f\u043e\u0434\u0441\u0438\u0441\u0442\u0435\u043c\u044b SDL Joystick \u0438 SDL GameController, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0442\u044b\u0441\u044f\u0447\u0438 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u043c\u043e\u0434\u0435\u043b\u0435\u0439 \u0433\u0435\u0439\u043c\u043f\u0430\u0434\u043e\u0432 \u0447\u0435\u0440\u0435\u0437 \u0432\u0441\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0435 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u044b, \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0438 \u043d\u0430 Linux, \u0438 \u043d\u0430 macOS, \u0438 \u043d\u0430 Android. \u0422\u0430\u043a\u0436\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0433\u043e\u0440\u044f\u0447\u0435\u0435 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0438 \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0438\u0433\u0440\u043e\u0432\u044b\u0445 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u043e\u0432 \u043f\u0440\u044f\u043c\u043e \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u0438\u0433\u0440\u044b.<\/p>\n<p>\u0427\u0442\u043e \u043a\u0430\u0441\u0430\u0435\u0442\u0441\u044f \u043c\u044b\u0448\u0438, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0438\u0441\u044c \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0435 \u0441\u043e\u0431\u044b\u0442\u0438\u044f \u0433\u043b\u0430\u0432\u043d\u043e\u0439 \u0444\u043e\u0440\u043c\u044b Form_MouseDown, Form_MouseMove \u0438 Form_MouseUp \u0441 \u043f\u043e\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u0437\u0430\u043f\u0438\u0441\u044c\u044e \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u043a\u043d\u043e\u043f\u043e\u043a \u0438 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044f \u0432 \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u044b\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0435 \u0432 \u043a\u043e\u0434\u0435 \u0441\u0430\u043c\u043e\u0439 \u0438\u0433\u0440\u044b. \u0412 \u043e\u0431\u043d\u043e\u0432\u043b\u0451\u043d\u043d\u043e\u0439 \u0438\u0433\u0440\u0435, \u044f \u0434\u0435\u043b\u0430\u044e \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e\u0435, \u043d\u043e \u0447\u0435\u0440\u0435\u0437 SDL_PollEvent().<\/p>\n<h2>\u0418\u0442\u043e\u0433<\/h2>\n<p>\u0412 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u043f\u0440\u043e\u0434\u0435\u043b\u0430\u043d\u043d\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u044b, \u0432 \u0442\u0435\u0447\u0435\u043d\u0438\u0438 \u043f\u0435\u0440\u0432\u044b\u0445 \u0434\u0432\u0443\u0445-\u0442\u0440\u0451\u0445 \u043d\u0435\u0434\u0435\u043b\u044c \u043f\u043e\u0441\u043b\u0435 \u0432\u044b\u043f\u0443\u0441\u043a\u0430 \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0445 \u043a\u043e\u0434\u043e\u0432 \u0438\u0433\u0440\u044b, \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0430\u0441\u044c \u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u0430\u044f \u0438 \u043a\u0440\u043e\u0441\u0441\u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0435\u043d\u043d\u0430\u044f \u0440\u0435\u043f\u043b\u0438\u043a\u0430 \u0438\u0433\u0440\u044b, \u043a\u0440\u0430\u0439\u043d\u0435 \u043f\u043e\u0445\u043e\u0436\u0430\u044f \u043f\u043e \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u044e \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b (\u043d\u0430\u0441\u0442\u043e\u043b\u044c\u043a\u043e, \u0447\u0442\u043e \u043b\u044e\u0434\u0438 \u0434\u043e \u0441\u0438\u0445 \u043f\u043e\u0440 \u043d\u0430\u0445\u043e\u0434\u044f\u0442 \u0432 \u043d\u0435\u0439 \u0431\u0430\u0433\u0438 10-\u043b\u0435\u0442\u043d\u0435\u0439 \u0434\u0430\u0432\u043d\u043e\u0441\u0442\u0438). \u041e\u0434\u043d\u0430\u043a\u043e, \u0432\u043c\u0435\u0441\u0442\u0435 \u0441\u043e \u0441\u0442\u0430\u0440\u044b\u043c\u0438 \u0431\u0430\u0433\u0430\u043c\u0438, \u043c\u0435\u0441\u0442\u0430\u043c\u0438 \u043f\u043e\u044f\u0432\u0438\u043b\u0438\u0441\u044c \u0438 \u043d\u043e\u0432\u044b\u0435, \u0432 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u043e\u0448\u0438\u0431\u043e\u043a, \u0434\u043e\u043f\u0443\u0449\u0435\u043d\u043d\u044b\u0445 \u043f\u0440\u0438 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0438 \u043a\u043e\u0434\u0430 \u0438\u043b\u0438 \u0438\u0437-\u0437\u0430 \u0443\u043f\u0443\u0449\u0435\u043d\u043d\u044b\u0445 \u0440\u0430\u0437\u043b\u0438\u0447\u0438\u0439 \u0432 \u0440\u0430\u0431\u043e\u0442\u0435 VB6 \u0438 C++, \u043b\u0438\u0431\u043e \u0438\u0437-\u0437\u0430 \u043e\u043f\u0435\u0447\u0430\u0442\u043e\u043a. \u0411\u043e\u043b\u044c\u0448\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u043f\u043e\u0434\u043e\u0431\u043d\u044b\u0445 \u043e\u0448\u0438\u0431\u043e\u043a \u0443\u0436\u0435 \u0431\u044b\u043b\u0430 \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0430 \u043c\u043d\u043e\u044e \u0432 \u0442\u0435\u0447\u0435\u043d\u0438\u0438 \u043c\u0435\u0441\u044f\u0446\u0430, \u0438 \u043f\u043e\u0441\u043b\u0435, \u0432 \u043c\u0430\u0440\u0442\u0435 2020\u0433\u043e \u0433\u043e\u0434\u0430 \u044f \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u043b \u043e\u0431\u043d\u043e\u0432\u043b\u0451\u043d\u043d\u0443\u044e \u0438 \u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u0443\u044e \u0438\u0433\u0440\u0443 \u0432\u043c\u0435\u0441\u0442\u0435 \u0441\u043e \u0432\u0441\u0435\u043c\u0438 \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u043c\u0438 \u043a\u043e\u0434\u0430\u043c\u0438. \u0414\u0430\u043b\u0435\u0435, \u0432 \u0442\u0435\u0447\u0435\u043d\u0438\u0438 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0433\u043e \u0433\u043e\u0434\u0430, \u0434\u043e\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u043b \u0438\u0433\u0440\u0443, \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u044f\u044f \u0431\u0430\u0433\u0438 \u0438 \u0443\u043b\u0443\u0447\u0448\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b.<\/p>\n<p>\u041f\u0440\u043e\u0435\u043a\u0442 \u0434\u0432\u0438\u0436\u043a\u0430 \u044f \u043d\u0430\u0437\u0432\u0430\u043b TheXTech \u043f\u043e \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0443: &#171;<strong>The<\/strong> <u>Super Mario Bros. <\/u><strong><u>X<\/u><\/strong> <strong>Tech<\/strong>&#171;.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/456\/0a5\/4e6\/4560a54e69e7c554a2a6dc52997ac7fe.png\" alt=\"\u0413\u043b\u0430\u0432\u043d\u043e\u0435 \u043c\u0435\u043d\u044e \u0438\u0433\u0440\u044b Super Mario Bros. X \u043d\u0430 \u0431\u0430\u0437\u0435 TheXTech 1.3.5.2\" title=\"\u0413\u043b\u0430\u0432\u043d\u043e\u0435 \u043c\u0435\u043d\u044e \u0438\u0433\u0440\u044b Super Mario Bros. X \u043d\u0430 \u0431\u0430\u0437\u0435 TheXTech 1.3.5.2\" width=\"802\" height=\"622\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/456\/0a5\/4e6\/4560a54e69e7c554a2a6dc52997ac7fe.png\"\/><\/p>\n<div><figcaption>\u0413\u043b\u0430\u0432\u043d\u043e\u0435 \u043c\u0435\u043d\u044e \u0438\u0433\u0440\u044b Super Mario Bros. X \u043d\u0430 \u0431\u0430\u0437\u0435 TheXTech 1.3.5.2<\/figcaption><\/div>\n<\/figure>\n<p>\u0412 \u0438\u0442\u043e\u0433\u0435, \u0438\u0433\u0440\u0430, \u0438\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u0430\u044f \u0436\u0451\u0441\u0442\u043a\u043e \u043f\u043e\u0434 Windows \u043d\u0430 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u043e\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u043c \u044f\u0437\u044b\u043a\u0435 \u0438 \u043d\u0430 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430\u0445 x86, \u043f\u0440\u0435\u0432\u0440\u0430\u0442\u0438\u043b\u0430\u0441\u044c \u0432 \u043a\u0440\u043e\u0441\u0441\u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0435\u043d\u043d\u0443\u044e \u0438\u0433\u0440\u0443, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430 \u0434\u0440\u0443\u0433\u0438\u0445 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0445 \u0441\u0438\u0441\u0442\u0435\u043c\u0430\u0445 (Windows, Linux, macOS, Haiku, Android, Emscripten), \u043d\u043e \u0438 \u043d\u0430 \u0434\u0440\u0443\u0433\u0438\u0445 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430\u0445 (ARM, PowerPC, MIPS, \u0438 \u0434\u0440.). \u0412\u043c\u0435\u0441\u0442\u0435 \u0441 \u044d\u0442\u0438\u043c, \u0438\u0433\u0440\u0430 \u043d\u0430\u043a\u043e\u043d\u0435\u0446 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0430 \u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u0443\u044e \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0443 64-\u0431\u0438\u0442\u043d\u044b\u0445 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043e\u0432 \u0438 ARM-\u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b. \u042d\u043d\u0442\u0443\u0437\u0438\u0430\u0441\u0442\u044b \u0442\u0430\u043a\u0436\u0435 \u043f\u043e\u0440\u0442\u0438\u0440\u0443\u044e\u0442 \u0438\u0433\u0440\u0443 \u043d\u0430 \u043a\u043e\u043d\u0441\u043e\u043b\u0438 (\u0443\u0436\u0435 \u0435\u0441\u0442\u044c \u043f\u0440\u0438\u043c\u0435\u0440\u044b, \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u043d\u0430 <a href=\"https:\/\/github.com\/ds-sloth\/TheXTech3DS\" rel=\"noopener noreferrer nofollow\">3DS<\/a> \u0438 <a href=\"https:\/\/github.com\/Wohlstand\/TheXTech\/tree\/wip-vita-support\" rel=\"noopener noreferrer nofollow\">PS Vita<\/a>).<\/p>\n<p>\u0412 \u043d\u043e\u0432\u043e\u043c \u0434\u0432\u0438\u0436\u043a\u0435 \u0438\u0433\u0440\u044b \u044f \u043d\u0435 \u0441\u0442\u0430\u043b \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u044b\u0432\u0430\u0442\u044c \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0439 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440, \u0438 \u043d\u0435 \u0441\u0442\u0430\u043b \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u044b\u0432\u0430\u0442\u044c \u043d\u0430\u0447\u0430\u043b\u044c\u043d\u0443\u044e \u0444\u043e\u0440\u043c\u0443 \u0434\u043b\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0438\u0433\u0440\u044b \u0438\u043b\u0438 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0430, \u0433\u0434\u0435 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u043b\u0430\u0441\u044c \u0432\u0435\u0431-\u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u0441 \u043d\u043e\u0432\u043e\u0441\u0442\u044f\u043c\u0438 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 (\u043d\u044b\u043d\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u0441\u0430\u0439\u0442 Nintendo), \u0430 \u0442\u0430\u043a\u0436\u0435, \u0431\u044b\u043b\u0430 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0437\u0432\u0443\u043a \u0438 \u043f\u0440\u043e\u043f\u0443\u0441\u043a \u043a\u0430\u0434\u0440\u043e\u0432. \u0412\u043c\u0435\u0441\u0442\u043e \u044d\u0442\u043e\u0433\u043e, \u044f \u0440\u0435\u0448\u0438\u043b \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0434\u043b\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0438\u0433\u0440\u044b \u0447\u0435\u0440\u0435\u0437 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u044b \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0432\u044b\u0434\u0435\u043b\u0438\u0442\u044c <a href=\"https:\/\/github.com\/Wohlstand\/TheXTech\/wiki\/thextech.ini---Tune-game-settings\" rel=\"noopener noreferrer nofollow\">\u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0439 INI-\u0444\u0430\u0439\u043b<\/a>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043b\u0435\u0433\u043a\u043e \u043e\u0442\u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c, \u0447\u0442\u043e\u0431\u044b \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0438\u0433\u0440\u0443 \u043f\u043e\u0434 \u0441\u0435\u0431\u044f. \u0410 \u0434\u043b\u044f <a href=\"https:\/\/github.com\/Wohlstand\/TheXTech\/wiki\/Create-levels-and-episodes-for-TheXTech\" rel=\"noopener noreferrer nofollow\">\u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043d\u043e\u0432\u044b\u0445 \u0443\u0440\u043e\u0432\u043d\u0435\u0439 \u0438 \u044d\u043f\u0438\u0437\u043e\u0434\u043e\u0432<\/a> \u044f \u0440\u0435\u0448\u0438\u043b \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u043e\u0432\u0430\u0442\u044c \u0434\u0435\u0432\u043a\u0438\u0442 \u0438\u0437 \u043d\u0430\u0431\u043e\u0440\u0430 Moondust Project, \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u044f \u0434\u043e\u0440\u0430\u0431\u043e\u0442\u0430\u043b, \u0447\u0442\u043e\u0431\u044b \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0442\u044c \u0435\u0433\u043e \u0442\u0435\u0441\u043d\u043e\u0439 \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0435\u0439 \u0441 \u0438\u0433\u0440\u043e\u0439 (\u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u0447\u043d\u044b\u0445 \u043f\u043e\u043b\u0435\u0439, \u043f\u0440\u044f\u043c\u043e\u0439 \u0437\u0430\u043f\u0443\u0441\u043a \u0442\u0435\u0441\u0442\u0430 \u0443\u0440\u043e\u0432\u043d\u044f, \u0438 \u0442.\u043f.).<\/p>\n<p>\u0421\u043e\u0437\u0434\u0430\u043d\u043d\u044b\u0439 \u043f\u0440\u043e\u0435\u043a\u0442 \u044f \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u044e \u0440\u0430\u0437\u0432\u0438\u0432\u0430\u0442\u044c, \u0443\u043b\u0443\u0447\u0448\u0430\u0442\u044c, \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c \u043d\u043e\u0432\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u0441\u0442\u0430\u0431\u0438\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c.<\/p>\n<h2>\u041c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u044b<\/h2>\n<p><a href=\"https:\/\/github.com\/smbx\/smbx-legacy-source\" rel=\"noopener noreferrer nofollow\">\u0418\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u043a\u043e\u0434 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u044c\u043d\u043e\u0439 \u0438\u0433\u0440\u044b \u043a\u0430\u043a \u0435\u0441\u0442\u044c<\/a><\/p>\n<p><a href=\"https:\/\/github.com\/Wohlstand\/smbx-experiments\" rel=\"noopener noreferrer nofollow\">\u041c\u043e\u0439 \u043f\u043e\u043b\u0438\u0433\u043e\u043d, \u043c\u043e\u0434 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u0430<\/a><\/p>\n<p><a href=\"https:\/\/github.com\/Wohlstand\/TheXTech\" rel=\"noopener noreferrer nofollow\">\u0420\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439 \u0441 \u043a\u043e\u0434\u043e\u043c \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u043e\u0439 \u0438\u0433\u0440\u044b<\/a><\/p>\n<\/p>\n<\/div>\n<\/div>\n<\/div>\n<p><!----><!----><\/div>\n<p><!----><!----><br \/> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/articles\/582566\/\"> https:\/\/habr.com\/ru\/articles\/582566\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div><!--[--><!--]--><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p>\u0412\u0441\u0435\u043c \u0434\u043e\u0431\u0440\u043e\u0433\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0441\u0443\u0442\u043e\u043a! \u042d\u0442\u043e \u043c\u043e\u044f \u0438\u0441\u0442\u043e\u0440\u0438\u044f \u043e \u0442\u043e\u043c, \u043a\u0430\u043a \u044f \u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043b \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u043a\u043e\u0434 \u043e\u0434\u043d\u043e\u0439 \u0444\u0430\u043d\u0430\u0442\u0441\u043a\u043e\u0439 Windows-\u0438\u0433\u0440\u044b \u043e \u041c\u0430\u0440\u0438\u043e \u0441 Visual Basic 6 \u043d\u0430 C++, \u0438 \u0441 \u043a\u0430\u043a\u0438\u043c\u0438 \u0442\u0440\u0443\u0434\u043d\u043e\u0441\u0442\u044f\u043c\u0438 \u044f \u0441\u0442\u043e\u043b\u043a\u043d\u0443\u043b\u0441\u044f \u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043f\u043e\u0440\u0442\u0430.<\/p>\n<h2>\u041d\u0435\u043c\u043d\u043e\u0433\u043e \u043e\u0431 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u044c\u043d\u043e\u0439 \u0438\u0433\u0440\u0435<\/h2>\n<p><strong>Super Mario Bros. X<\/strong> (\u0438\u043b\u0438 \u043a\u043e\u0440\u043e\u0442\u043a\u043e SMBX) &#8212; \u044d\u0442\u043e \u0444\u0430\u043d\u0430\u0442\u0441\u043a\u0430\u044f \u0438\u0433\u0440\u0430 \u043f\u043e \u043c\u043e\u0442\u0438\u0432\u0430\u043c \u0432\u0441\u0435\u043b\u0435\u043d\u043d\u043e\u0439 \u041c\u0430\u0440\u0438\u043e, \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u0430\u044f \u0432 2009 \u0433\u043e\u0434\u0443 \u0430\u043c\u0435\u0440\u0438\u043a\u0430\u043d\u0446\u0435\u043c \u042d\u043d\u0434\u0440\u044e \u0421\u043f\u0438\u043d\u043a\u0441\u043e\u043c (\u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u0437\u0436\u0435 \u043f\u0440\u043e\u0441\u043b\u0430\u0432\u0438\u043b\u0441\u044f \u043a\u0430\u043a \u0441\u043e\u0437\u0434\u0430\u0442\u0435\u043b\u044c \u0438\u0433\u0440\u044b Terraria). \u042d\u0442\u0430 \u0444\u0430\u043d\u0430\u0442\u0441\u043a\u0430\u044f \u0438\u0433\u0440\u0430 \u0431\u044b\u043b\u0430 \u0435\u0433\u043e \u043f\u0435\u0440\u0432\u044b\u043c \u043e\u043f\u044b\u0442\u043e\u043c \u0432 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u0438\u0433\u0440. \u0412 \u043d\u0435\u0439 \u043e\u043d \u043f\u043e\u0437\u043d\u0430\u0432\u0430\u043b \u0430\u0437\u044b \u0438\u0433\u0440\u043e\u0441\u0442\u0440\u043e\u044f. \u0418\u0433\u0440\u0430 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u043b\u0430\u0441\u044c \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c Visual Basic 6.<\/p>\n<figure class=\"full-width\">\n<div><figcaption>\u0413\u043b\u0430\u0432\u043d\u043e\u0435 \u043c\u0435\u043d\u044e \u0438\u0433\u0440\u044b Super Mario Bros. X \u0432\u0435\u0440\u0441\u0438\u0438 1.3<\/figcaption><\/div>\n<\/figure>\n<p>\u0412 \u0438\u0433\u0440\u0435 \u0438\u043c\u0435\u0435\u0442\u0441\u044f \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0438\u0433\u0440\u0430\u0442\u044c \u0437\u0430 \u043e\u0434\u043d\u043e\u0433\u043e \u0438\u0437 \u043f\u044f\u0442\u0435\u0440\u044b\u0445 \u043f\u0435\u0440\u0441\u043e\u043d\u0430\u0436\u0435\u0439: \u041c\u0430\u0440\u0438\u043e, \u041b\u0443\u0438\u0434\u0436\u0438, \u041f\u0438\u0447, \u0422\u043e\u0430\u0434 \u0438 \u041b\u0438\u043d\u043a. \u041c\u043e\u0436\u043d\u043e \u0438\u0433\u0440\u0430\u0442\u044c \u0432 \u043e\u0434\u0438\u043d\u043e\u0447\u043a\u0443, \u043c\u043e\u0436\u043d\u043e \u0438\u0433\u0440\u0430\u0442\u044c \u0432\u0434\u0432\u043e\u0451\u043c \u0432 \u043a\u043e\u043e\u043f\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u043e\u043c \u0440\u0435\u0436\u0438\u043c\u0435. \u0422\u0430\u043a\u0436\u0435 \u0438\u043c\u0435\u0435\u0442\u0441\u044f \u0440\u0435\u0436\u0438\u043c \u0431\u0438\u0442\u0432\u044b, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0438\u0433\u0440\u043e\u043a\u0438 \u0434\u043e\u043b\u0436\u043d\u044b \u043f\u043e\u0431\u0438\u0442\u044c \u0434\u0440\u0443\u0433 \u0434\u0440\u0443\u0433\u0430, \u043f\u043e\u043b\u044c\u0437\u0443\u044f\u0441\u044c \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u043c\u0438 \u043f\u043e\u0434\u0440\u0443\u0447\u043d\u044b\u043c\u0438 \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430\u043c\u0438. \u0421\u0430\u043c\u0430 \u0438\u0433\u0440\u0430 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043d\u0435\u043a\u0438\u043c \u043f\u043e\u0434\u043e\u0431\u0438\u0435\u043c \u043f\u0435\u0441\u043e\u0447\u043d\u0438\u0446\u044b \u0434\u043b\u044f \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u0430, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0438\u0433\u0440\u043e\u043a\u0438 \u043c\u043e\u0433\u0443\u0442 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u0441\u0432\u043e\u0438 \u0443\u0440\u043e\u0432\u043d\u0438 \u0438 \u0446\u0435\u043b\u044b\u0435 \u044d\u043f\u0438\u0437\u043e\u0434\u044b, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u0432\u043e \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u043e\u043c \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0435. \u0422\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c \u0432 \u0438\u0433\u0440\u0443 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 \u0440\u0435\u0441\u0443\u0440\u0441\u044b (\u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0438 \u0438 \u043c\u0443\u0437\u044b\u043a\u0443).<\/p>\n<p>\u0414\u0430\u0436\u0435 \u043d\u0435 \u0441\u043c\u043e\u0442\u0440\u044f \u043d\u0430 \u043f\u043e\u043b\u043d\u043e\u0435 \u043f\u0440\u0435\u043a\u0440\u0430\u0449\u0435\u043d\u0438\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0438\u0433\u0440\u044b \u0432 2011 \u0433\u043e\u0434\u0443, \u043e\u043d\u0430 \u0431\u044b\u043b\u0430 \u0432\u043e\u0441\u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0430, \u0438 \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u043b\u0430 \u0448\u0438\u0440\u043e\u043a\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0430\u0442\u044c\u0441\u044f \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u043e\u043c. \u0418\u0433\u0440\u0430 \u0442\u0430\u043a\u0436\u0435 \u043f\u0440\u0438\u0432\u043b\u0435\u043a\u043b\u0430 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432-\u044d\u043d\u0442\u0443\u0437\u0438\u0430\u0441\u0442\u043e\u0432 \u0438 \u0445\u0430\u043a\u0435\u0440\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u043b\u0438 \u0434\u043b\u044f \u043d\u0435\u0451 \u0432\u0441\u043f\u043e\u043c\u043e\u0433\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0434\u0435\u043b\u0430\u043b\u0438 \u043f\u043e\u043f\u044b\u0442\u043a\u0438 \u043c\u043e\u0434\u0438\u0444\u0438\u0446\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438 \u0440\u0430\u0441\u0448\u0438\u0440\u0438\u0442\u044c \u0438\u0433\u0440\u0443. \u0421\u0430\u043c\u044b\u043c\u0438 \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b\u043c\u0438 \u0438\u0437 \u043d\u0438\u0445 \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u043d\u0430\u0431\u043e\u0440 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0438\u0437 \u0442\u0443\u043b\u043a\u0438\u0442\u0430 Moondust Project (\u0438\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u043d\u0430\u0437\u044b\u0432\u0430\u0432\u0448\u0438\u043c\u0441\u044f PGE Project), \u0430 \u0442\u0430\u043a\u0436\u0435, \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 LunaLua (\u0438\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u0430\u044f \u043a\u0430\u043a LunaDll), \u0440\u0430\u0441\u0448\u0438\u0440\u044f\u044e\u0449\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b \u0438\u0433\u0440\u044b \u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u043e\u043c dll-\u0438\u043d\u044a\u0435\u043a\u0446\u0438\u0438.<\/p>\n<p>\u0418\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u043a\u043e\u0434 \u0438\u0433\u0440\u044b \u0434\u043e\u043b\u0433\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u0431\u044b\u043b \u0437\u0430\u043a\u0440\u044b\u0442\u044b\u043c. \u041e\u0434\u043d\u0430\u043a\u043e, \u0432\u0441\u0451 \u0438\u0437\u043c\u0435\u043d\u0438\u043b\u043e\u0441\u044c, \u043a\u043e\u0433\u0434\u0430 2 \u0444\u0435\u0432\u0440\u0430\u043b\u044f 2020 \u0433\u043e\u0434\u0430 \u043d\u0430 \u0444\u043e\u0440\u0443\u043c\u0435 \u0431\u044b\u043b\u0438 \u043e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043d\u044b \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0435 \u043a\u043e\u0434\u044b \u0438\u0433\u0440\u044b.<\/p>\n<h2>\u041d\u0430\u0447\u0430\u043b\u043e \u0440\u0430\u0431\u043e\u0442<\/h2>\n<p>\u0421\u043b\u0443\u0445\u0438 \u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0439 \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438 \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0445 \u043a\u043e\u0434\u043e\u0432 \u0438\u0433\u0440\u044b \u0431\u044b\u043b\u0438 \u0435\u0449\u0451 \u0432 2016\u043c \u0433\u043e\u0434\u0443, \u043e\u0434\u043d\u0430\u043a\u043e, \u044d\u0442\u043e\u0433\u043e \u043d\u0435 \u043f\u0440\u043e\u0438\u0437\u043e\u0448\u043b\u043e. \u042d\u0442\u043e \u0434\u0430\u043b\u043e \u043c\u043d\u0435 \u0438\u0434\u0435\u044e \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u0430\u0442\u044c \u0438\u0433\u0440\u0443 \u043d\u0430 C++, \u0447\u0442\u043e\u0431\u044b \u0441 \u043d\u0435\u0439 \u0443\u0434\u043e\u0431\u043d\u043e \u0431\u044b\u043b\u043e \u0432\u043e\u0437\u0438\u0442\u044c\u0441\u044f. \u041d\u043e, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443, \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u043e\u0432 \u043d\u0435 \u0431\u044b\u043b\u043e, \u0438\u0434\u0435\u044f \u0441\u043b\u0435\u0433\u043b\u0430 \u0432 \u0434\u043e\u043b\u0433\u0438\u0439 \u044f\u0449\u0438\u043a. \u0421 \u0432\u044b\u0445\u043e\u0434\u043e\u043c \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u043e\u0432 \u0432 \u0444\u0435\u0432\u0440\u0430\u043b\u0435 2020-\u0433\u043e \u0433\u043e\u0434\u0430, \u044f \u0431\u0443\u043a\u0432\u0430\u043b\u044c\u043d\u043e \u0434\u043e\u0441\u0442\u0430\u043b \u044d\u0442\u0443 \u0438\u0434\u0435\u044e \u0438\u0437 \u0433\u043b\u0443\u0431\u043e\u043a\u043e\u0439 \u044f\u043c\u044b \u0437\u0430\u0431\u0432\u0435\u043d\u0438\u044f. \u041f\u0435\u0440\u0432\u044b\u043c \u0434\u0435\u043b\u043e\u043c, \u044f \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u043b \u0441\u0432\u043e\u044e \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u0443\u044e \u043c\u0430\u0448\u0438\u043d\u0443 \u0441 Windows XP, \u0433\u0434\u0435 \u044f \u0438 \u0440\u0430\u0437\u0432\u0435\u0440\u043d\u0443\u043b \u0441\u0440\u0435\u0434\u0443 VB6, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0437\u0430\u0442\u0435\u043c \u044f \u043e\u0442\u043a\u0440\u044b\u043b \u043f\u0440\u043e\u0435\u043a\u0442 \u0438\u0433\u0440\u044b, \u0438, \u043f\u043e\u0441\u043b\u0435 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0439 \u043e\u0448\u0438\u0431\u043e\u043a \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438, \u0443\u0441\u043f\u0435\u0448\u043d\u043e \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u043b \u0438\u0433\u0440\u0443 \u0438\u0437 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430. <\/p>\n<p>\u0420\u0430\u0431\u043e\u0442\u044b \u043d\u0430\u0447\u0430\u043b\u0438\u0441\u044c \u0441 \u0438\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u044f \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u043a\u043e\u0434\u0430 \u0438\u0433\u0440\u044b \u0438 \u0435\u0433\u043e \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0441 \u0437\u0430\u043c\u0435\u043d\u044b \u043a\u043e\u0434\u0430 \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u0430\u0443\u0434\u0438\u043e \u0441 \u0434\u0440\u0435\u0432\u043d\u0435\u0433\u043e MCI \u043d\u0430 \u043c\u043e\u044e \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u0443\u044e \u0441\u0431\u043e\u0440\u043a\u0443 SDL Mixer X, \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u0443\u044e \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0432 VB6-\u043f\u0440\u043e\u0435\u043a\u0442\u0430\u0445. \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u044f \u0440\u0435\u0448\u0438\u043b \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443 \u0440\u0430\u0431\u043e\u0442\u044b \u0438\u0433\u0440\u044b \u043d\u0430 Linux \u043f\u043e\u0434 Wine, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0443\u0441\u043a\u043e\u0440\u0438\u043b \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0443 \u0438\u0433\u0440\u044b \u0438 \u0443\u043c\u0435\u043d\u044c\u0448\u0438\u043b \u043f\u043e\u0442\u0440\u0435\u0431\u043b\u0435\u043d\u0438\u0435 \u0435\u044e \u043f\u0430\u043c\u044f\u0442\u0438.<\/p>\n<h2>\u0418\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0439<\/h2>\n<p>\u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b <a href=\"https:\/\/gist.github.com\/Wohlstand\/3895db6a738aebce296c2f284cb163a7\" rel=\"noopener noreferrer nofollow\">\u0441\u0430\u043c\u043e\u043f\u0438\u0441\u043d\u044b\u0439 \u043a\u0443\u0441\u043e\u043a \u043a\u043e\u0434\u0430 \u043d\u0430 JavaScript<\/a>, \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u044f \u0447\u0435\u0440\u0435\u0437 \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u044b\u0435 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u043f\u0430\u0440\u0441\u0438\u043b \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445, \u043c\u0430\u0441\u0441\u0438\u0432\u043e\u0432 \u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u0439. \u0417\u0430\u0442\u0435\u043c, \u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e &#171;VB to C++ Converter&#187; \u043e\u0442 Tangible Software Solutions, \u0447\u0442\u043e\u0431\u044b \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0442\u043e\u0447\u043d\u043e \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u044b\u0432\u0430\u0442\u044c \u043a\u0443\u0441\u043a\u0438 \u043a\u043e\u0434\u0430 \u0432 C++ (\u042f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0441\u044f \u0440\u0435\u0436\u0438\u043c\u043e\u043c Snifit, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u043a\u043e\u043d\u0432\u0435\u0440\u0442\u0435\u0440 \u0431\u044b\u043b \u043e\u0440\u0438\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d \u043d\u0430 VB.NET, \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043e\u0442\u043b\u0438\u0447\u0430\u0432\u0448\u0438\u0439\u0441\u044f \u043e\u0442 VB6. \u0422\u0430\u043a\u0436\u0435 \u043d\u0435 \u043e\u0431\u043e\u0448\u043b\u043e\u0441\u044c \u0431\u0435\u0437 \u043e\u0433\u0440\u043e\u043c\u043d\u043e\u0433\u043e \u0447\u0438\u0441\u043b\u0430 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0440\u0443\u0447\u043d\u044b\u0445 \u043c\u0430\u043d\u0438\u043f\u0443\u043b\u044f\u0446\u0438\u0439 \u0438 \u043c\u0430\u043a\u0440\u043e\u0441\u043e\u0432). \u0427\u0430\u0441\u0442\u044c \u043a\u043e\u0434\u0430 \u0431\u044b\u043b\u0430 \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u0430\u043d\u0430 \u043c\u043d\u043e\u044e \u0432\u0440\u0443\u0447\u043d\u0443\u044e, \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u043d\u0430 \u043d\u0430\u0447\u0430\u043b\u044c\u043d\u044b\u0445 \u044d\u0442\u0430\u043f\u0430\u0445. \u041c\u043d\u043e\u0433\u043e \u043c\u043e\u0434\u0443\u043b\u0435\u0439 \u044f \u043f\u0438\u0441\u0430\u043b \u0441 \u043d\u0443\u043b\u044f (\u043b\u0438\u0431\u043e \u0437\u0430\u0438\u043c\u0441\u0442\u0432\u043e\u0432\u0430\u043b \u0438\u0437 \u0434\u0440\u0443\u0433\u0438\u0445 \u043c\u043e\u0438\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432), \u0447\u0442\u043e\u0431\u044b \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0442\u044c \u043a\u043e\u043d\u0435\u0447\u043d\u044b\u0439 \u043f\u0440\u043e\u0435\u043a\u0442 \u0432\u0441\u0435\u0439 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c\u044e. \u0412\u0435\u0441\u044c \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u044f \u0432\u0451\u043b \u043d\u0430 Linux Mint, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u0441\u0440\u0435\u0434\u0443 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 Qt Creator, \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u043e \u0441 CLion. \u0422\u0430\u043a\u0436\u0435, \u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0435 \u043c\u0430\u0448\u0438\u043d\u044b \u0441 Windows XP \u0438 Windows 7 \u0434\u043b\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u044b\u0445 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432, \u0430 \u0442\u0430\u043a\u0436\u0435 VisualStudio Code \u0434\u043b\u044f \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0430 VB6-\u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0438\u0433\u0440\u044b \u0438\u0437 \u043f\u043e\u0434 Linux-\u0441\u0438\u0441\u0442\u0435\u043c\u044b.<\/p>\n<h2>\u041e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u0438 Visual Basic \u0438 \u0440\u0430\u0437\u043b\u0438\u0447\u0438\u044f \u0441 C++<\/h2>\n<p>\u041a\u0440\u043e\u043c\u0435 \u044f\u0432\u043d\u043e\u0433\u043e \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0440\u0430\u0437\u043b\u0438\u0447\u0438\u044f \u043c\u0435\u0436\u0434\u0443 \u044f\u0437\u044b\u043a\u0430\u043c\u0438, \u0438\u043c\u0435\u0435\u0442\u0441\u044f \u043e\u0433\u0440\u043e\u043c\u043d\u043e\u0435 \u0447\u0438\u0441\u043b\u043e \u0442\u043e\u043d\u043a\u0438\u0445 \u043d\u0435 \u0438\u043d\u0442\u0443\u0438\u0442\u0438\u0432\u043d\u044b\u0445 \u0440\u0430\u0437\u043b\u0438\u0447\u0438\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0437\u0430\u043c\u0435\u0442\u0438\u0442\u044c \u0431\u0435\u0437 \u043f\u0440\u044f\u043c\u043e\u0433\u043e \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0438 \u0431\u0435\u0437 \u0447\u0442\u0435\u043d\u0438\u044f \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438. \u042f \u0441\u0430\u043c \u043b\u0438\u0447\u043d\u043e \u043c\u0430\u043b\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u043b \u0441 Visual Basic, \u0438 \u0431\u043e\u043b\u044c\u0448\u0443\u044e \u0447\u0430\u0441\u0442\u044c \u0437\u043d\u0430\u043d\u0438\u0439 \u043e \u043d\u0451\u043c \u044f \u0443\u0437\u043d\u0430\u043b \u0438\u0437 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0445 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c \u0438 MSDN-\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 (\u0434\u043b\u044f Visual Basic 6, \u043d\u0443\u0436\u043d\u043e \u043a\u0430\u0447\u0430\u0442\u044c \u0440\u0435\u0434\u0430\u043a\u0446\u0438\u044e 2001 \u0433\u043e\u0434\u0430, \u043a \u0441\u0447\u0430\u0441\u0442\u044c\u044e, \u043e\u043d\u0430 \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u043d\u0430 archive.org \u0432 \u0441\u0432\u043e\u0431\u043e\u0434\u043d\u043e\u043c \u0434\u043e\u0441\u0442\u0443\u043f\u0435).<\/p>\n<p>\u0411\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044e <a class=\"mention\" href=\"\/users\/firehacker\">@firehacker<\/a> \u0437\u0430 \u0443\u0442\u043e\u0447\u043d\u0435\u043d\u0438\u044f \u0438 \u0437\u0430 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u043d\u044b\u0435 \u043e\u0431\u044a\u044f\u0441\u043d\u0435\u043d\u0438\u044f.<\/p>\n<h3>\u0412\u0438\u0434\u0438\u043c\u043e\u0441\u0442\u044c \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u0439<\/h3>\n<p>\u041f\u0435\u0440\u0432\u044b\u0439 \u044d\u0442\u0430\u043f \u043d\u0430\u0447\u0430\u043b\u0441\u044f \u0441 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0444\u0430\u0439\u043b\u0430 globals.h, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u043b \u0432\u0441\u0435 \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u044b\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0438\u0433\u0440\u044b \u0438 \u0432\u0441\u0435 \u0442\u0438\u043f\u044b (\u043c\u0430\u0441\u0441\u0438\u0432\u044b, \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b, \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u044b, \u0438 \u0442.\u043f.). \u0412\u0441\u0451 \u0434\u0435\u043b\u043e \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u043f\u043e \u0441\u0432\u043e\u0435\u0439 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0435, Visual Basic \u043f\u043e\u0434\u0440\u0430\u0437\u0443\u043c\u0435\u0432\u0430\u0435\u0442, \u0447\u0442\u043e \u043a\u043e \u0432\u0441\u0435\u043c \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u043e \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u043c \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u043c \u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u044f\u043c (\u043e\u0442\u043c\u0435\u0447\u0435\u043d\u043d\u044b\u0445 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c), \u043c\u043e\u0436\u043d\u043e \u043e\u0431\u0440\u0430\u0449\u0430\u0442\u044c\u0441\u044f \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e \u0431\u0435\u0437 \u043f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0439 \u0438\u043b\u0438 \u0438\u043c\u043f\u043e\u0440\u0442\u043e\u0432 \u0432\u0442\u043e\u0440\u043e\u0433\u043e \u043c\u043e\u0434\u0443\u043b\u044f \u0432 \u043a\u043e\u0434\u0435 \u043f\u0435\u0440\u0432\u043e\u0433\u043e. <\/p>\n<p>\u041f\u043e\u0442\u043e\u043c, \u043f\u043e\u0434 \u043a\u0430\u0436\u0434\u044b\u0439 \u043c\u043e\u0434\u0443\u043b\u044c, \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u043b \u0441\u043f\u0438\u0441\u043a\u0438 \u043f\u0440\u043e\u0442\u043e\u0442\u0438\u043f\u043e\u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u0438 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u0447\u043d\u044b\u0435 \u0444\u0430\u0439\u043b\u044b \u043a \u043d\u0438\u043c. \u0417\u0430\u0442\u0435\u043c, \u044f \u0432\u043a\u043b\u044e\u0447\u0430\u043b \u044d\u0442\u0438 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0438 \u043c\u0435\u0436\u0434\u0443 \u0432\u0441\u0435\u043c\u0438 \u043c\u043e\u0434\u0443\u043b\u044f\u043c\u0438, \u0447\u0442\u043e\u0431\u044b \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0442\u044c \u0438 \u043f\u043e\u043b\u043d\u0443\u044e \u0432\u0438\u0434\u0438\u043c\u043e\u0441\u0442\u044c \u0432\u0441\u0435\u0445 \u0432\u0430\u0436\u043d\u044b\u0445 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 \u043a\u043e\u0434\u0430, \u0438 \u043d\u0430\u0432\u0435\u0441\u0442\u0438 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u0440\u044f\u0434\u043e\u043a \u043f\u043e \u0444\u0430\u0439\u043b\u0430\u043c.<\/p>\n<h3>\u0421\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b<\/h3>\n<p>\u041e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0439 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u043e\u0439 \u0441\u0442\u0430\u043b\u043e \u0442\u043e, \u0447\u0442\u043e Visual Basic \u043f\u0440\u044f\u043c\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0438\u043c\u0435\u043d\u043e\u0432\u0430\u0442\u044c \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u0438 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u043e, \u0431\u0443\u043a\u0432\u0430-\u0432-\u0431\u0443\u043a\u0432\u0443:<\/p>\n<pre><code class=\"vbscript\">' \u041e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b Public Type Controls     Up As Boolean     Down As Boolean     Left As Boolean     Right As Boolean     Jump As Boolean     AltJump As Boolean     Run As Boolean     AltRun As Boolean     Drop As Boolean     Start As Boolean End Type  ' \u041e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u043e\u0434\u043d\u043e\u0438\u043c\u0451\u043d\u043d\u043e\u0439 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 Controls As Controls<\/code><\/pre>\n<p>\u0421 \u043e\u0434\u043d\u043e\u0439 \u0441\u0442\u043e\u0440\u043e\u043d\u044b, \u0442\u0430\u043a\u043e\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0438 \u0432 C\/C++ \u0442\u043e\u0436\u0435 (\u0435\u0441\u043b\u0438 \u043d\u0435 \u0437\u0430\u0431\u044b\u0432\u0430\u0442\u044c \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u043a\u043b\u044e\u0447\u0435\u0432\u043e\u0435 \u0441\u043b\u043e\u0432\u043e struct \u043f\u0435\u0440\u0435\u0434 \u0438\u043c\u0435\u043d\u0435\u043c \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b). \u041e\u0434\u043d\u0430\u043a\u043e, \u043e\u0434\u043d\u043e\u0438\u043c\u0451\u043d\u043d\u044b\u0435, \u043d\u043e \u0440\u0430\u0437\u043d\u043e\u0442\u0438\u043f\u043d\u044b\u0435, \u043e\u0431\u044a\u0435\u043a\u0442\u044b \u0441\u0438\u043b\u044c\u043d\u043e \u0432\u0440\u0435\u0434\u044f\u0442 \u043d\u0430\u0433\u043b\u044f\u0434\u043d\u043e\u0441\u0442\u0438, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0441\u043e\u0437\u0434\u0430\u044e\u0442 \u043d\u0435\u043e\u0434\u043d\u043e\u0437\u043d\u0430\u0447\u043d\u043e\u0441\u0442\u0438 \u0432 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044f\u0445, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043f\u0440\u0438 \u043f\u043e\u043f\u044b\u0442\u043a\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u0443\u044e \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e <code>Controls ko<\/code> \u0431\u0435\u0437 \u043a\u043b\u044e\u0447\u0435\u0432\u043e\u0433\u043e \u0441\u043b\u043e\u0432\u0430 struct, \u0432\u044b\u043b\u0435\u0437\u0435\u0442 \u043e\u0448\u0438\u0431\u043a\u0430 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438 <u>error: expected \u2018;\u2019 before \u2018ko\u2019<\/u>. \u041f\u0440\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 <code>sizeof(Controls)<\/code> \u0442\u0430\u043a\u0436\u0435 \u0441\u043e\u0437\u0434\u0430\u0451\u0442\u0441\u044f \u043d\u0435\u043e\u0434\u043d\u043e\u0437\u043d\u0430\u0447\u043d\u043e\u0441\u0442\u044c, \u0445\u043e\u0442\u0438\u043c \u043b\u0438 \u043c\u044b \u0443\u0437\u043d\u0430\u0442\u044c \u0440\u0430\u0437\u043c\u0435\u0440 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 Controls, \u0438\u043b\u0438 \u0440\u0430\u0437\u043c\u0435\u0440 \u0442\u0438\u043f\u0430 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b Controls.<\/p>\n<p>\u0418\u0437-\u0437\u0430 \u044d\u0442\u043e\u0433\u043e, \u044f \u0440\u0435\u0448\u0438\u043b \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c \u0432\u0441\u0435\u043c \u0438\u043c\u0435\u043d\u0430\u043c \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440 \u043e\u043a\u043e\u043d\u0447\u0430\u043d\u0438\u0435 &#171;_t&#187;, \u0447\u0442\u043e\u0431\u044b \u0443\u0441\u0442\u0440\u0430\u043d\u0438\u0442\u044c \u0432\u0441\u0435 \u043d\u0435\u043e\u0434\u043d\u043e\u0437\u043d\u0430\u0447\u043d\u043e\u0441\u0442\u0438:<\/p>\n<pre><code class=\"cpp\">struct Controls_t {     bool Up = false;     bool Down = false;     bool Left = false;     bool Right = false;     bool Jump = false;     bool AltJump = false;     bool Run = false;     bool AltRun = false;     bool Drop = false;     bool Start = false; };  extern Controls_t Controls;<\/code><\/pre>\n<h3>\u041c\u0430\u0441\u0441\u0438\u0432\u044b \u0441 \u044f\u0432\u043d\u044b\u043c \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d\u043e\u043c<\/h3>\n<p>\u0412 Visual Basic \u043f\u0440\u0435\u0434\u0443\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u0430 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u043c\u0430\u0441\u0441\u0438\u0432\u044b \u0441 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u043c\u0438 \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d\u0430\u043c\u0438 \u0438\u043d\u0434\u0435\u043a\u0441\u043e\u0432, \u0438 \u043d\u0435 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u043e\u0442 0 \u0434\u043e N-1, \u0430 \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043e\u0442 1 \u0434\u043e 5, \u043e\u0442 -1000 \u0434\u043e +1000, \u0438 \u0442.\u043f.:<\/p>\n<pre><code class=\"vbscript\">Public BlockSwitch(1 To 4) As Boolean<\/code><\/pre>\n<p>\u0412 C++ \u0442\u0430\u043a\u043e\u0433\u043e \u043d\u0435\u0442\u0443. \u041e\u0434\u043d\u0430\u043a\u043e, \u043c\u043d\u0435 \u043d\u0435 \u043f\u043e\u043c\u0435\u0448\u0430\u043b\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e \u0442\u0430\u043a\u043e\u0439 \u043a\u043e\u043d\u0446\u0435\u043f\u0446\u0438\u0438, \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0441\u044f \u0432\u043e\u0442 \u0442\u0430\u043a\u043e\u0439 \u0448\u0430\u0431\u043b\u043e\u043d:<\/p>\n<pre><code class=\"cpp\">template &lt;class T, long begin, long end> class RangeArr {     static constexpr long range_diff = begin - end;     static constexpr size_t size = (range_diff &lt; 0 ? -range_diff : range_diff) + 1;     static const long offset = -begin;     T array[size];  public:     RangeArr()     {}      ~RangeArr()     {}      RangeArr(const RangeArr &amp;o)     {         for(size_t i = 0; i &lt; size; i++)             array[i] = o.array[i];     }      RangeArr&amp; operator=(const RangeArr &amp;o)     {         for(size_t i = 0; i &lt; size; i++)             array[i] = o.array[i];         return *this;     }      void fill(const T &amp;o)     {         for(size_t i = 0; i &lt; size; i++)             array[i] = o;     }      T&amp; operator[](long index)     {         assert(index &lt;= end);         assert(index >= begin);         assert(offset + index &lt; static_cast&lt;long>(size));         assert(offset + index >= 0);         return array[offset + index];     } };<\/code><\/pre>\n<p>\u0410 \u0442\u0430\u043a\u0436\u0435 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u0448\u0430\u0431\u043b\u043e\u043d\u0430 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e \u0434\u043b\u044f \u0446\u0435\u043b\u043e\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u044b\u0445 \u0442\u0438\u043f\u043e\u0432 \u0441 \u043f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0435\u0439:<\/p>\n<pre><code class=\"cpp\">template &lt;class T, long begin, long end, T defaultValue> class RangeArrI {     static constexpr long range_diff = begin - end;     static constexpr size_t size = (range_diff &lt; 0 ? -range_diff : range_diff) + 1;     static const long offset = -begin;     T array[size];  public:     RangeArrI()     {         for(size_t i = 0; i &lt; size; i++)             array[i] = defaultValue;     }      ~RangeArrI()     {}      RangeArrI(const RangeArrI &amp;o)     {         for(size_t i = 0; i &lt; size; i++)             array[i] = o.array[i];     }      RangeArrI&amp; operator=(const RangeArrI &amp;o)     {         for(size_t i = 0; i &lt; size; i++)             array[i] = o.array[i];         return *this;     }      void fill(const T &amp;o)     {         for(size_t i = 0; i &lt; size; i++)             array[i] = o;     }      T&amp; operator[](long index)     {         assert(index &lt;= end);         assert(index >= begin);         assert(offset + index &lt; static_cast&lt;long>(size));         assert(offset + index >= 0);         return array[offset + index];     } };<\/code><\/pre>\n<p>\u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u0432\u044b\u0448\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0439 \u043f\u0440\u0438\u043c\u0435\u0440 \u043d\u0430 C++ \u0431\u0443\u0434\u0435\u0442 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c:<\/p>\n<pre><code class=\"cpp\">extern RangeArrI&lt;bool, 1, 4, false> BlockSwitch;<\/code><\/pre>\n<p>\u041a \u0441\u0447\u0430\u0441\u0442\u044c\u044e (\u0438\u043b\u0438 \u043a \u0441\u043e\u0436\u0430\u043b\u0435\u043d\u0438\u044e), \u042d\u043d\u0434\u0440\u044e \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b \u0432 \u0441\u0432\u043e\u0451\u043c \u043a\u043e\u0434\u0435 \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u043c\u0430\u0441\u0441\u0438\u0432\u043e\u0432, \u0445\u043e\u0442\u044f, \u0441 \u0434\u0440\u0443\u0433\u043e\u0439 \u0441\u0442\u043e\u0440\u043e\u043d\u044b, \u043f\u043e \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044e \u0441 std::vector \u0432 \u0421++, \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u043c\u0430\u0441\u0441\u0438\u0432\u044b \u0432 Visual Basic 6 \u0431\u044b\u043b\u0438 \u043d\u0435 \u043e\u0447\u0435\u043d\u044c \u0443\u0434\u043e\u0431\u043d\u044b\u043c\u0438 \u0432 \u0440\u0430\u0431\u043e\u0442\u0435.<\/p>\n<p>\u0412 \u043c\u043e\u0438\u0445 \u0448\u0430\u0431\u043b\u043e\u043d\u0430\u0445 \u044f \u0442\u0430\u043a\u0436\u0435 \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u043b assert-\u044b, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u043e\u043d\u0438 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0442 \u043e\u0442\u043b\u0430\u0432\u043b\u0438\u0432\u0430\u0442\u044c \u043e\u0448\u0438\u0431\u043a\u0438 \u0432\u044b\u0445\u043e\u0434\u0430 \u0437\u0430 \u043f\u0440\u0435\u0434\u0435\u043b\u044b \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d\u0430 \u043c\u0430\u0441\u0441\u0438\u0432\u0430 \u0432 \u043a\u043e\u0434\u0435 (\u0432 Visual Basic 6 \u0442\u0438\u043f\u0438\u0447\u043d\u0430\u044f \u043e\u0448\u0438\u0431\u043a\u0430 \u044d\u0442\u043e &#171;Runtime Error 9: Subscript out of range&#187;). \u0418 \u0442\u0435\u043c \u0441\u0430\u043c\u044b\u043c, \u0438\u043c\u0435\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043b\u0435\u0433\u043a\u043e \u043e\u0442\u043b\u0430\u0436\u0438\u0432\u0430\u0442\u044c \u0438\u0445, \u043d\u0435 \u0434\u043e\u043f\u0443\u0441\u043a\u0430\u044f \u043f\u043e\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u043f\u043e\u0440\u0447\u0438 \u043f\u0430\u043c\u044f\u0442\u0438 \u0438 \u0432\u043e\u0437\u043d\u0438\u043a\u043d\u043e\u0432\u0435\u043d\u0438\u044f SIGSEGV.<\/p>\n<p><strong>Upd:<\/strong> \u0412 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u044f\u0445, <a class=\"mention\" href=\"\/users\/izaron\">@Izaron<\/a>-\u043e\u043c <a href=\"https:\/\/habr.com\/ru\/post\/582566\/#comment_23573508\" rel=\"noopener noreferrer nofollow\">\u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u0430<\/a> \u0430\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u043d\u0430\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0448\u0430\u0431\u043b\u043e\u043d\u0430, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f std::array \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044f:<\/p>\n<pre><code class=\"cpp\">template&lt;class T, long Begin, long End> class range_arr : public std::array&lt;T, End - Begin + 1> { public:     using underlying_t = std::array&lt;T, End - Begin + 1>;     using typename underlying_t::reference;          constexpr reference operator[](long pos) {         return underlying_t::operator[](pos - Begin);     }     constexpr reference operator[](long pos) const {         return<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-381617","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/381617","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=381617"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/381617\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=381617"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=381617"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=381617"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}