{"id":229951,"date":"2014-07-16T13:52:03","date_gmt":"2014-07-16T09:52:03","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=229951"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=229951","title":{"rendered":"<span class=\"post_title\">\u041f\u0438\u0448\u0435\u043c Android-\u0438\u0433\u0440\u0443 \u043d\u0430 Xamarin+MonoGame (C#)<\/span>"},"content":{"rendered":"<div class=\"content html_format\">     \t<img decoding=\"async\" src=\"http:\/\/habrastorage.org\/getpro\/habr\/post_images\/518\/9c6\/531\/5189c6531df33ff8141c187095c765de.png\"\/><\/p>\n<p>  \u0421\u0435\u0433\u043e\u0434\u043d\u044f \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u043f\u0438\u0441\u0430\u0442\u044c \u043f\u0440\u043e\u0441\u0442\u0435\u043d\u044c\u043a\u0443\u044e \u0438\u0433\u0440\u0443 \u0434\u043b\u044f Android \u043d\u0430 \u044f\u0437\u044b\u043a\u0435 C# \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c Xamarin \u0438 MonoGame.   <\/p>\n<ul>\n<li><a href=\"https:\/\/xamarin.com\/\">Xamarin<\/a> \u2014 \u044d\u0442\u043e framework \u0434\u043b\u044f \u043a\u0440\u043e\u0441\u0441\u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0435\u043d\u043d\u043e\u0439 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043c\u043e\u0431\u0438\u043b\u044c\u043d\u044b\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 (iOS, Android, Windows Phone) \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u044f\u0437\u044b\u043a\u0430 C#. <\/li>\n<li><a href=\"http:\/\/www.monogame.net\/\">MonoGame<\/a> \u2014 \u044d\u0442\u043e \u043a\u0440\u043e\u0441\u0441\u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0435\u043d\u043d\u0430\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0438\u0433\u0440\u043e\u0432\u043e\u0433\u043e \u0434\u0432\u0438\u0436\u043a\u0430 XNA, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0430\u044f \u043f\u0438\u0441\u0430\u0442\u044c \u0438\u0433\u0440\u044b \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u0434 Windows \u0438 Windows Phone (\u043a\u0430\u043a \u0438\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u0437\u0430\u0434\u0443\u043c\u044b\u0432\u0430\u043b\u043e\u0441\u044c Microsoft), \u043d\u043e \u0438 \u043c\u0430\u0441\u0441\u0443 \u0434\u0440\u0443\u0433\u0438\u0445 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c, \u0432\u043a\u043b\u044e\u0447\u0430\u044f Android.<\/li>\n<\/ul>\n<p>  \u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0440\u0430\u0431\u043e\u0447\u0435\u0439 \u0438\u0434\u0435\u0438 \u0431\u044b\u043b\u043e \u0432\u044b\u0431\u0440\u0430\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0434\u0432\u0443\u043c\u0435\u0440\u043d\u043e\u0439 \u0438\u0433\u0440\u044b \u043f\u0440\u043e PacMan-\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439, \u043f\u0440\u0430\u0432\u0434\u0430, \u0431\u0443\u0434\u0435\u0442 \u043d\u0435 \u043f\u0440\u043e\u0441\u0442\u043e PacMan-\u043e\u043c, \u0430 &#8216;\u0441\u0435\u0440\u0434\u0438\u0442\u044b\u043c Pa\u0441Man-\u043e\u043c&#8217;, \u0442\u043e \u0435\u0441\u0442\u044c \u043f\u043e\u0435\u0434\u0430\u044e\u0449\u0438\u043c \u043f\u0440\u0438\u0432\u0438\u0434\u0435\u043d\u0438\u044f \u0432\u043c\u0435\u0441\u0442\u043e \u0436\u0435\u043b\u0442\u044b\u0445 \u0431\u043e\u043d\u0443\u0441\u043e\u0432 \ud83d\ude42 <\/p>\n<p>  \u0421\u0444\u043e\u0440\u043c\u0443\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u043f\u0440\u0438\u043d\u0446\u0438\u043f: PacMan \u0434\u043e\u043b\u0436\u0435\u043d \u0441\u044a\u0435\u0441\u0442\u044c \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0435 \u0447\u0438\u0441\u043b\u043e \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u0438\u0439, \u0443\u0432\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u044f\u0441\u044c \u043e\u0442 \u0445\u0430\u043e\u0442\u0438\u0447\u043d\u043e \u043b\u0435\u0442\u0430\u044e\u0449\u0438\u0445 \u0436\u0435\u043b\u0442\u044b\u0445 \u0448\u0435\u0441\u0442\u0435\u0440\u0435\u043d\u043e\u043a, \u043d\u0435 \u0437\u0430\u0434\u0435\u0432 \u043f\u0440\u0438 \u0442\u043e\u043c \u0433\u0440\u0430\u043d\u0438\u0446\u044b \u043f\u043e\u043b\u044f (\u043e\u043d\u043e \u043e\u0433\u043e\u0440\u043e\u0436\u0435\u043d\u043e \u043a\u043e\u043b\u044e\u0447\u0435\u0439 \u043f\u0440\u043e\u0432\u043e\u043b\u043e\u043a\u043e\u0439); \u0437\u0430 \u043a\u0430\u0436\u0434\u043e\u0435 \u00ab\u0441\u044a\u0435\u0434\u0435\u043d\u043d\u043e\u0435\u00bb \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u043d\u0430\u0447\u0438\u0441\u043b\u044f\u0435\u0442\u0441\u044f \u043e\u0434\u043d\u043e \u043e\u0447\u043a\u043e, \u0437\u0430 \u043a\u0430\u0436\u0434\u043e\u0435 \u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u0448\u0435\u0441\u0442\u0435\u0440\u0435\u043d\u043a\u043e\u0439 \u2014 \u0441\u043d\u0438\u043c\u0430\u0435\u0442\u0441\u044f \u043e\u0434\u043d\u0430 \u0436\u0438\u0437\u043d\u044c (\u0438\u0437 \u043f\u044f\u0442\u0438), \u0437\u0430 \u043f\u0435\u0440\u0435\u0441\u0435\u0447\u0435\u043d\u0438\u0435 \u0433\u0440\u0430\u043d\u0438\u0446\u044b \u043f\u043e\u043b\u044f \u2014 \u0441\u0440\u0430\u0437\u0443 \u0432\u0441\u0435 \u0436\u0438\u0437\u043d\u0438.<\/p>\n<p>  \u0418\u0433\u0440\u0430 \u0431\u0443\u0434\u0435\u0442 \u043d\u0430 \u0434\u0432\u0443\u0445 \u044f\u0437\u044b\u043a\u0430\u0445: \u0440\u0443\u0441\u0441\u043a\u043e\u043c \u0438 \u0430\u043d\u0433\u043b\u0438\u0439\u0441\u043a\u043e\u043c. \u0414\u043e\u043b\u0436\u043d\u043e \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0438\u0433\u0440\u043e\u0432\u043e\u0435 \u043c\u0435\u043d\u044e \u0438 \u0434\u0440\u0443\u0436\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u0434\u043b\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441.<\/p>\n<p>  \u041f\u043e\u0434 \u043a\u0430\u0442\u043e\u043c \u043c\u043d\u043e\u0433\u043e \u0441\u043a\u0440\u0438\u043d\u0448\u043e\u0442\u043e\u0432, \u0441\u0445\u0435\u043c \u0438 \u043a\u043e\u0434\u0430) \u0412 \u043a\u043e\u043d\u0446\u0435 \u0443\u0440\u043e\u043a\u0430 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u0430 \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 GitHub \u0441 \u043f\u043e\u043b\u043d\u044b\u043c\u0438 \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0430\u043c\u0438 \u0438\u0433\u0440\u044b.<br \/>  <a name=\"habracut\"><\/a><br \/>  \u0412\u043e\u0442 \u0442\u0430\u043a\u043e\u0439 \u0432\u043e\u0442 \u00ab\u043e\u0447\u0435\u043d\u044c \u0441\u0435\u0440\u0434\u0438\u0442\u044b\u0439\u00bb (\u0434\u0430\u0436\u0435 \u0441\u043b\u0438\u0448\u043a\u043e\u043c) \u0437\u0430\u0433\u0440\u0443\u0437\u043e\u0447\u043d\u044b\u0439 \u044d\u043a\u0440\u0430\u043d \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043d\u0430\u0440\u0438\u0441\u043e\u0432\u0430\u0442\u044c:<br \/>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/getpro\/habr\/post_images\/ab4\/10f\/5b2\/ab410f5b24119f783610a2c00e392830.png\"\/><\/p>\n<p>  \u0420\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0431\u0443\u0434\u0435\u043c \u0432 Xamarin Studion (\u0444\u0438\u0440\u043c\u0435\u043d\u043d\u0430\u044f IDE, \u0441\u0432\u043e\u0438 \u0432\u043f\u0435\u0447\u0430\u0442\u043b\u0435\u043d\u0438\u044f \u043e\u0431 \u0435\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 \u044f <a href=\"http:\/\/habrahabr.ru\/post\/221701\/\">\u0443\u043f\u043e\u043c\u0438\u043d\u0430\u043b \u0432 \u0441\u0442\u0430\u0442\u044c\u0435<\/a> \u043d\u0430 \u0445\u0430\u0431\u0440\u0435). \u0422\u0430\u043a \u043a\u0430\u043a \u0434\u043e Xamarin 5 \u0434\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f \u043f\u043e\u043a\u0430 \u043d\u0435 \u0434\u043e\u0432\u0435\u043b\u043e\u0441\u044c, \u0432\u0435\u0441\u044c \u043f\u0440\u043e\u0435\u043a\u0442 \u043e\u0444\u043e\u0440\u043c\u043b\u0435\u043d \u0432 4.x. \u0412\u043f\u0440\u043e\u0447\u0435\u043c, \u0436\u0435\u043b\u0430\u044e\u0449\u0438\u0435 \u043c\u043e\u0433\u0443\u0442 \u0431\u0435\u0437 \u0432\u0438\u0434\u0438\u043c\u044b\u0445 \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c VS2010\/2012\/2013.<\/p>\n<h4>\u041f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0430 \u0433\u0440\u0430\u0444\u0438\u043a\u0438<\/h4>\n<p>  \u0414\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u043f\u043e\u0434\u0431\u0435\u0440\u0435\u043c \u0433\u0440\u0430\u0444\u0438\u043a\u0443. \u0412 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0435, \u044d\u0442\u043e \u0448\u0430\u0433, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0441\u043e\u0437\u0434\u0430\u0435\u0442\u0441\u044f \u0432\u0441\u044f \u043a\u043e\u043d\u0446\u0435\u043f\u0446\u0438\u044f 2d-\u0438\u0433\u0440\u044b. \u041d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0447\u0430\u0441\u043e\u0432 \u0440\u0430\u0431\u043e\u0442\u044b \u0432 Photoshop, \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0448\u0430\u0431\u043b\u043e\u043d\u043e\u0432, \u0438, \u0443\u0440\u0430, \u0432\u0435\u0441\u044c \u0434\u0438\u0437\u0430\u0439\u043d \u0438\u0433\u0440\u044b \u043f\u0440\u043e\u0434\u0443\u043c\u0430\u043d \u0438 \u043f\u0440\u043e\u0440\u0430\u0431\u043e\u0442\u0430\u043d! \u0425\u043e\u0440\u043e\u0448\u043e, \u0435\u0441\u043b\u0438 \u0432 \u0432\u0430\u0448\u0435\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u0435 \u044d\u0442\u0438\u043c \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442\u0441\u044f \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u0447\u0435\u043b\u043e\u0432\u0435\u043a \u2014 \u0434\u0438\u0437\u0430\u0439\u043d\u0435\u0440; \u043c\u043d\u0435 \u0436\u0435, \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u044e\u0449\u0435\u043c\u0443 \u0432\u0441\u0435 \u0440\u0430\u0431\u043e\u0442\u044b \u0441\u0440\u0430\u0437\u0443, \u0432\u0441\u0435\u0433\u0434\u0430 \u043f\u043e\u0447\u0435\u043c\u0443-\u0442\u043e \u0442\u0440\u0443\u0434\u043d\u043e \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u0442\u044c\u0441\u044f \u043c\u0435\u0436\u0434\u0443 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u0438 \u0441\u043a\u0440\u0443\u043f\u0443\u043b\u0435\u0437\u043d\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u043e\u0439 \u0432 \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u043e\u043c \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0435\u2026<\/p>\n<p>  \u041d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 \u0448\u0430\u0431\u043b\u043e\u043d\u0430 \u0432 Photoshop:  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041e\u0444\u043e\u0440\u043c\u043b\u0435\u043d\u0438\u0435<\/b><\/p>\n<div class=\"spoiler_text\"><img decoding=\"async\" src=\"http:\/\/habrastorage.org\/getpro\/habr\/post_images\/ea6\/590\/f8a\/ea6590f8a6437c3d4d76e9e5e6f92357.png\"\/><\/div>\n<\/div>\n<p>  \u041f\u043e\u043d\u0430\u0434\u043e\u0431\u044f\u0442\u0441\u044f \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u044b \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 \u2014 PacMan-\u0430 \u0438 \u0435\u0433\u043e \u0432\u0440\u0430\u0433\u043e\u0432 (\u0430 \u0442\u0430\u043a\u0436\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430):<br \/>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/getpro\/habr\/post_images\/481\/f71\/8f0\/481f718f00e5f357fbc8d2f27935428c.png\"\/> <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/getpro\/habr\/post_images\/d35\/d4d\/f80\/d35d4df804d9a24b25b7d2fbbb453072.png\"\/> <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/getpro\/habr\/post_images\/33e\/66f\/5da\/33e66f5daebe34faacec1dd5d2125a8e.png\"\/> <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/getpro\/habr\/post_images\/297\/277\/a3f\/297277a3f0761874e9bb010bad8738d4.png\"\/><\/p>\n<p>  \u0412\u0430\u0436\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442! \u0427\u0442\u043e\u0431\u044b \u0432 \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0435\u043c \u043d\u0435 \u0431\u044b\u043b\u043e \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u0441 \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u0438 \u043f\u0440\u043e\u043f\u043e\u0440\u0446\u0438\u044f\u043c\u0438, \u0432\u0441\u044e \u0433\u0440\u0430\u0444\u0438\u043a\u0443 \u0430\u0434\u0430\u043f\u0442\u0438\u0440\u0443\u0435\u043c \u043f\u043e\u0434 \u043e\u0434\u043d\u043e \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0435. \u0423 \u043c\u0435\u043d\u044f \u0432\u044b\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043e 960&#215;540. \u042d\u0442\u043e \u043d\u0435 \u0437\u043d\u0430\u0447\u0438\u0442, \u0447\u0442\u043e \u043f\u0440\u0438 \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u043c \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u0438 \u043a\u043e\u0434\u0430 \u0432\u0441\u0435 \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u0442\u043e\u0447\u0435\u043d\u043e \u043f\u043e\u0434 \u043e\u0434\u043d\u043e \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0435, \u043d\u0430\u043f\u0440\u043e\u0442\u0438\u0432, \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0442 \u0440\u0430\u0432\u043d\u043e\u043c\u0435\u0440\u043d\u043e \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u043e\u0433\u043b\u0430\u0441\u043d\u043e \u0432\u044b\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u043e\u043c\u0443 \u043d\u0430 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0435 (\u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u0432\u043e\u0435, \u0433\u043b\u0430\u0432\u043d\u043e\u0435, \u0447\u0442\u043e\u0431\u044b \u0432\u0441\u044f \u0433\u0440\u0430\u0444\u0438\u043a\u0430 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u043b\u0430\u0441\u044c \u0432 \u0435\u0433\u043e \u043f\u0440\u0435\u0434\u0435\u043b\u0430\u0445, \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0441\u0442\u0438 \u0447\u0443\u0442\u044c \u0434\u0430\u043b\u044c\u0448\u0435).<\/p>\n<p>  \u0412\u0441\u0435 \u0444\u043e\u043d\u044b \u0438\u0433\u0440\u044b \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u043c \u0432 \u043e\u0434\u043d\u043e\u0439 \u0446\u0432\u0435\u0442\u043e\u0432\u043e\u0439 \u0433\u0430\u043c\u043c\u0435. \u042f \u0432\u044b\u0431\u0440\u0430\u043b \u0441\u0438\u043d\u0438\u0439 \u0446\u0432\u0435\u0442.<\/p>\n<p>  \u041c\u0435\u043d\u044e \u043d\u0430\u0447\u0430\u043b\u0430 \u0438\u0433\u0440\u044b \u0438 \u043f\u0430\u0443\u0437\u044b \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u0442\u0430\u043a:  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041c\u0435\u043d\u044e (rus)<\/b><\/p>\n<div class=\"spoiler_text\"><img decoding=\"async\" src=\"http:\/\/habrastorage.org\/getpro\/habr\/post_images\/8cb\/8de\/656\/8cb8de656bff1c65187509b541ae18da.png\"\/><\/div>\n<\/div>\n<p>\u041d\u0430 \u0430\u043d\u0433\u043b\u0438\u0439\u0441\u043a\u043e\u043c \u044f\u0437\u044b\u043a\u0435:  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041c\u0435\u043d\u044e (rus)<\/b><\/p>\n<div class=\"spoiler_text\"><img decoding=\"async\" src=\"http:\/\/habrastorage.org\/getpro\/habr\/post_images\/34f\/8c6\/2fc\/34f8c62fc6a87472031c76eaeb9c20df.png\"\/><\/div>\n<\/div>\n<p>  \u042d\u0442\u043e \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u0430. \u041f\u043e \u0441\u0435\u0440\u0435\u0434\u0438\u043d\u0435 \u0431\u0443\u0434\u0443\u0442 \u043f\u043e\u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043a\u043d\u043e\u043f\u043a\u0438 \u00ab\u041d\u0430\u0447\u0430\u0442\u044c \u0438\u0433\u0440\u0443\u00bb, \u00ab\u0412\u044b\u0445\u043e\u0434\u00bb; \u043b\u0438\u0431\u043e \u00ab\u041f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u0442\u044c\u00bb, \u00ab\u041d\u043e\u0432\u0430\u044f \u0438\u0433\u0440\u0430\u00bb, \u00ab\u0412\u044b\u0445\u043e\u0434\u00bb; \u0432 \u043f\u0440\u0430\u0432\u043e\u043c \u043d\u0438\u0436\u043d\u0435\u043c \u0443\u0433\u043b\u0443 \u2014 \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0439 \u0441\u0430\u0439\u0442 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430. \u0421\u0430\u043c\u0438 \u043a\u043d\u043e\u043f\u043a\u0438 \u0437\u0430\u0433\u043e\u0442\u043e\u0432\u0438\u043c \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043f\u043e\u0437\u0436\u0435, \u0441\u0435\u0439\u0447\u0430\u0441 \u0433\u043b\u0430\u0432\u043d\u043e\u0435 \u043f\u043e\u0434\u043e\u0431\u0440\u0430\u0442\u044c \u043e\u0441\u043d\u043e\u0432\u043d\u0443\u044e \u0433\u0440\u0430\u0444\u0438\u043a\u0443.<\/p>\n<p>  \u041f\u0440\u043e\u0447\u0438\u0435 \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u044b:  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u0438\u043b\u043b\u044e\u0441\u0442\u0440\u0430\u0446\u0438\u0438<\/b><\/p>\n<div class=\"spoiler_text\">\u0424\u043e\u043d \u0434\u043b\u044f \u043c\u0435\u043d\u044e \u043f\u043e\u0431\u0435\u0434\u044b:<br \/>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/getpro\/habr\/post_images\/26e\/a7f\/65d\/26ea7f65d902a4b329749b112873c633.png\"\/><\/p>\n<p>  \u0424\u043e\u043d \u0434\u043b\u044f \u043c\u0435\u043d\u044e \u043f\u043e\u0440\u0430\u0436\u0435\u043d\u0438\u044f:<br \/>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/getpro\/habr\/post_images\/811\/c52\/3f2\/811c523f260f62d9f25e33a27fe31bde.png\"\/><\/p>\n<p>  \u0424\u043e\u043d \u0441\u0430\u043c\u043e\u0439 \u0438\u0433\u0440\u044b:<br \/>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/getpro\/habr\/post_images\/a66\/5f2\/46f\/a665f246f2fd7e1e9dbaf8aa7e1e64f3.png\"\/><\/p>\n<p>  \u0413\u0440\u0430\u043d\u0438\u0446\u044b \u044d\u043a\u0440\u0430\u043d\u0430:<br \/>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/getpro\/habr\/post_images\/25b\/fac\/431\/25bfac4316a2b4bf35cfc3adde773352.png\"\/>  <\/div>\n<\/div>\n<p>  \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u043d\u0430 \u0434\u0430\u043d\u043d\u043e\u043c \u0448\u0430\u0433\u0435 \u043c\u044b \u0441\u043e\u0431\u0440\u0430\u043b\u0438 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u043f\u0435\u0440\u0435\u0447\u0435\u043d\u044c \u0442\u0435\u043a\u0441\u0442\u0443\u0440:  <\/p>\n<ul>\n<li>background_game.png \u2014 \u0444\u043e\u043d \u0438\u0433\u0440\u044b<\/li>\n<li>background_lose.png \u2014 \u0444\u043e\u043d \u043f\u043e\u0440\u0430\u0436\u0435\u043d\u0438\u044f<\/li>\n<li>background_win.png \u2014 \u0444\u043e\u043d \u043f\u043e\u0431\u0435\u0434\u044b<\/li>\n<li>border.png \u2014 \u0433\u0440\u0430\u043d\u0438\u0446\u044b \u044d\u043a\u0440\u0430\u043d\u0430 (\u043a\u043e\u043b\u044e\u0447\u0430\u044f \u043f\u0440\u043e\u0432\u043e\u043b\u043e\u043a\u0430)<\/li>\n<li>cross.png \u2014 \u0437\u043d\u0430\u0447\u043e\u043a, \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u044e\u0449\u0438\u0439 \u0436\u0438\u0437\u043d\u044c PacMan-\u0430<\/li>\n<li>pacman.png \u2014 \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u0430 PacMan-\u0430<\/li>\n<li>pacman_back.png \u2014 \u043e\u0442\u0440\u0430\u0436\u0435\u043d\u043d\u0430\u044f \u043f\u043e \u0433\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u0438 \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u0430 PacMan-\u0430<\/li>\n<li>target.png \u2014 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u0438\u0435<\/li>\n<li>target_bad.png \u2014 \u0436\u0435\u043b\u0442\u0430\u044f \u0448\u0435\u0441\u0442\u0435\u0440\u0435\u043d\u043a\u0430<\/li>\n<li>ru_LoadingScreen.png \u2014 \u043d\u0430\u0447\u0430\u043b\u044c\u043d\u044b\u0439 \u0444\u043e\u043d \u043f\u043e\u0441\u043b\u0435 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0438 \u0444\u043e\u043d \u043f\u0430\u0443\u0437\u044b \u043d\u0430 \u0440\u0443\u0441\u0441\u043a\u043e\u043c \u044f\u0437\u044b\u043a\u0435<\/li>\n<li>en_LoadingScreen.png \u2014 \u043d\u0430\u0447\u0430\u043b\u044c\u043d\u044b\u0439 \u0444\u043e\u043d \u043f\u043e\u0441\u043b\u0435 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0438 \u0444\u043e\u043d \u043f\u0430\u0443\u0437\u044b \u043d\u0430 \u0430\u043d\u0433\u043b\u0438\u0439\u0441\u043a\u043e\u043c \u044f\u0437\u044b\u043a\u0435<\/li>\n<li>ru_splash.png \u2014 \u0444\u043e\u043d \u0437\u0430\u0433\u0440\u0443\u0437\u043e\u0447\u043d\u043e\u0433\u043e \u044d\u043a\u0440\u0430\u043d\u0430 \u043d\u0430 \u0440\u0443\u0441\u0441\u043a\u043e\u043c \u044f\u0437\u044b\u043a\u0435<\/li>\n<li>en_splash.png \u2014 \u0444\u043e\u043d \u0437\u0430\u0433\u0440\u0443\u0437\u043e\u0447\u043d\u043e\u0433\u043e \u044d\u043a\u0440\u0430\u043d\u0430 \u043d\u0430 \u0430\u043d\u0433\u043b\u0438\u0439\u0441\u043a\u043e\u043c \u044f\u0437\u044b\u043a\u0435<\/li>\n<\/ul>\n<p>  <\/p>\n<h4>\u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u043f\u0440\u043e\u0435\u043a\u0442\u0430<\/h4>\n<p>  \u0421\u043e\u0437\u0434\u0430\u0435\u043c \u043f\u0440\u043e\u0435\u043a\u0442, \u0443\u043a\u0430\u0437\u0430\u0432 \u00abMonoGame for Android Application\u00bb:<br \/>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/getpro\/habr\/post_images\/515\/e03\/be3\/515e03be3b584089de8f0d14f0ab7c10.png\"\/><\/p>\n<p>  \u041f\u0435\u0440\u0435\u0438\u043c\u0435\u043d\u043e\u0432\u044b\u0432\u0430\u0435\u043c Game1 \u0432 PacManGame, \u0430 Activity1 \u0432 ActivityMain. \u0412 \u0438\u0442\u043e\u0433\u0435 \u0434\u043e\u043b\u0436\u043d\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0432\u043e\u0442 \u0442\u0430\u043a\u043e\u0439 \u0432\u043e\u0442 \u00ab\u0447\u0438\u0441\u0442\u044b\u0439\u00bb \u043f\u0440\u043e\u0435\u043a\u0442:<br \/>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/getpro\/habr\/post_images\/edd\/c23\/a47\/eddc23a47dde0815c5b4be197d923b7c.png\"\/><\/p>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u043c \u0435\u0433\u043e \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0442\u044c. \u0429\u0435\u043b\u043a\u0430\u0435\u043c \u043f\u0440\u0430\u0432\u043e\u0439 \u043a\u043d\u043e\u043f\u043a\u043e\u0439 \u043f\u043e \u043d\u0430\u0434\u043f\u0438\u0441\u0438 PacMan \u0432\u043e \u0433\u043b\u0430\u0432\u0435 \u0441\u043f\u0438\u0441\u043a\u0430 \u0441\u043b\u0435\u0432\u0430 (\u0433\u043e\u043b\u0443\u0431\u043e\u0439 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0435), \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u043c \u043f\u0443\u043d\u043a\u0442 Options. \u0412 General \u0432\u044b\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c Target Framework \u00abAndroid 4.0\u00bb, \u0432 Android Build \u043d\u0430 \u0432\u043a\u043b\u0430\u0434\u043a\u0435 Advanced \u0432\u044b\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c \u0432\u0441\u0435 \u0433\u0430\u043b\u043a\u0438 (armeabi, armeabi-v7a, x86), \u0432 Android Application \u0441\u0442\u0430\u0432\u0438\u043c Minimum \u0438 Target Android Version \u0432 \u00ab4.0\u00bb, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0441\u0442\u0430\u0432\u0438\u043c \u0433\u0430\u043b\u043e\u0447\u043a\u0438 Internet \u0438 WriteExternalStorage (\u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u0441\u044f \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0442\u044c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u0438\u0433\u0440\u044b). \u0422\u0430\u043a\u0436\u0435 \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u043c \u0437\u043d\u0430\u0447\u043e\u043a icon \u0432 &quot;@drawble\/icon&quot;.<\/p>\n<p>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/getpro\/habr\/post_images\/26e\/94f\/428\/26e94f4287aea8b7f0865c972e68148f.jpg\"\/><br \/>  \u041e\u0431\u0440\u0430\u0442\u0438\u043c \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435, \u0447\u0442\u043e Version name \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0430 \u0432 1.0 (\u0432 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0435, \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u043e\u043c\u0435\u043d\u044f\u0442\u044c \u043d\u0430 \u043a\u0430\u043a\u0443\u044e \u0445\u043e\u0442\u0438\u0442\u0435, \u043a \u043f\u0440\u0438\u043c\u0435\u0440\u0443, 0.1b, \u044d\u0442\u043e \u043b\u0438\u0448\u044c \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u043c\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f), \u0430 Version number \u0440\u0430\u0432\u043d\u043e 1. \u0417\u043d\u0430\u0447\u0435\u043d\u0438\u0435 Version number \u043b\u0443\u0447\u0448\u0435 \u043d\u0435 \u0442\u0440\u043e\u0433\u0430\u0442\u044c, \u044d\u0442\u043e \u043f\u043e \u043d\u0435\u043c\u0443 Google Play \u0443\u0437\u043d\u0430\u0435\u0442, \u043d\u0443\u0436\u043d\u043e \u043b\u0438 \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0442\u044c \u0438\u0433\u0440\u0443, \u0435\u0441\u043b\u0438 \u0432 \u043b\u0438\u0447\u043d\u044b\u0439 \u043a\u0430\u0431\u0438\u043d\u0435\u0442 \u0431\u044b\u043b \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d \u043d\u043e\u0432\u044b\u0439 *.apk-\u0444\u0430\u0439\u043b. \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u043f\u0440\u0438 \u043a\u0430\u0436\u0434\u043e\u043c \u043d\u043e\u0432\u043e\u043c \u0440\u0435\u043b\u0438\u0437\u0435 \u043d\u0435\u043b\u044c\u0437\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u0440\u043e\u0448\u043b\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f Version number.<\/p>\n<p>  \u0412 Resources\/Drawble \u0441\u043e\u0437\u0434\u0430\u0435\u043c \u043f\u0430\u043f\u043a\u0438 drawable-hdpi, drawable-ldpi, drawable-mdpi, drawable-xhdpi, drawable-xxhdpi. \u0412 \u043d\u0438\u0445 \u043d\u0443\u0436\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u043c\u0435\u0441\u0442\u0438\u0442\u044c \u0437\u043d\u0430\u0447\u043a\u0438 \u0432 \u0440\u0430\u0437\u043d\u044b\u0445 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f\u0445, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043b\u0443\u0447\u0448\u0435 \u0432\u0441\u0435\u0433\u043e \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f <a href=\"http:\/\/habrahabr.ru\/post\/213563\/\">App Icon Template<\/a>. \u0412 drawble: 144&#215;144, \u0432 drawable-hdpi: 72&#215;72, \u0432 drawable-ldpi: 36&#215;36, \u0432 drawble-mdpi: 72&#215;72, \u0432 drawable-xhdpi: 96&#215;96, \u0432 drawable-xhdpi: 144&#215;144. \u0412\u0441\u0435 \u0437\u043d\u0430\u0447\u043a\u0438 \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u043d\u0430\u0437\u0432\u0430\u043d\u044b \u043f\u0440\u043e\u0441\u0442\u043e icon.png.<br \/>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/getpro\/habr\/post_images\/bcd\/6b9\/b61\/bcd6b9b6119065617560ae86957e490f.png\"\/><br \/>  splash.png \u2014 \u0437\u0430\u0433\u0440\u0443\u0437\u043e\u0447\u043d\u044b\u0439 \u044d\u043a\u0440\u0430\u043d Xamarin, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c\u0441\u044f \u043f\u0440\u0438 \u043e\u0442\u043a\u0440\u044b\u0442\u0438\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0432 \u043c\u043e\u043c\u0435\u043d\u0442 \u043f\u043e\u0434\u0433\u0440\u0443\u0437\u043a\u0438 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u044b. \u041d\u0430 \u0434\u0435\u043b\u0435 (\u0432 \u0442\u0430\u043a\u043e\u043c \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u043e\u043c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0438) \u043e\u043d \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c\u0441\u044f, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u043c\u0435\u043d\u0438\u0442\u044c \u0435\u0433\u043e \u043d\u0430 \u0442\u043e \u0436\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435, \u0447\u0442\u043e \u0438 \u0432 ru_splash\/en_splash, \u043d\u043e \u0431\u0435\u0437 \u043d\u0430\u0434\u043f\u0438\u0441\u0435\u0439. \u0421\u0430\u043c\u0438 ru_splash\/en_splash \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u044f\u0442\u0441\u044f \u043f\u0440\u0438 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0435 \u0442\u0435\u043a\u0441\u0442\u0443\u0440.<\/p>\n<p>  \u0412 Assets \u0441\u043e\u0437\u0434\u0430\u0435\u043c \u043f\u0430\u043f\u043a\u0443 Content, \u0432 \u043d\u0435\u0439 \u2014 \u043f\u0430\u043f\u043a\u0438 en \u0438 ru (\u0434\u043b\u044f \u0443\u0434\u043e\u0431\u0441\u0442\u0432\u0430 \u2014 \u0447\u0442\u043e\u0431\u044b \u0440\u0430\u0437\u0434\u0435\u043b\u044f\u0442\u044c \u044f\u0437\u044b\u043a\u0438). \u041f\u043e\u043c\u0435\u0449\u0430\u0435\u043c \u0442\u0443\u0434\u0430 \u0437\u0430\u0433\u043e\u0442\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u0435 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0438 \u043a\u0430\u043a \u043f\u043e\u043a\u0430\u0437\u0430\u043d\u043e \u043d\u0430 \u0441\u043a\u0440\u0438\u043d\u0448\u043e\u0442\u0435 (\u0432 \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0435\u043c \u0438\u0445 \u0435\u0449\u0435 \u043f\u0440\u0438\u0434\u0435\u0442\u0441\u044f \u043f\u043e\u043f\u043e\u043b\u043d\u044f\u0442\u044c):<br \/>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/getpro\/habr\/post_images\/fa8\/fa0\/e77\/fa8fa0e77939cf4d2f8961dd854e4d9d.png\"\/><\/p>\n<p>  \u0422\u0430\u043a\u0436\u0435 \u0441\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u0432 \u043f\u0430\u043f\u043a\u0435 Resources \u043f\u0430\u043f\u043a\u0438 values, values-ru, values-en, values-uk, values-be, values-sr, \u0430 \u0432 \u043d\u0438\u0445 \u0444\u0430\u0439\u043b strings.xml. \u041a\u0430\u043a \u0432\u044b \u0443\u0436\u0435 \u043d\u0430\u0432\u0435\u0440\u043d\u044f\u043a\u0430 \u0434\u043e\u0433\u0430\u0434\u0430\u043b\u0438\u0441\u044c, \u044d\u0442\u043e \u0444\u0430\u0439\u043b\u044b \u0441\u043e \u0441\u0442\u0440\u043e\u043a\u0430\u043c\u0438, \u043a\u0430\u0436\u0434\u0430\u044f \u043d\u0430 \u0441\u0432\u043e\u0435\u043c \u044f\u0437\u044b\u043a\u0435, \u0442\u0443\u0434\u0430 \u043f\u043e\u043c\u0435\u0441\u0442\u0438\u043c \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f. \u041d\u0435 \u0441\u043c\u043e\u0442\u0440\u044f \u043d\u0430 \u0442\u043e, \u0447\u0442\u043e \u0441\u0430\u043c\u0430 \u0438\u0433\u0440\u0430 \u0431\u0443\u0434\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430 \u0440\u0443\u0441\u0441\u043a\u043e\u043c \u0438 \u0430\u043d\u0433\u043b\u0438\u0439\u0441\u043a\u043e\u043c, \u0441\u0434\u0435\u043b\u0430\u0435\u043c \u0442\u0430\u043a, \u0447\u0442\u043e\u0431\u044b \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u043c\u043e\u0433\u043b\u043e \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u0443\u043a\u0440\u0430\u0438\u043d\u0441\u043a\u043e\u043c, \u0431\u0435\u043b\u043e\u0440\u0443\u0441\u0441\u043a\u043e\u043c \u0438 \u0441\u0435\u0440\u0431\u0441\u043a\u043e\u043c. \u0422\u0440\u0443\u0434\u043e\u0437\u0430\u0442\u0440\u0430\u0442 \u043d\u0438\u043a\u0430\u043a\u0438\u0445 (Google Translate \u043d\u0430 \u0441\u043b\u0430\u0432\u044f\u043d\u0441\u043a\u0438\u0445 \u044f\u0437\u044b\u043a\u0430\u0445 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e), \u0430 \u0432\u043e\u0442 \u0443\u0432\u0438\u0434\u0435\u0442\u044c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0432 Google Play \u0438, \u0432 \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0435\u043c, \u0437\u043d\u0430\u0447\u043e\u043a \u0441 \u043f\u043e\u0434\u043f\u0438\u0441\u044c\u044e \u043d\u0430 \u043d\u0430\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u043c \u044f\u0437\u044b\u043a\u0435, \u0432\u0441\u0435 \u0440\u0430\u0432\u043d\u043e \u043f\u0440\u0438\u044f\u0442\u043d\u043e. \u0421\u0430\u043c\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043d\u0430 \u0440\u0443\u0441\u0441\u043a\u043e\u043c \u2014 \u0441\u0435\u0440\u0431\u044b, \u0431\u0435\u043b\u043e\u0440\u0443\u0441\u044b \u0438 \u0442\u0435, \u043a\u0442\u043e \u0432\u044b\u0441\u0442\u0430\u0432\u0438\u043b\u0438 \u0432 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u0445 \u043d\u0430 \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0435 \u0443\u043a\u0440\u0430\u0438\u043d\u0441\u043a\u0438\u0439, \u0432\u0441\u0435 \u0440\u0430\u0432\u043d\u043e \u0440\u0443\u0441\u0441\u043a\u0438\u0439 \u044f\u0437\u044b\u043a \u043f\u043e\u043d\u0438\u043c\u0430\u044e\u0442 \u0445\u043e\u0440\u043e\u0448\u043e.<\/p>\n<p>  \u041a\u043e\u0434 strings.xml:  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">strings.xml \u043d\u0430 \u0440\u0430\u0437\u043d\u044b\u0445 \u044f\u0437\u044b\u043a\u0430\u0445<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"xml\">values:  &lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt; &lt;resources&gt;     &lt;string name=&quot;ApplicationName&quot;&gt;Angry PacMan&lt;\/string&gt; &lt;\/resources&gt;  values-ru:  &lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt; &lt;resources&gt;     &lt;string name=&quot;ApplicationName&quot;&gt;\u0417\u043b\u043e\u0439 PacMan&lt;\/string&gt; &lt;\/resources&gt;  values-uk:  &lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt; &lt;resources&gt;     &lt;string name=&quot;ApplicationName&quot;&gt;\u0417\u043b\u0438\u0439 PacMan&lt;\/string&gt; &lt;\/resources&gt;  values-be:  &lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt; &lt;resources&gt;     &lt;string name=&quot;ApplicationName&quot;&gt;\u0417\u043b\u044b PacMan&lt;\/string&gt; &lt;\/resources&gt;  values-sr:  &lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt; &lt;resources&gt;     &lt;string name=&quot;ApplicationName&quot;&gt;\u0409\u0443\u0442\u0438 PacMan&lt;\/string&gt; &lt;\/resources&gt;  <\/code><\/pre>\n<\/div>\n<\/div>\n<p>  \u041d\u0430 \u044d\u0442\u043e\u043c \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0440\u0430\u0431\u043e\u0442\u044b \u0437\u0430\u043a\u043e\u043d\u0447\u0435\u043d\u044b, \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u0438\u0441\u0442\u0443\u043f\u0430\u0442\u044c \u043a \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0439 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435.<\/p>\n<h4>\u0420\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u00ab\u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0445\u00bb \u043a\u043b\u0430\u0441\u0441\u043e\u0432<\/h4>\n<p>  \u041f\u043e\u0441\u0442\u0430\u0432\u0438\u043c \u0437\u0430\u0434\u0430\u0447\u0435\u0439 \u043e\u043f\u043e\u0441\u0440\u0435\u0434\u043e\u0432\u0430\u0442\u044c \u043b\u043e\u0433\u0438\u043a\u0443 \u0438\u0433\u0440\u043e\u0432\u044b\u0445 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 \u0438 \u043b\u043e\u0433\u0438\u043a\u0443 \u0441\u0430\u043c\u043e\u0433\u043e \u0434\u0432\u0438\u0436\u043a\u0430 XNA\/MonoGame. \u041f\u0443\u0441\u0442\u044c \u00ab\u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0435\u00bb \u043a\u043b\u0430\u0441\u0441\u044b \u2014 \u043a\u043b\u0430\u0441\u0441\u044b, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0435 \u0434\u043b\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0435\u0433\u043e \u0438\u0433\u0440\u043e\u0432\u043e\u0433\u043e \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430, \u0442\u043e \u0435\u0441\u0442\u044c \u0438\u0433\u0440\u043e\u0432\u044b\u0445 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 \u00ab\u0438\u0433\u0440\u043e\u0432\u043e\u0439 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u00bb, \u00ab\u0438\u0433\u0440\u043e\u043a\u00bb, \u00ab\u0432\u0440\u0430\u0433\u00bb; \u0430 \u00ab\u0432\u043d\u0435\u0448\u043d\u0438\u0435\u00bb \u043a\u043b\u0430\u0441\u0441\u044b \u2014 \u043a\u043b\u0430\u0441\u0441\u044b, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0435 \u0434\u043b\u044f \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0435\u0433\u043e \u0438\u0433\u0440\u043e\u0432\u043e\u0433\u043e \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430 \u0438 \u0438\u0433\u0440\u043e\u0432\u043e\u0433\u043e \u0434\u0432\u0438\u0436\u043a\u0430. \u041e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043c\u0441\u044f \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u043d\u0430 \u00ab\u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0445\u00bb.<\/p>\n<p>  \u041d\u0438\u0436\u0435 \u043f\u0440\u0438\u0432\u0435\u0434\u0443 \u043a\u043e\u0434 \u0441 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u044f\u043c\u0438. \u042f \u043f\u043e\u0441\u0442\u0430\u0440\u0430\u043b\u0441\u044f \u0440\u0430\u0441\u043f\u0438\u0441\u0430\u0442\u044c \u0435\u0433\u043e \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e, \u0435\u0441\u043b\u0438 \u0447\u0442\u043e-\u0442\u043e \u043d\u0435 \u043f\u043e\u043d\u044f\u0442\u043d\u043e, \u0441\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0439\u0442\u0435. \u0421\u0440\u0430\u0437\u0443 \u043e\u0431\u0440\u0430\u0442\u0438\u043c \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435, \u0447\u0442\u043e \u0432\u0441\u0435 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u044b \u0443\u043a\u0430\u0437\u0430\u043d\u044b \u0432 \u043f\u0440\u0435\u0434\u0435\u043b\u0430\u0445 960&#215;540, \u0442\u043e \u0435\u0441\u0442\u044c \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 \u043b\u043e\u0433\u0438\u043a\u0438 \u0438\u0433\u0440\u043e\u0432\u044b\u0445 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0438\u0433\u0440\u043e\u0432\u043e\u0433\u043e \u043f\u043e\u043b\u044f \u0441\u043e\u0433\u043b\u0430\u0441\u043d\u043e \u0442\u0435\u043a\u0443\u0449\u0435\u043c\u0443 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044e \u044d\u043a\u0440\u0430\u043d\u0430 \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0430 \u043d\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442). <\/p>\n<p>  \u041a\u043b\u0430\u0441\u0441 \u00ab\u0438\u0433\u0440\u043e\u043a\u00bb:  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">Classes.Player.cs<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"cs\">using System; using Microsoft.Xna.Framework;  namespace pacmangame {     \/\/ \u043a\u043b\u0430\u0441\u0441 &quot;\u0438\u0433\u0440\u043e\u043a&quot;     class Player     {         \/\/ \u043f\u043e\u043b\u044f \u043a\u043b\u0430\u0441\u0441\u0430         public float X { get; private set; } \/\/\u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u0430 X         public float Y { get; private set; } \/\/\u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u0430 Y         public int Direction; \/\/ \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u044f (1 - \u0432\u043f\u0440\u0430\u0432\u043e, 2 - \u0432\u043b\u0435\u0432\u043e, 3 - \u0432\u0432\u0435\u0440\u0445, 4 - \u0432\u043d\u0438\u0437)         public float Speed { get; private set; } \/\/ \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u044f         public float Angle { get; private set; } \/\/ \u0443\u0433\u043e\u043b \u043d\u0430\u043a\u043b\u043e\u043d\u0430         public int Lives; \/\/ \u0447\u0438\u0441\u043b\u043e \u0436\u0438\u0437\u043d\u0435\u0439         public GameProcess GameProcess; \/\/ \u0438\u0433\u0440\u043e\u0432\u043e\u0439 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 (\u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043e\u0431\u0440\u0430\u0442\u043d\u0430\u044f \u0441\u0432\u044f\u0437\u044c)         private int IncreaseSpeedCount; \/\/ \u043f\u0440\u043e\u043c\u0435\u0436\u0443\u0442\u043e\u0447\u043d\u0430\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f \u0434\u043b\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0441\u0447\u0435\u0442\u0447\u0438\u043a\u0430 \u0443\u0432\u0435\u043b\u0438\u0447\u0435\u043d\u0438\u044f \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u0438         \/\/ \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440 \u043a\u043b\u0430\u0441\u0441\u0430 - \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u043f\u0440\u0438 \u0435\u0433\u043e \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 (\u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438)         public Player(GameProcess importGameProcess)         {             \/\/ \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u044b \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f - \u0432 \u043b\u0435\u0432\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 \u044d\u043a\u0440\u0430\u043d\u0430             X = 50;             Y = 200;             Lives = 5;             Direction = 1; \/\/ \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u044f \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c &quot;\u0432\u043f\u0440\u0430\u0432\u043e&quot;             Angle = 0; \/\/ \u043d\u0430\u0447\u0430\u043b\u044c\u043d\u044b\u0439 \u0443\u0433\u043e\u043b \u0440\u0430\u0432\u0435\u043d 0 \u0433\u0440\u0430\u0434\u0443\u0441\u043e\u0432             Speed = 160f; \/\/ \u043d\u0430\u0447\u0430\u043b\u044c\u043d\u0430\u044f \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c (\u043f\u043e\u0442\u043e\u043c \u043c\u043e\u0436\u043d\u043e \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c)             GameProcess = importGameProcess; \/\/ \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u043e\u0431\u0440\u0430\u0442\u043d\u043e\u0439 \u0441\u0432\u044f\u0437\u0438 \u0441 \u0438\u0433\u0440\u043e\u0432\u044b\u043c \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u043c         }         \/\/ \u043c\u0435\u0442\u043e\u0434 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0438\u0433\u0440\u043e\u043a\u0430 \u0441 \u0446\u0435\u043b\u044f\u043c\u0438         public void WorkWithTarget()         {             foreach (var enemy in GameProcess.Enemies)             {                 \/\/ \u0435\u0441\u043b\u0438 \u0438\u0433\u0440\u043e\u043a \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432\u0431\u043b\u0438\u0437\u0438 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u0438\u044f, \u043e\u043d \u0435\u0433\u043e &quot;\u0441\u044a\u0435\u0434\u0430\u0435\u0442&quot;                 if ((Math.Abs(X - enemy.Screenpos.X) &lt; 40) && (Math.Abs(Y - enemy.Screenpos.Y) &lt; 40))                 {                     GameProcess.Score++;                     enemy.IsAlive = false;                 }             }             foreach (var badenemy in GameProcess.BadEnemies)             {                 \/\/ \u0435\u0441\u043b\u0438 \u0438\u0433\u0440\u043e\u043a \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432\u0431\u043b\u0438\u0437\u0438 \u0436\u0435\u043b\u0442\u043e\u0439 \u0448\u0435\u0441\u0442\u0435\u0440\u0435\u043d\u043a\u0438, \u044d\u0442\u0430 \u0448\u0435\u0441\u0442\u0435\u0440\u0435\u043d\u043a\u0430 \u0435\u0433\u043e \u0440\u0430\u043d\u0438\u0442                 if ((Math.Abs(X - badenemy.Screenpos.X) &lt; 40) && (Math.Abs(Y - badenemy.Screenpos.Y) &lt; 40))                 {                     Lives--; \/\/ \u0443\u043c\u0435\u043d\u044c\u0448\u0438\u0442\u044c \u0441\u0447\u0435\u0442\u0447\u0438\u043a \u0436\u0438\u0437\u043d\u0435\u0439                     badenemy.IsAlive = false;                 }             }         }         \/\/ \u043c\u0435\u0442\u043e\u0434 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0438\u0433\u0440\u043e\u043a\u0430         public void Process(GameTime gameTime)         {             if (Lives &lt; 0) \/\/ \u0435\u0441\u043b\u0438 \u0447\u0438\u0441\u043b\u043e \u0436\u0438\u0437\u043d\u0435\u0439 \u043c\u0435\u043d\u044c\u0448\u0435 \u043d\u0443\u043b\u044f             {                 if (GameProcess.Score &lt;= GameProcess.MaxScore) \/\/ \u0435\u0441\u043b\u0438 \u0440\u0435\u043a\u043e\u0440\u0434 \u043d\u0435 \u0431\u044b\u043b \u043f\u043e\u0431\u0438\u0442                     GameProcess.LoseGame(); \/\/ \u043f\u043e\u0440\u0430\u0436\u0435\u043d\u0438\u0435                 else GameProcess.WinGame(); \/\/ \u043f\u043e\u0431\u0435\u0434\u0430             }             \/\/\u0443\u0432\u0435\u043b\u0438\u0447\u0435\u043d\u0438\u0435 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u0438 \u0434\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u043f\u0440\u0435\u0434\u0435\u043b\u0430             IncreaseSpeedCount++; \t\t\tif (IncreaseSpeedCount &gt;= 400) \/\/ \u0441\u043f\u0443\u0441\u0442\u044f \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u0434\u043e\u043b\u0436\u043d\u0430 \u043d\u0430\u0447\u0430\u0442\u044c \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0432\u0430\u0442\u044c\u0441\u044f             {                 if (Speed&lt;340) Speed += 0.04f;             }             \/\/ \u0432\u044b\u0431\u043e\u0440 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u044f             switch (Direction)             {                 case 1: \/\/ \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u0435 \u0432\u043f\u0440\u0430\u0432\u043e                     {                         Angle = 0;                         X += Speed * (float)gameTime.ElapsedGameTime.TotalSeconds;                         break;                     }                 case 2:  \/\/ \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u0435 \u0432\u043b\u0435\u0432\u043e                     {                         Angle = 0;                         X -= Speed * (float)gameTime.ElapsedGameTime.TotalSeconds;                         break;                     }                 case 3: \/\/ \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u0435 \u0432\u0432\u0435\u0440\u0445                     {                         Angle = (float)(3.14 + 3.14 \/ 2);                         Y -= Speed * (float)gameTime.ElapsedGameTime.TotalSeconds;                         break;                     }                 case 4: \/\/ \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u0435 \u0432\u043d\u0438\u0437                     {                         Angle = (float)3.14 \/ 2;                         Y += Speed * (float)gameTime.ElapsedGameTime.TotalSeconds;                         break;                     }             }             \/\/ \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043f\u043e\u0437\u0438\u0446\u0438\u0438 \u0438\u0433\u0440\u043e\u043a\u0430 (\u0435\u0441\u043b\u0438 \u0432\u044b\u0445\u043e\u0434\u0438\u0442 \u0437\u0430 \u0433\u0440\u0430\u043d\u0438\u0446\u044b \u044d\u043a\u0440\u0430\u043d\u0430 - \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u043f\u043e\u0440\u0430\u0436\u0435\u043d\u0438\u0435)             if ((X &lt; 32) || (Y &lt; 32) || (X &gt; 960-32) || (Y &gt; 540-32))             {                 Lives = 5; \/\/ \u0447\u0438\u0441\u043b\u043e \u0436\u0438\u0437\u043d\u0435\u0439 \u0440\u0430\u0432\u043d\u043e \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u043c\u0443 (\u043d\u0435 \u0432\u0430\u0436\u043d\u043e, \u0431\u044b\u043b\u0438 \u043e\u043d\u0438 \u043f\u043e\u0442\u0440\u0430\u0447\u0435\u043d\u044b \u0438\u043b\u0438 \u043d\u0435\u0442) \t\t\tif (GameProcess.Score &lt;= GameProcess.MaxScore) \/\/ \u0435\u0441\u043b\u0438 \u0440\u0435\u043a\u043e\u0440\u0434 \u043d\u0435 \u0431\u044b\u043b \u043f\u043e\u0431\u0438\u0442 \t\t\t\tGameProcess.LoseGame(); \/\/ \u043f\u043e\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \t\t\telse GameProcess.WinGame(); \/\/ \u043f\u043e\u0431\u0435\u0434\u0430             }         }     } } <\/code><\/pre>\n<\/div>\n<\/div>\n<p>\u041a\u043b\u0430\u0441\u0441 \u00ab\u0432\u0440\u0430\u0433\u00bb:  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">Classes.Enemy.cs<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"cs\">using System; using Microsoft.Xna.Framework;  namespace pacmangame {     \/\/ \u043a\u043b\u0430\u0441\u0441 &quot;\u0432\u0440\u0430\u0433&quot;     public class Enemy     {         public Vector2 Screenpos; \/\/ \u043f\u043e\u0437\u0438\u0446\u0438\u044f \u043d\u0430 \u044d\u043a\u0440\u0430\u043d\u0435         public Vector2 Center; \/\/ \u043e\u0441\u044c \u0432\u0440\u0430\u0449\u0435\u043d\u0438\u044f         public Vector2 Velocity; \/\/ \u0432\u0435\u043a\u0442\u043e\u0440\u044b \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u0438         public bool IsAlive; \/\/ \u0431\u044b\u043b\u0430 \u043b\u0438 \u0446\u0435\u043b\u044c \u0443\u043d\u0438\u0447\u0442\u043e\u0436\u0435\u043d\u0430         public float Rotation; \/\/\u043f\u043e\u0432\u043e\u0440\u043e\u0442         public float Speed;\/\/\u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c         private Random Rnd; \/\/ \u0441\u0447\u0435\u0442\u0447\u0438\u043a \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0445 \u0447\u0438\u0441\u0435\u043b         private int IncreaseSpeedCount; \/\/ \u043f\u0440\u043e\u043c\u0435\u0436\u0443\u0442\u043e\u0447\u043d\u043e\u0435 \u043f\u043e\u043b\u0435 \u0434\u043b\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0441\u0447\u0435\u0442\u0447\u0438\u043a\u0430 \u0443\u0432\u0435\u043b\u0438\u0447\u0435\u043d\u0438\u044f \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u0438          \/\/ \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440 \u043a\u043b\u0430\u0441\u0441\u0430 - \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u043f\u0440\u0438 \u0435\u0433\u043e \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 (\u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438)         public Enemy(int x,int y)         {             Speed = 4;             Center.X = 40;             Center.Y = 40;             IsAlive = true;             Screenpos.X = x;              Screenpos.Y = y;             Velocity = new Vector2(20, 20);         }          \/\/  \u043c\u0435\u0442\u043e\u0434 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0446\u0435\u043b\u0435\u0439         public void Process(bool enableSpeedUp, GameTime gameTime)          {             Rnd = new Random(); \/\/ \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0441\u0447\u0435\u0442\u0447\u0438\u043a\u0430 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0445 \u0447\u0438\u0441\u0435\u043b             if (enableSpeedUp) \/\/ \u0435\u0441\u043b\u0438 \u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u043e \u0443\u0441\u043a\u043e\u0440\u0435\u043d\u0438\u0435              {                 \/\/\u0443\u0432\u0435\u043b\u0438\u0447\u0435\u043d\u0438\u0435 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u0438 \u0434\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u043f\u0440\u0435\u0434\u0435\u043b\u0430                 IncreaseSpeedCount++; \t\t\t\tif (IncreaseSpeedCount &gt;= 400) \/\/ \u0441\u043f\u0443\u0441\u0442\u044f \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u0434\u043e\u043b\u0436\u043d\u0430 \u043d\u0430\u0447\u0430\u0442\u044c \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0432\u0430\u0442\u044c\u0441\u044f                 {                     if (Speed&lt;30) Speed += 0.001f;                 }             }             else Speed = 2; \/\/ \u0432 \u043f\u0440\u043e\u0442\u0438\u0432\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 - \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u0430             if (!IsAlive) \/\/ \u0435\u0441\u043b\u0438 \u0446\u0435\u043b\u044c \u0431\u044b\u043b\u0430 \u0443\u043d\u0438\u0447\u0442\u043e\u0436\u0435\u043d\u0430 - \u043d\u043e\u0432\u043e\u0435 \u043f\u043e\u044f\u0432\u043b\u0435\u043d\u0438\u0435 \u043d\u0430 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0445 \u043f\u043e\u0437\u0438\u0446\u0438\u044f\u0445 \u044d\u043a\u0440\u0430\u043d\u0430             {                     IsAlive = true; \/\/ \u0446\u0435\u043b\u044c \u043d\u0435 \u0431\u044b\u043b\u0430 \u0443\u043d\u0438\u0447\u0442\u043e\u0436\u0435\u043d\u0430                     switch (Rnd.Next(1, 5)) \/\/ \u0432\u044b\u0431\u043e\u0440 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442 \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u0438                     {                         case 1:                             Screenpos.X = Rnd.Next(40,100);                             Screenpos.Y = 40;                             break;                         case 2:                             Screenpos.X = 550;                             Screenpos.Y = Rnd.Next(40, 100);                             break;                         case 3:                             Screenpos.X = 40;                             Screenpos.Y = Rnd.Next(400,500);                             break;                         case 4:                             Screenpos.X = Rnd.Next(500, 600);                             Screenpos.Y = 450;                             break;                 }             }             Screenpos += Speed * Velocity * (float)gameTime.ElapsedGameTime.TotalSeconds; \/\/ \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u0435 \u043f\u043e \u044d\u043a\u0440\u0430\u043d\u0443             Rotation += ((Rnd.Next(1, 2))) * (float)gameTime.ElapsedGameTime.TotalSeconds; \/\/ \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u0443\u0433\u043b\u0430             \/\/ \u043e\u0442\u0442\u0430\u043b\u043a\u0438\u0432\u0430\u043d\u0438\u0435 \u043e\u0442 \u043a\u0440\u0430\u044f \u044d\u043a\u0440\u0430\u043d\u0430             if (Screenpos.X &lt; 0 + Center.X) Velocity.X = -Velocity.X;             if (Screenpos.X &gt; 960 - Center.X) Velocity.X = -Velocity.X;             if (Screenpos.Y &lt; 0 + Center.X) Velocity.Y = -Velocity.Y;             if (Screenpos.Y &gt; 540 - Center.X) Velocity.Y = -Velocity.Y;         }     } } <\/code><\/pre>\n<\/div>\n<\/div>\n<p>\u041a\u043b\u0430\u0441\u0441 \u00ab\u0438\u0433\u0440\u043e\u0432\u043e\u0439 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u00bb:  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">Classes.GameProcess.cs<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"cs\">using System.Collections.Generic;  namespace pacmangame {     \/\/ \u043a\u043b\u0430\u0441\u0441 &quot;\u0418\u0433\u0440\u043e\u0432\u043e\u0439 \u043f\u0440\u043e\u0446\u0435\u0441\u0441&quot;     class GameProcess     {         public bool IsWin; \/\/ \u0431\u044b\u043b\u0430 \u043b\u0438 \u043f\u043e\u0431\u0435\u0434\u0430 (\u043a \u043f\u043e\u043b\u044e \u043c\u043e\u0436\u043d\u043e \u043e\u0431\u0440\u0430\u0442\u0438\u0442\u044c\u0441\u044f \u0438\u0437\u0432\u043d\u0435, \u043d\u043e \u043d\u0435\u043b\u044c\u0437\u044f \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u0438\u0437\u0432\u043d\u0435)         public bool IsLose; \/\/ \u0431\u044b\u043b\u043e \u043b\u0438 \u043f\u043e\u0440\u0430\u0436\u0435\u043d\u0438\u0435 (\u043a \u043f\u043e\u043b\u044e \u043c\u043e\u0436\u043d\u043e \u043e\u0431\u0440\u0430\u0442\u0438\u0442\u044c\u0441\u044f \u0438\u0437\u0432\u043d\u0435, \u043d\u043e \u043d\u0435\u043b\u044c\u0437\u044f \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u0438\u0437\u0432\u043d\u0435)         public bool IsGame; \/\/ \u0438\u0434\u0435\u0442 \u043b\u0438 \u0438\u0433\u0440\u043e\u0432\u043e\u0439 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 (\u043a \u043f\u043e\u043b\u044e \u043c\u043e\u0436\u043d\u043e \u043e\u0431\u0440\u0430\u0442\u0438\u0442\u044c\u0441\u044f \u0438\u0437\u0432\u043d\u0435, \u043d\u043e \u043d\u0435\u043b\u044c\u0437\u044f \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u0438\u0437\u0432\u043d\u0435)         public bool IsPause; \/\/ \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0430 \u043b\u0438 \u043f\u0430\u0443\u0437\u0430 \t\tpublic int Score; \/\/ \u0442\u0435\u043a\u0443\u0449\u0438\u0439 \u0441\u0447\u0435\u0442          public int MaxScore = 0; \/\/ \u043d\u0430\u0438\u043b\u0443\u0447\u0448\u0438\u0439 \u0441\u0447\u0435\u0442 (\u0438\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u0440\u0430\u0432\u0435\u043d \u043d\u0443\u043b\u044e) \t\tClassScoreManager ClassScoreManager = new ClassScoreManager(); \/\/ \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440 \u0441\u0447\u0435\u0442\u0430 \t\tpublic List&lt;Enemy&gt; Enemies = new List&lt;Enemy&gt;(); \/\/ \u043f\u0440\u0438\u0432\u0438\u0434\u0435\u043d\u0438\u044f \t\tpublic List&lt;Enemy&gt; BadEnemies = new List&lt;Enemy&gt;(); \/\/ \u0436\u0435\u043b\u0442\u044b\u0435 \u0448\u0435\u0441\u0442\u0435\u0440\u0435\u043d\u043a\u0438         \/\/ \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u043a\u043b\u0430\u0441\u0441\u0430 \t\tpublic GameProcess()         {             IsWin = false; \/\/ \u043f\u043e\u0431\u0435\u0434\u044b \u043d\u0435 \u0431\u044b\u043b\u043e             IsLose = false; \/\/ \u043f\u043e\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u043d\u0435 \u0431\u044b\u043b\u043e             IsGame = false; \/\/ \u0438\u0433\u0440\u043e\u0432\u043e\u0439 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0435\u0449\u0435 \u043d\u0435 \u0438\u0434\u0435\u0442             IsGame = false; \/\/ \u043f\u0430\u0443\u0437\u0430 \u043d\u0435 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0430  \t\t\t\/\/ \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0440\u0435\u043a\u043e\u0440\u0434\u0430 \t\t\tClassScoreManager = ClassScoreManager.ReadScores(); \t\t\tMaxScore = ClassScoreManager.Score.Value;              \/\/ \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0432\u0440\u0430\u0433\u043e\u0432             Enemies.Add(new Enemy(100, 300));             Enemies.Add(new Enemy(500, 400));             Enemies.Add(new Enemy(300, 400));             Enemies.Add(new Enemy(200, 350));             Enemies.Add(new Enemy(600, 100));             Enemies.Add(new Enemy(150, 200));             Enemies.Add(new Enemy(400, 150));             \/\/ \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0448\u0435\u0441\u0442\u0435\u0440\u0435\u043d\u043e\u043a             BadEnemies.Add(new Enemy(200, 500));             BadEnemies.Add(new Enemy(610, 200));             BadEnemies.Add(new Enemy(200, 510));             BadEnemies.Add(new Enemy(500, 350));             BadEnemies.Add(new Enemy(100, 420));         }         \/\/ \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u043d\u043e\u0432\u043e\u0439 \u0438\u0433\u0440\u044b (\u043f\u043e\u0434\u0440\u0430\u0437\u0443\u043c\u0435\u0432\u0430\u0435\u0442 \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u043a\u0443 \u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u044d\u043a\u0440\u0430\u043d\u0430)         public void NewGame()         {             IsWin = false;             IsLose = false;             IsGame = false;      \t\t\tClassScoreManager.ReadScores();         }         \/\/ \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u043f\u043e\u0431\u0435\u0434\u044b         public void WinGame()         {             IsWin = true;             IsLose = false;             IsGame = false; \t\t\tClassScoreManager.Score.Value = Score; \t\t\tClassScoreManager.WriteScores();         }         \/\/ \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u043f\u043e\u0440\u0430\u0436\u0435\u043d\u0438\u044f         public void LoseGame()         {             IsWin = false;             IsLose = true;             IsGame = false;         }     } } <\/code><\/pre>\n<\/div>\n<\/div>\n<p>  \u0412 Classes.GameProcess.cs \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043a\u043b\u0430\u0441\u0441 ClassScoreManager, \u043f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u043d\u044b\u0439 \u0434\u043b\u044f \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0441\u0447\u0435\u0442\u043e\u043c (\u0441\u0447\u0438\u0442\u044b\u0432\u0430\u043d\u0438\u0435 \u0438\u0437 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u043e\u0433\u043e \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0430 Android) \u0438 \u0437\u0430\u043f\u0438\u0441\u044c. \u041e \u043d\u0435\u043c \u0440\u0430\u0437\u0433\u043e\u0432\u043e\u0440 \u043f\u043e\u0439\u0434\u0435\u0442 \u0432 \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0435\u043c.<\/p>\n<h4>\u0420\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u00ab\u0432\u043d\u0435\u0448\u043d\u0438\u0445\u00bb \u043a\u043b\u0430\u0441\u0441\u043e\u0432<\/h4>\n<p>  \u0420\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c Game.cs \u2014 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u043a\u043b\u0430\u0441\u0441 \u00ab\u0438\u0433\u0440\u0430\u00bb (\u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0432\u0441\u0435 \u0432\u0438\u0437\u0443\u0430\u043b\u044c\u043d\u044b\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u044b \u0438 \u043c\u0435\u0442\u043e\u0434\u044b \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0438\u0433\u0440\u043e\u0432\u043e\u0433\u043e \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430). \u0422\u0435\u043c, \u043a\u0442\u043e \u0437\u043d\u0430\u043a\u043e\u043c \u0441 XNA Game Studio \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u043e\u0439 \u043b\u043e\u0433\u0438\u043a\u043e\u0439, \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u043e\u0449\u0435, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0432 MonoGame \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u0438\u0437\u043c\u0435\u043d\u0438\u043b\u043e\u0441\u044c. \u0415\u0441\u043b\u0438 \u0433\u043e\u0432\u043e\u0440\u0438\u0442\u044c \u043a\u0440\u0430\u0442\u043a\u043e: <\/p>\n<ul>\n<li>public PacManGame() \u2014 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u043a\u043b\u0430\u0441\u0441\u0430 (\u0442\u043e \u0435\u0441\u0442\u044c \u0432\u0441\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f, \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u044b\u0435 \u043f\u0440\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 \u043a\u043b\u0430\u0441\u0441\u0430 \u00ab\u0438\u0433\u0440\u0430\u00bb)<\/li>\n<li>protected override void LoadContent() \u2014 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u0430 (\u0432\u0441\u0435\u0445 \u0442\u0435\u043a\u0441\u0442\u0443\u0440, \u0442\u0430\u043a\u0436\u0435 \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u0441\u044f \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0442\u044c \u0448\u0440\u0438\u0444\u0442)<\/li>\n<li>protected override void Update(GameTime gameTime) \u2014 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u0438\u0433\u0440\u043e\u0432\u043e\u0433\u043e \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430, \u0442\u043e \u0435\u0441\u0442\u044c \u0432\u0441\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f, \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u044b\u0435 \u0432 \u0435\u0434\u0438\u043d\u0438\u0446\u0443 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 (\u043a\u0440\u043e\u043c\u0435 \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u043a\u0438)<\/li>\n<li>protected override void Draw(GameTime gameTime) \u2014 \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u043a\u0430 \u0432\u0438\u0437\u0443\u0430\u043b\u044c\u043d\u044b\u0445 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 \u0432 \u0435\u0434\u0438\u043d\u0438\u0446\u0443 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 (\u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u0435\u0442 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f, \u0442.\u0435. Update \u043c\u043e\u0436\u043d\u043e \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c, \u043d\u043e \u0441 \u044d\u0442\u0438\u043c \u043e\u0441\u0442\u043e\u0440\u043e\u0436\u043d\u0435\u0435: \u043a \u043f\u0440\u0438\u043c\u0435\u0440\u0443, \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0438\u0434\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0447\u0435\u0440\u0435\u0437 Update)<\/li>\n<\/ul>\n<p>  \u041e\u0434\u043d\u0430 \u0438\u0437 \u0433\u043b\u0430\u0432\u043d\u044b\u0445 \u0442\u0440\u0443\u0434\u043d\u043e\u0441\u0442\u0435\u0439, \u0441 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0441\u0442\u0430\u043b\u043a\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0438\u0433\u0440\u044b \u043d\u0430 MonoGame, \u044d\u0442\u043e \u0430\u0434\u0430\u043f\u0442\u0430\u0446\u0438\u044f \u043f\u043e\u0434 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0435 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f \u044d\u043a\u0440\u0430\u043d\u0430. \u0413\u0440\u0430\u0444\u0438\u043a\u0430 \u0431\u044b\u043b\u0430 \u0437\u0430\u0433\u043e\u0442\u043e\u0432\u043b\u0435\u043d\u0430 \u0432 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0438 960&#215;540, \u0441\u043e\u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u0435 \u0441\u0442\u043e\u0440\u043e\u043d 16:9, \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u0443 \u0438\u0433\u0440\u043e\u043a\u0430 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c, \u043a \u043f\u0440\u0438\u043c\u0435\u0440\u0443, 16:10, \u0438\u043b\u0438 \u043a\u0430\u043a\u043e\u0435-\u043d\u0438\u0431\u0443\u0434\u044c \u0434\u0440\u0443\u0433\u043e\u0435, \u043d\u0435\u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0435 \u0441\u043e\u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u0435 \u0441\u0442\u043e\u0440\u043e\u043d \u044d\u043a\u0440\u0430\u043d\u0430. \u0412\u0441\u0435 \u044d\u0442\u043e \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u0443\u0447\u0435\u0441\u0442\u044c.<\/p>\n<p>  \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u044f \u0432\u0432\u0435\u043b \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 const int NominalWidth = 960, const int NominalHeight = 540, float Dx, \u0430 \u0442\u0430\u043a\u0436\u0435 int CurrentWidth \u0438 int CurrentHeight. \u0427\u0442\u043e \u044d\u0442\u043e \u0437\u043d\u0430\u0447\u0438\u0442? \u0427\u0442\u043e \u0432 CurrentWidth\/CurrentHeight \u043d\u0443\u0436\u043d\u043e \u0441\u0447\u0438\u0442\u0430\u0442\u044c \u0442\u0435\u043a\u0443\u0449\u0443\u044e \u0432\u044b\u0441\u043e\u0442\u0443 \u0438 \u0448\u0438\u0440\u0438\u043d\u0443 \u044d\u043a\u0440\u0430\u043d\u0430 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430, \u0438 \u043f\u043e\u0441\u0447\u0438\u0442\u0430\u0442\u044c \u0441\u043e\u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u0435 \u0441 ScreenWidth \u0438 ScreenHeight, \u043f\u043e\u043b\u0443\u0447\u0438\u0432 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0432 Dx. \u0410 \u0434\u0430\u043b\u044c\u0448\u0435 \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u044b\u0432\u0430\u0442\u044c \u0432\u0441\u044e \u0433\u0440\u0430\u0444\u0438\u043a\u0443 \u0441 \u0443\u0432\u0435\u043b\u0438\u0447\u0435\u043d\u0438\u0435\u043c \u0432 Dx \u0440\u0430\u0437. <\/p>\n<p>  \u041d\u0435 \u043f\u043e \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u0430\u043c Android? \u041e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e \u0434\u0430. \u0422\u0435\u043c \u043d\u0435 \u043c\u0435\u043d\u0435\u0435, \u0431\u0435\u0437 \u043f\u0440\u0438\u0432\u043b\u0435\u0447\u0435\u043d\u0438\u044f \u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0438\u0445 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043e\u043a, MonoGame \u043d\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0431\u043e\u043b\u0435\u0435 \u0433\u0430\u0440\u043c\u043e\u043d\u0438\u0447\u043d\u044b\u043c \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u043c \u0430\u0434\u0430\u043f\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043a \u0440\u0430\u0437\u043d\u044b\u043c \u044d\u043a\u0440\u0430\u043d\u0430\u043c.<\/p>\n<p>  \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u043a\u043e\u0434 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043a\u043b\u0430\u0441\u0441\u0430 \u00ab\u0438\u0433\u0440\u0430\u00bb:  <\/p>\n<pre><code class=\"cs\">        public PacManGame()         {             \/\/ \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0433\u0440\u0430\u0444\u0438\u043a\u0438             Graphics = new GraphicsDeviceManager(this);             var metric = new Android.Util.DisplayMetrics();             Activity.WindowManager.DefaultDisplay.GetMetrics(metric);             \/\/ \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u044d\u043a\u0440\u0430\u043d\u0430             Graphics.IsFullScreen = true;             Graphics.PreferredBackBufferWidth = metric.WidthPixels;              Graphics.PreferredBackBufferHeight = metric.HeightPixels;              CurrentWidth = Graphics.PreferredBackBufferWidth;             CurrentHeigth = Graphics.PreferredBackBufferHeight;             Graphics.SupportedOrientations = DisplayOrientation.LandscapeLeft | DisplayOrientation.LandscapeRight;               \/\/ \u043e\u0431\u043d\u043e\u0432\u0438\u0442\u044c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u044d\u043a\u0440\u0430\u043d\u0430             UpdateScreenAttributies();             \/\/ \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0438\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f             ...         }<\/code><\/pre>\n<p>  \u041e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u044d\u043a\u0440\u0430\u043d\u0430 \u0438 \u043a\u043e\u0440\u0440\u0435\u043a\u0446\u0438\u044f \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442 X \u0438 Y (\u0442\u0430\u043a\u0436\u0435 \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0442\u043e\u0442 \u0444\u0430\u043a\u0442, \u0447\u0442\u043e \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u044d\u043a\u0440\u0430\u043d\u0430 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043d\u0435 16:9, \u0430 \u043b\u044e\u0431\u043e\u0435 \u0434\u0440\u0443\u0433\u043e\u0435, \u0432 \u0442\u0430\u043a\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u044b \u0446\u0435\u043d\u0442\u0440\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u043f\u043e \u0441\u0435\u0440\u0435\u0434\u0438\u043d\u0435):  <\/p>\n<pre><code class=\"cs\">\t\t\/\/ \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u044d\u043a\u0440\u0430\u043d\u0430         public void UpdateScreenAttributies()         {             Dx = (float) CurrentWidth\/NominalWidth;             Dy = (float) CurrentHeigth\/NominalHeight;              NominalHeightCounted = CurrentHeigth\/Dx;             NominalWidthCounted = CurrentWidth\/Dx;              int check = Math.Abs(CurrentHeigth - CurrentWidth\/16*9);             if (check &gt; 10)                 deltaY = (float) check\/2; \/\/ \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u044e\u0449\u0435\u0435 \u0440\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0434\u043e 16:9 \u043f\u043e \u043f \u043e\u0441\u0438 Y (\u0432 \u0430\u0431\u0441\u043e\u043b\u044e\u0442\u043d\u044b\u0445 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u0430\u0445)             deltaY_1 = -(CurrentWidth\/16*10 - CurrentWidth\/16*9)\/2f;              YTopBorder = -deltaY\/Dx; \/\/ \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u0430 \u0442\u043e\u0447\u043a\u0438 \u0432 \u043b\u0435\u0432\u043e\u043c \u0432\u0435\u0440\u0445\u043d\u0435\u043c \u0443\u0433\u043b\u0443 (\u0432 \u0432\u0438\u0440\u0443\u0430\u043b\u044c\u043d\u044b\u0445 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u0430\u0445)             YBottomBorder = NominalHeight + (180); \/\/ \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u0430 \u0442\u043e\u0447\u043a\u0438 \u0432 \u043d\u0438\u0436\u043d\u0435\u043c \u0432\u0435\u0440\u0445\u043d\u0435\u043c \u0443\u0433\u043b\u0443 (\u0432 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0445 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u0430\u0445)         }  \t\t\/\/ \u043a\u043e\u0440\u0440\u0435\u043a\u0446\u0438\u044f \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u044b X         public static float AbsoluteX(float x)         {             return x*Dx;         }  \t\t\/\/ \u043a\u043e\u0440\u0440\u0435\u043a\u0446\u0438\u044f \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u044b Y         public static float AbsoluteY(float y)         {             return y*Dx + deltaY;         }<\/code><\/pre>\n<p>  \u041a\u043e\u0434 \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u043a\u0438:  <\/p>\n<pre><code class=\"cs\">         \/\/ \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u043a\u0430 \u0432\u0438\u0437\u0443\u0430\u043b\u044c\u043d\u044b\u0445 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 (\u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u0432 \u043a\u0430\u0436\u0434\u044b\u0439 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u0432\u0440\u0435\u043c\u0435\u043d\u0438)         protected override void Draw(GameTime gameTime) \t\t{ \t\t\t\/* \u0417\u0430\u0434\u0430\u0447\u0430 \u0434\u0430\u043d\u043d\u043e\u0433\u043e \u043c\u0435\u0442\u043e\u0434\u0430 - \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u044b\u0432\u0430\u0442\u044c \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0438 \u043e\u0431\u044a\u0435\u043a\u0442\u044b.                \u0422\u043e \u0435\u0441\u0442\u044c: \u043c\u0435\u043d\u044e, \u043d\u0430\u0434\u043f\u0438\u0441\u0438, \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u044b \u0438\u0433\u0440\u044b, \u043e\u0431\u044a\u0435\u043a\u0442\u044b \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 \u0438 \u0442.\u043f.   *\/ \t\t\tGraphicsDevice.Clear (Color.AliceBlue); \/\/ \u0437\u0430\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0444\u043e\u043d \t\t\t\/\/ \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043f\u043e\u0440\u044f\u0434\u043e\u043a \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u043a\u0438 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 \t\t\tSpriteBatch.Begin (SpriteSortMode.Deferred, BlendState.NonPremultiplied); \t\t\t\/\/ \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u043a\u0430 \u0432\u0441\u0435\u0433\u043e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0433\u043e \t\t\t... \t\t\t\/\/ \u043a \u043f\u0440\u0438\u043c\u0435\u0440\u0443 - \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u0430 \u0444\u043e\u043d\u0430 \t\t\tSpriteBatch.Draw (TextureBackground, new Vector2 (AbsoluteX (0), AbsoluteY (0)), \t\t\t\t\t\t\tnew Rectangle (0, 0, TextureBackground.Width, TextureBackground.Height), Color.White, \t\t\t\t\t\t\t0, new Vector2 (0, 0), 1 * Dx, SpriteEffects.None, 0); \/\/ \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u043a\u0430 \u0444\u043e\u043d\u0430 \t\t\t\/\/ \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c AbsoluteX, AbsoluteY \u0438 1*Dx (\u0442\u043e \u0435\u0441\u0442\u044c \u043f\u0440\u043e\u0441\u0442\u043e Dx; \t \t\t\t\/\/ 2 * Dx - \u0437\u043d\u0430\u0447\u0438\u0442 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u0443\u0432\u0435\u043b\u0438\u0447\u0435\u043d\u0438\u0435 \u0432 2 \u0440\u0430\u0437\u0430) \u0432 \u043f\u043e\u043b\u0435 Scale\t\t \t\t\t... \t\t\t\/\/ \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u043a\u0430 \u0440\u0430\u043c\u043e\u043a \t\t\tDrawRectangle (new Rectangle (-100, -100, CurrentWidth + 100 + 100, 100 + (int)deltaY),Color.Black); \t\t\tDrawRectangle (new Rectangle (-100, CurrentHeigth - (int)deltaY, CurrentWidth + 100 + 100,  \t\t\t\t\t\t(int)deltaY + (int)deltaY_1 + 100), Color.Black);\t \t\t\t} \t\t\tSpriteBatch.End (); \/\/ \u043f\u0440\u0435\u0440\u0432\u0430\u0442\u044c \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u043a\u0443 \u043d\u0430 \u0434\u0430\u043d\u043d\u043e\u043c \u044d\u0442\u0430\u043f\u0435 \t\t\tbase.Draw (gameTime); \/\/ \u043e\u0431\u043d\u043e\u0432\u0438\u0442\u044c \u0441\u0447\u0435\u0442\u0447\u0438\u043a \u0438\u0433\u0440\u043e\u0432\u043e\u0433\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \t\t} \t\t         \/\/ \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u043a\u0430 \u043f\u0440\u044f\u043c\u043e\u0443\u0433\u043e\u043b\u044c\u043d\u0438\u043a\u0430\t(\u043f\u043e \u0437\u0430\u0434\u0430\u043d\u044b\u043c \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u0430\u043c, \u0441 \u0437\u0430\u0434\u0430\u043d\u043d\u044b\u043c \u0446\u0432\u0435\u0442\u043e\u043c)         public void DrawRectangle(Rectangle coords, Color color)         {             var rect = new Texture2D(GraphicsDevice, 1, 1);             rect.SetData(new[] {color});             SpriteBatch.Draw(rect, coords, color);         }<\/code><\/pre>\n<p>  \u0421\u0445\u0435\u043c\u0430 \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u043a\u0438:<br \/>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/getpro\/habr\/post_images\/0a7\/c85\/566\/0a7c85566f5748f166e9f37665723bbd.png\"\/><br \/>  \u0410\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u043d\u044b\u0445 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u043e\u0432 \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u0438\u0434\u0443\u043c\u0430\u0442\u044c \u043c\u043d\u043e\u0433\u043e. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0437\u0430\u0440\u0430\u043d\u0435\u0435 \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u0438\u0442\u044c \u0432\u0441\u044e \u0433\u0440\u0430\u0444\u0438\u043a\u0443 \u0432 16:10 \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0447\u0435\u0440\u043d\u044b\u0435 \u0440\u0430\u043c\u043a\u0438 \u043f\u043e \u0432\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u0438 \u0435\u0441\u043b\u0438 \u044d\u043a\u0440\u0430\u043d 16:10, \u043b\u0438\u0431\u043e \u043f\u0440\u0435\u0434\u0443\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043e\u0431\u0440\u0435\u0437\u043a\u0443 \u0438 \u0438\u0437\u0431\u0435\u0436\u0430\u0442\u044c \u0440\u0430\u043c\u043e\u043a. \u0412 \u0434\u0440\u0443\u0433\u043e\u043c \u0441\u0432\u043e\u0435\u043c \u043f\u0440\u043e\u0435\u043a\u0442\u0435, \u0433\u0434\u0435 \u0432\u0441\u0435 \u043d\u0443\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0441\u043e\u0432\u0441\u0435\u043c \u0431\u0435\u0437 \u043d\u0435\u0434\u043e\u0447\u0435\u0442\u043e\u0432 (\u0442\u0430\u043a, \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u044f\u043c\u043e \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0441\u043e\u0432\u0441\u0435\u043c), \u044f \u043a\u0430\u043a \u0440\u0430\u0437 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u0431\u0435\u0437 \u0440\u0430\u043c\u043e\u043a \u2014 \u043e\u043d, \u043a \u0441\u043e\u0436\u0430\u043b\u0435\u043d\u0438\u044e, \u0431\u043e\u043b\u0435\u0435 \u0442\u0440\u0443\u0434\u043e\u0435\u043c\u043a\u0438\u0439.<\/p>\n<p>  \u0420\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043f\u0440\u043e\u0441\u0442\u0435\u0439\u0448\u0443\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u043a\u0438 \u0444\u043e\u043d\u0430:  <\/p>\n<ul>\n<li>SpriteBatch.Draw (TextureBackground, new Vector2 (AbsoluteX (0), AbsoluteY (0)), new Rectangle (0, 0, TextureBackground.Width, TextureBackground.Height), Color.White, 0, new Vector2 (0, 0), 1 * Dx, SpriteEffects.None, 0);<\/li>\n<li>TextureBackgroud \u2014 \u0441\u0430\u043c\u0430 \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u0430 (Texture2D)<\/li>\n<li>new Vector2(AbsoluteX (0), AbsoluteY (0)) \u2014 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442 (\u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u0440\u043e\u0433\u043e\u043d\u044f\u0442\u044c \u0447\u0435\u0440\u0435\u0437 \u043d\u0430\u0448\u0438 \u043c\u0435\u0442\u043e\u0434\u044b AbsoluteX \u0438 AbsoluteY!)<\/li>\n<li>new Rectangle (0, 0, TextureBackground.Width, TextureBackground.Height) \u2014 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u043e\u0431\u0440\u0435\u0437\u043a\u0438 \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u044b (\u0431\u0435\u0437 \u043e\u0431\u0440\u0435\u0437\u043a\u0438: \u043b\u0435\u0432\u044b\u0439 \u0432\u0435\u0440\u0445\u043d\u0438\u0439 \u0443\u0433\u043e\u043b \u0438\u043c\u0435\u0435\u0442 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u044b [0;0], \u0430 \u043f\u0440\u0430\u0432\u044b\u0439 \u043d\u0438\u0436\u043d\u0438\u0439 \u0443\u0433\u043e\u043b \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u044b [\u0448\u0438\u0440\u0438\u043d\u0430 \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u044b; \u0432\u044b\u0441\u043e\u0442\u0430 \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u044b])<\/li>\n<li>Color.White \u2014 \u043d\u0430\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0446\u0432\u0435\u0442\u043e\u0432\u043e\u0433\u043e \u0441\u043b\u043e\u044f \u043d\u0430 \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u0443<\/li>\n<li>new Vector2 (0, 0) \u2014 \u0442\u043e\u0447\u043a\u0430, \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u043a\u0430 \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u044b, \u0432 \u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u044d\u0442\u043e \u0432\u0435\u0440\u0445\u043d\u0438\u0439 \u043b\u0435\u0432\u044b\u0439 \u0443\u0433\u043e\u043b [0;0] (\u0435\u0441\u043b\u0438 \u0431\u044b \u043d\u0430\u043c \u0431\u044b\u043b \u043d\u0443\u0436\u0435\u043d \u0446\u0435\u043d\u0442\u0440, \u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u044c [TextureBackground.Width\/2; TextureBackground.Height\/2])<\/li>\n<li>1 * Dx \u2014 \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u044b (\u0442.\u0435. \u043b\u044e\u0431\u0430\u044f \u043d\u0430\u0448\u0430 \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u0430 \u0434\u043e\u043b\u0436\u043d\u0430 \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u0432 Dx \u0440\u0430\u0437 \u0432\u043d\u0435 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0442\u043e\u0433\u043e, \u043d\u0443\u0436\u043d\u043e \u043b\u0438 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435, \u043a \u043f\u0440\u0438\u043c\u0435\u0440\u0443 2 * Dx, 3 * Dx, 0.5f * Dx &#8230;)<\/li>\n<\/ul>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u043a\u043d\u043e\u043f\u043a\u0430\u043c\u0438. \u0414\u043b\u044f \u043d\u0438\u0445 \u044f \u0441\u043e\u0437\u0434\u0430\u043b \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0439 \u043a\u043b\u0430\u0441\u0441 Game.Buttons.cs, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441 \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u043c\u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f\u043c\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e \u0432\u043e \u0432\u0441\u0435\u0445 MonoGame-\u043f\u0440\u043e\u0435\u043a\u0442\u0430\u0445.  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">Game.Buttons.cs<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"cs\">using Microsoft.Xna.Framework; using Microsoft.Xna.Framework.Graphics; using Microsoft.Xna.Framework.Input.Touch;  namespace pacmangame {     partial class PacManGame : Game     {         public class Button         {             public int YUp;             public int YDown;             public int XRight;             public int XLeft;             public Texture2D TextureButton;             public Texture2D TextureButtonLight;              private TouchCollection Touches;             private bool IsPressed;             public bool IsEnabled;              public Button()             { \t\t\t\tXRight = -100; \t\t\t\tXLeft = -100; \t\t\t\tYUp = -100; \t\t\t\tYDown = -100;                 IsPressed = false;                 IsEnabled = false;             }              public void Update(int xLeft, int yUp)             {                 XRight = XLeft+TextureButton.Width;                 XLeft = xLeft;                 YUp = yUp;                 YDown = yUp + TextureButton.Height;             }              public void Process(SpriteBatch spriteBatch)             {                 Touches = TouchPanel.GetState();                 if (Touches.Count == 1)                 {                     if (!IsPressed)                     {                         spriteBatch.Draw(TextureButton, new Vector2(AbsoluteX(XLeft), AbsoluteY(YUp)),                                  new Rectangle(0, 0, TextureButton.Width, TextureButton.Height), Color.White, 0,                                  new Vector2(0, 0),                                  Dx, SpriteEffects.None, 0);                     }                     if ((Touches[0].Position.X &gt; AbsoluteX(XLeft)) && (Touches[0].Position.X &lt; AbsoluteX(XRight+10)) &&                         (Touches[0].Position.Y &gt; AbsoluteX(YUp)) && (Touches[0].Position.Y &lt; AbsoluteY(YDown+10)))                     {                         spriteBatch.Draw(TextureButtonLight, new Vector2(AbsoluteX(XLeft), AbsoluteY(YUp)),                                          new Rectangle(0, 0, TextureButtonLight.Width, TextureButtonLight.Height), Color.White, 0,                                          new Vector2(0, 0),                                          Dx, SpriteEffects.None, 0);                         IsPressed = true;                     }                     else                     {                         if (IsPressed) IsPressed = false;                     }                 }                 else                 {                     spriteBatch.Draw(TextureButton, new Vector2(AbsoluteX(XLeft), AbsoluteY(YUp)),                                  new Rectangle(0, 0, TextureButton.Width, TextureButton.Height), Color.White, 0,                                  new Vector2(0, 0),                                  Dx, SpriteEffects.None, 0);                 }                 if ((IsPressed) && (Touches.Count == 0))                 {                     IsEnabled = true;                 }             }             public void Reset()             {                 IsPressed = false;                 IsEnabled = false;             }         }      } } <\/code><\/pre>\n<\/div>\n<\/div>\n<p>  \u0421\u0443\u0442\u044c \u0442\u0430\u043a\u043e\u0432\u0430: \u043a\u043d\u043e\u043f\u043a\u0430 \u043c\u043e\u0436\u0435\u0442 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0432 \u0434\u0432\u0443\u0445 \u0440\u0435\u0436\u0438\u043c\u0430\u0445 \u2014 \u043d\u0430\u0436\u0430\u0442\u043e\u043c \u0438 \u043d\u0435 \u043d\u0430\u0436\u0430\u0442\u043e\u043c, \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0441\u0432\u043e\u044f \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u0430. \u041f\u0443\u0441\u0442\u044c \u043d\u0435 \u043d\u0430\u0436\u0430\u0442\u044b\u0439 \u0440\u0435\u0436\u0438\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u0443 TextureButton, \u0430 \u043d\u0430\u0436\u0430\u0442\u044b\u0439 \u2014 TextureButtonLight (\u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0437\u0432\u0430\u0442\u044c TextureButtonPressed, \u043f\u0440\u043e\u0441\u0442\u043e \u0432 \u043f\u0440\u043e\u0448\u043b\u043e\u043c \u043f\u0440\u043e\u0435\u043a\u0442\u0435 \u0443 \u043c\u0435\u043d\u044f \u043a\u043d\u043e\u043f\u043a\u0438 \u00ab\u043f\u043e\u0434\u0441\u0432\u0435\u0447\u0438\u0432\u0430\u043b\u0438\u0441\u044c\u00bb \u043f\u0440\u0438 \u043d\u0430\u0436\u0430\u0442\u0438\u0438, \u043e\u0442\u0441\u044e\u0434\u0430 \u043e\u0441\u0442\u0430\u043b\u043e\u0441\u044c Light). \u0421\u043f\u0435\u0440\u0432\u0430 \u043d\u0443\u0436\u043d\u043e \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u043a\u0443 \u043a\u043d\u043e\u043f\u043a\u0438 \u0447\u0435\u0440\u0435\u0437 Process \u0438 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u0435\u0435 \u043b\u043e\u0433\u0438\u043a\u0438 \u0447\u0435\u0440\u0435\u0437 Update, \u0437\u0430\u0442\u0435\u043c \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c, \u0431\u044b\u043b\u0430 \u043b\u0438 \u043e\u043d\u0430 \u043d\u0430\u0436\u0430\u0442\u0430.<\/p>\n<p>  \u041d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u0446\u0435\u043f\u043e\u0447\u043a\u0430 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0441\u043b\u043e\u0436\u043d\u0435\u0435: \u043a\u043d\u043e\u043f\u043a\u0430 \u00ab\u0437\u0430\u0436\u0430\u0442\u0430\u00bb, \u0437\u043d\u0430\u0447\u0438\u0442 IsPressed \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f true \u0438 \u0432\u043c\u0435\u0441\u0442\u043e TextureButton \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u044b\u0432\u0430\u0435\u0442\u0441\u044f TextureButtonLight, \u0437\u0430\u0442\u0435\u043c \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0442\u0430\u043a, \u0447\u0442\u043e \u0438\u0433\u0440\u043e\u043a \u043f\u0435\u0440\u0435\u0434\u0432\u0438\u043d\u0435\u0442 \u0441 \u043d\u0435\u0435 \u043f\u0430\u043b\u0435\u0446 \u0438 \u043e\u0442\u043f\u0443\u0441\u0442\u0438\u0442 (\u043d\u0435 \u0437\u0430\u0445\u043e\u0442\u0435\u043b \u043d\u0430\u0436\u0438\u043c\u0430\u0442\u044c, \u043b\u0438\u0431\u043e \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e \u0437\u0430\u0434\u0435\u043b \u0438 \u0441\u0440\u0430\u0437\u0443 \u0441\u0434\u0432\u0438\u043d\u0443\u043b \u043f\u0430\u043b\u0435\u0446), \u0442\u0435\u043c \u0441\u0430\u043c\u044b\u043c IsPressed \u0441\u043d\u043e\u0432\u0430 \u0441\u0442\u0430\u043d\u0435\u0442 false, \u0430 \u0432\u043e\u0442 \u0435\u0441\u043b\u0438 \u0438\u0433\u0440\u043e\u043a \u043e\u0442\u043f\u0443\u0441\u0442\u0438\u0442 \u043a\u043d\u043e\u043f\u043a\u0443 \u0438 \u0432 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u043f\u0430\u043b\u0435\u0446 \u0431\u0443\u0434\u0435\u0442 \u043d\u0430 \u043d\u0435\u0439, \u0442\u043e IsEnabled \u0441\u0442\u0430\u043d\u0435\u0442 true \u0438 \u043c\u043e\u0436\u043d\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u0432\u0441\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u043f\u043e \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u043c\u0443 \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044e \u043a\u043d\u043e\u043f\u043a\u0438).<\/p>\n<p>  \u041d\u0430 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u043a\u043d\u043e\u043f\u043a\u0438 \u043f\u0430\u0443\u0437\u044b:  <\/p>\n<pre><code class=\"cs\">                ButtonPause.Process (SpriteBatch); \/\/ \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u043a\u0430 \u043a\u043d\u043e\u043f\u043a\u0438                 ButtonPause.Update (830, 484); \/\/ \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u0432\u0441\u0435\u0445 \u043f\u0440\u043e\u0432\u0435\u0440\u043e\u043a, \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0445 \u0441 \u043a\u043d\u043e\u043f\u043a\u043e\u0439 (\u043d\u0430\u0436\u0430\u0442\u0430\/\u043d\u0435 \u043d\u0430\u0436\u0430\u0442\u0430 \u0438 \u0442.\u043f.)                 if (ButtonPause.IsEnabled) \/\/ \u043a\u043d\u043e\u043f\u043a\u0430 \u0431\u044b\u043b\u0430 \u043d\u0430\u0436\u0430\u0442\u0430 \u0438 \u043e\u0442\u043f\u0443\u0449\u0435\u043d\u0430                  {                        ButtonPause.Reset ();   \/\/ \u043e\u0431\u043d\u0443\u043b\u0438\u0442\u044c \u0432\u0441\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043a\u043d\u043e\u043f\u043a\u0438                       GameProcess.IsPause = true; \/\/ \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 - \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u043f\u0430\u0443\u0437\u0443                       \/\/ \u0434\u0440\u0443\u0433\u0438\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f, \u043a \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442 \u043d\u0430\u0436\u0430\u0442\u0438\u0435 \u043a\u043d\u043e\u043f\u043a\u0438 ....                 } <\/code><\/pre>\n<p>  \u0418\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u0435\u0435 \u043f\u0440\u0438\u043c\u0435\u0440 \u0441 \u043a\u043d\u043e\u043f\u043a\u043e\u0439 \u043f\u043e\u0441\u0435\u0449\u0435\u043d\u0438\u044f \u0441\u0430\u0439\u0442\u0430:<\/p>\n<pre><code class=\"cs\">                ButtonVisitSite.Process(SpriteBatch); \/\/ \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u043a\u0430 \u043a\u043d\u043e\u043f\u043a\u0438                 ButtonVisitSite.Update(741, 475); \/\/ \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u0432\u0441\u0435\u0445 \u043f\u0440\u043e\u0432\u0435\u0440\u043e\u043a, \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0445 \u0441 \u043a\u043d\u043e\u043f\u043a\u043e\u0439 (\u043d\u0430\u0436\u0430\u0442\u0430\/\u043d\u0435 \u043d\u0430\u0436\u0430\u0442\u0430 \u0438 \u0442.\u043f.)                 if (ButtonVisitSite.IsEnabled)  \/\/ \u043a\u043d\u043e\u043f\u043a\u0430 \u0431\u044b\u043b\u0430 \u043d\u0430\u0436\u0430\u0442\u0430 \u0438 \u043e\u0442\u043f\u0443\u0449\u0435\u043d\u0430                  {                       ButtonVisitSite.Reset(); \/\/ \u043e\u0431\u043d\u0443\u043b\u0438\u0442\u044c \u0432\u0441\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043a\u043d\u043e\u043f\u043a\u0438                       \/\/ \u043e\u0442\u043a\u0440\u044b\u0442\u044c \u0431\u0440\u0430\u0443\u0437\u0435\u0440 \u0438 \u043d\u0443\u0436\u043d\u0443\u044e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443                       var uri = Android.Net.Uri.Parse(&quot;http:\/\/\u0430\u0434\u0440\u0435\u0441&quot;);                       var intent = new Intent(Intent.ActionView, uri);                       Activity.StartActivity(intent);                  }<\/code><\/pre>\n<p>  \u0414\u043b\u044f \u0432\u0441\u0435\u0445 \u043a\u043d\u043e\u043f\u043e\u043a \u043d\u0443\u0436\u043d\u043e \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u0438\u0442\u044c \u0438 \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u044b. \u0412 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u0431\u044b\u043b\u043e \u0432\u044b\u044f\u0441\u043d\u0435\u043d\u043e, \u0447\u0442\u043e \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u044f\u0442\u0441\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u043a\u043d\u043e\u043f\u043a\u0438: \u00ab\u041d\u0430\u0447\u0430\u0442\u044c \u0438\u0433\u0440\u0443\u00bb, \u00ab\u041d\u043e\u0432\u0430\u044f \u0438\u0433\u0440\u0430\u00bb, \u00ab\u041f\u0430\u0443\u0437\u0430\u00bb, \u00ab\u041f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u0442\u044c\u00bb, \u00ab\u0421\u044b\u0433\u0440\u0430\u0442\u044c \u0437\u0430\u043d\u043e\u0432\u043e\u00bb, \u00ab\u0412\u044b\u0445\u043e\u0434\u00bb (+\u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u0441\u0430\u0439\u0442, \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u044e\u0449\u0430\u044f\u0441\u044f \u0432 \u043c\u0435\u043d\u044e).\u0418, \u0447\u0442\u043e \u043d\u0435 \u043c\u0430\u043b\u043e\u0432\u0430\u0436\u043d\u043e, \u043a\u043d\u043e\u043f\u043a\u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0441\u043e \u0441\u0442\u0440\u0435\u043b\u043a\u0430\u043c\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u0443\u0434\u0443\u0442 \u0440\u0430\u0441\u043f\u043e\u043b\u0430\u0433\u0430\u0442\u044c\u0441\u044f \u043f\u043e \u044d\u043a\u0440\u0430\u043d\u0443.<\/p>\n<p>  \u041f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f \u0432\u043e\u0442 \u0442\u0430\u043a\u0430\u044f \u043a\u0430\u0440\u0442\u0438\u043d\u0430:<br \/>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/getpro\/habr\/post_images\/e6d\/0a6\/3f9\/e6d0a63f9ed614d246e1032af5bc2171.png\"\/><\/p>\n<p>  \u0412 \u043a\u043e\u043d\u0446\u0435 \u0443\u0440\u043e\u043a\u0430 \u0435\u0441\u0442\u044c \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 GitHub, \u0442\u0430\u043c \u0441\u043e\u0431\u0440\u0430\u043d \u0432\u0435\u0441\u044c \u043f\u0440\u043e\u0435\u043a\u0442, \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u0434\u0430\u043d\u043d\u044b\u0435 \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u044b. \u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u043b\u0438\u0441\u044c \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u044b \u043a\u043d\u043e\u043f\u043e\u043a \u0432 \u043d\u0430\u0436\u0430\u0442\u043e\u043c \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0438 (%name%Pressed.png), \u0437\u0430\u0442\u0435\u043c \u043f\u0443\u0442\u0435\u043c \u0443\u043c\u0435\u043d\u044c\u0448\u0435\u043d\u0438\u044f \u0432 0.8-0.9 \u0440\u0430\u0437 \u0438 \u043f\u043e\u0432\u044b\u0448\u0435\u043d\u0438\u0435\u043c \u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u043e\u0441\u0442\u0438 \u043f\u043e\u043b\u0443\u0447\u0430\u043b\u0430\u0441\u044c \u043e\u0431\u044b\u0447\u043d\u0430\u044f \u0442\u0435\u043a\u0441\u0442\u0443\u0440. \u0422\u043e \u0435\u0441\u0442\u044c \u0438\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u0438\u0433\u0440\u043e\u043a \u0432\u0438\u0434\u0438\u0442 \u0447\u0443\u0442\u044c \u0443\u043c\u0435\u043d\u044c\u0448\u0435\u043d\u043d\u044b\u0435 \u043f\u043e\u043b\u0443\u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u044b\u0435 \u043d\u0430\u0434\u043f\u0438\u0441\u0438, \u043f\u0440\u0438 \u043d\u0430\u0436\u0430\u0442\u0438\u0438 \u043e\u043d\u0438 \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u0438 \u0438\u043c\u0435\u044e\u0442 \u0447\u0435\u0442\u043a\u0438\u0435 \u043e\u0447\u0435\u0440\u0442\u0430\u043d\u0438\u044f. \u041f\u043e\u043c\u043d\u0438\u043c: \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u044b \u0441 \u043f\u0440\u0435\u0444\u0438\u043a\u0441\u043e\u043c \u00abru_\u00bb \u043a\u043b\u0430\u0434\u0435\u043c \u0432 \u043f\u0430\u043f\u043a\u0443 \u00abru\u00bb, \u0430 \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u044b \u0441 \u043f\u0440\u0435\u0444\u0438\u043a\u0441\u043e\u043c \u00aben_\u00bb \u0432 \u043f\u0430\u043f\u043a\u0443 \u00aben\u00bb, \u043d\u0435 \u0437\u0430\u0431\u044b\u0432\u0430\u044f \u043f\u0440\u0438 \u0442\u043e\u043c, \u0447\u0442\u043e \u043d\u0443\u0436\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c \u0438\u0445 \u0447\u0435\u0440\u0435\u0437 \u043a\u043e\u043d\u0442\u0435\u043d\u0442-\u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440 (\u043f\u0430\u043d\u0435\u043b\u044c \u0441\u043b\u0435\u0432\u0430).<\/p>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u2014 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0442\u0435\u043a\u0441\u0442\u0443\u0440! \u041e\u0431\u044a\u044f\u0432\u0438\u043c \u0432 \u043a\u043b\u0430\u0441\u0441\u0435 Game \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u043f\u043e\u043b\u044f:  <\/p>\n<pre><code class=\"cs\">        \/\/ \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u044b         public Texture2D TextureBackground; \/\/ \u0444\u043e\u043d         public Texture2D TextureBorder; \/\/ \u0433\u0440\u0430\u043d\u0438\u0446\u0430 \u0444\u043e\u043d\u0430         public Texture2D TextureBackgroundLose; \/\/ \u0444\u043e\u043d \u043c\u0435\u043d\u044e \u043f\u043e\u0440\u0430\u0436\u0435\u043d\u0438\u044f         public Texture2D TextureBackgroundWin; \/\/ \u0444\u043e\u043d \u043c\u0435\u043d\u044e \u043f\u043e\u0431\u0435\u0434\u044b         public Texture2D TextureBackgroundLoad; \/\/ \u0444\u043e\u043d \u043c\u0435\u043d\u044e \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438         public Texture2D TexturePlayer; \/\/ \u0438\u0433\u0440\u043e\u043a         public Texture2D TexturePlayerBack; \/\/ \u0438\u0433\u0440\u043e\u043a (\u043e\u0442\u0440\u0430\u0436\u0435\u043d\u043d\u044b\u0439)         public Texture2D TextureTarget; \/\/ \u0446\u0435\u043b\u044c         public Texture2D TextureTargetBad; \/\/ \u0448\u0435\u0441\u0442\u0435\u0440\u0435\u043d\u043a\u0430         public Texture2D TextureCross; \/\/ \u0441\u0447\u0435\u0442\u0447\u0438\u043a \u0436\u0438\u0437\u043d\u0435\u0439         public Texture2D Splash; \/\/ \u0437\u0430\u0433\u0440\u0443\u0437\u043e\u0447\u043d\u044b\u0439 \u044d\u043a\u0440\u0430\u043d         public SpriteFont Font; \/\/ \u0448\u0440\u0438\u0444\u0442         \/\/ \u043a\u043d\u043e\u043f\u043a\u0438         public Button ButtonUp = new Button();         public Button ButtonDown = new Button();         public Button ButtonRight = new Button();         public Button ButtonLeft = new Button();         public Button ButtonReplay = new Button();         public Button ButtonNewGame = new Button();         public Button ButtonPause = new Button();         public Button ButtonResumeGame = new Button();         public Button ButtonStartNewGame = new Button();         public Button ButtonExit = new Button();         public Button ButtonVisitSite = new Button(); <\/code><\/pre>\n<p>  \u041f\u043e \u043b\u043e\u0433\u0438\u043a\u0435 MonoGame\/XNA \u0435\u0441\u0442\u044c \u043e\u0434\u0438\u043d \u043c\u0435\u0442\u043e\u0434 \u0434\u043b\u044f \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 LoadContent(), \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0432\u044b\u0437\u044b\u0432\u0430\u044e\u0449\u0438\u0439\u0441\u044f \u0432 \u0441\u0430\u043c\u043e\u043c \u043d\u0430\u0447\u0430\u043b\u0435. \u0423 \u043d\u0435\u0433\u043e \u0435\u0441\u0442\u044c \u0441\u0435\u0440\u044c\u0435\u0437\u043d\u044b\u0439 \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043e\u043a: \u043a\u043e\u0433\u0434\u0430 \u0442\u0435\u043a\u0441\u0442\u0443\u0440 \u043c\u043d\u043e\u0433\u043e, \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0434\u043e\u043b\u0433\u043e, \u0438\u0433\u0440\u043e\u043a \u0432\u0438\u0434\u0438\u0442 \u0447\u0435\u0440\u043d\u044b\u0439 \u044d\u043a\u0440\u0430\u043d, \u0447\u0442\u043e \u0441\u043e\u0432\u0441\u0435\u043c \u043d\u0435\u0445\u043e\u0440\u043e\u0448\u043e. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u043c \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u0443 \u0437\u0430\u0433\u0440\u0443\u0437\u043e\u0447\u043d\u043e\u0433\u043e \u044d\u043a\u0440\u0430\u043d\u0430 Splash, \u043f\u043e\u043a\u0430\u0436\u0435\u043c \u0435\u0435, \u0438 \u043b\u0438\u0448\u044c \u043f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e \u043d\u0430\u0447\u043d\u0435\u043c \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0442\u044c \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u044b.<\/p>\n<p>  \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0432\u0432\u0435\u0434\u0435\u043c:  <\/p>\n<pre><code class=\"cs\">        public bool SplashShown = true;         public bool SplashHide = false; <\/code><\/pre>\n<p>  \u041c\u0435\u0442\u043e\u0434 LoadContent \u043f\u0440\u0438\u043c\u0435\u0442 \u0432\u0438\u0434:<\/p>\n<pre><code class=\"cs\">        \/\/ \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u0430         protected override void LoadContent()         {             SpriteBatch = new SpriteBatch(GraphicsDevice); \/\/ \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0433\u0440\u0430\u0444\u0438\u043a\u0438 \u0438 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0442\u0435\u043a\u0441\u0442\u0443\u0440 \t\t\tContent.RootDirectory = &quot;Content\/&quot;+Language; \t\t\tSplash = Content.Load&lt;Texture2D&gt;(Language+&quot;_&quot;+&quot;splash&quot;);         } <\/code><\/pre>\n<p>  \u0427\u0442\u043e \u0437\u0430 \u0441\u0442\u0440\u0430\u043d\u043d\u0430\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f Language? \u042d\u0442\u043e \u0441\u0442\u0440\u043e\u043a\u043e\u0432\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435, \u0440\u0430\u0432\u043d\u043e\u0435 \u00aben\u00bb \u0438\u043b\u0438 \u00abru\u00bb, \u043f\u0440\u043e \u043d\u0435\u0433\u043e \u0443\u043f\u043e\u043c\u044f\u043d\u0435\u043c \u0447\u0443\u0442\u044c \u043d\u0438\u0436\u0435. \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u0438\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u0442\u0441\u044f \u043e\u0434\u043d\u0430 \u043b\u0438\u0448\u044c \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u0430 Splash. \u0422\u043e\u0433\u0434\u0430 \u0432 \u043c\u0435\u0442\u043e\u0434\u0435 Draw \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0443\u044e \u043b\u043e\u0433\u0438\u043a\u0443:  <\/p>\n<pre><code class=\"cs\">            if (SplashShown)             {                 \/\/ \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f, \u0435\u0441\u043b\u0438 \u043f\u043e\u043a\u0430\u0437\u0430\u043d \u0437\u0430\u0433\u0440\u0443\u0437\u043e\u0447\u043d\u044b\u0439 \u044d\u043a\u0440\u0430\u043d                  if (SplashHide)                 {                     LoadData(Language); \/\/ \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 (\u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0445 \u0438\u0433\u0440\u043e\u0432\u044b\u0445 \u0442\u0435\u043a\u0441\u0442\u0443\u0440)                     \/\/ \u0432\u044b\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0437\u0430\u0433\u0440\u0443\u0437\u043e\u0447\u043d\u044b\u0439 \u044d\u043a\u0440\u0430\u043d                     SplashShown = false;                     SplashHide = true;                 }                 else                 {                     SplashHide = true;                 }                 \/\/ \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u0430\u0442\u044c \u0437\u0430\u0433\u0440\u0443\u0437\u043e\u0447\u043d\u044b\u0439 \u044d\u043a\u0440\u0430\u043d                 SpriteBatch.Draw(Splash, new Vector2(AbsoluteX(0), AbsoluteY(0)),                                  new Rectangle(0, 0, Splash.Width, Splash.Height),                                  Color.White, 0,                                  new Vector2(0, 0), Dx, SpriteEffects.None, 0);             }             else             {                \/\/ \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u043f\u0440\u0438 \u043e\u0431\u044b\u0447\u043d\u043e\u0439 \u0438\u0433\u0440\u0435                ...             } <\/code><\/pre>\n<p>  \u041c\u0435\u0442\u043e\u0434 LoadData:  <\/p>\n<pre><code class=\"cs\">        public void LoadData(string locale)         {             Content.RootDirectory = &quot;Content\/&quot;;             TextureBackground = Content.Load&lt;Texture2D&gt;(&quot;background_game&quot;);             TextureBorder = Content.Load&lt;Texture2D&gt;(&quot;border&quot;);             TextureBackgroundLose = Content.Load&lt;Texture2D&gt;(&quot;background_lose&quot;);             TextureBackgroundWin = Content.Load&lt;Texture2D&gt;(&quot;background_win&quot;);             TexturePlayer = Content.Load&lt;Texture2D&gt;(&quot;pacman&quot;);             TexturePlayerBack = Content.Load&lt;Texture2D&gt;(&quot;pacman_back&quot;);             TextureTarget = Content.Load&lt;Texture2D&gt;(&quot;target&quot;);             TextureTargetBad = Content.Load&lt;Texture2D&gt;(&quot;target_bad&quot;);             TextureCross = Content.Load&lt;Texture2D&gt;(&quot;cross&quot;);             Font = Content.Load&lt;SpriteFont&gt;(&quot;Font&quot;);             ButtonUp.TextureButton = Content.Load&lt;Texture2D&gt;(&quot;ButtonUp&quot;);             ButtonUp.TextureButtonLight = Content.Load&lt;Texture2D&gt;(&quot;ButtonUpPressed&quot;);             ButtonDown.TextureButton = Content.Load&lt;Texture2D&gt;(&quot;ButtonDown&quot;);             ButtonDown.TextureButtonLight = Content.Load&lt;Texture2D&gt;(&quot;ButtonDownPressed&quot;);             ButtonLeft.TextureButton = Content.Load&lt;Texture2D&gt;(&quot;ButtonLeft&quot;);             ButtonLeft.TextureButtonLight = Content.Load&lt;Texture2D&gt;(&quot;ButtonLeftPressed&quot;);             ButtonRight.TextureButton = Content.Load&lt;Texture2D&gt;(&quot;ButtonRight&quot;);             ButtonRight.TextureButtonLight = Content.Load&lt;Texture2D&gt;(&quot;ButtonRightPressed&quot;);             ButtonVisitSite.TextureButton = Content.Load&lt;Texture2D&gt;(&quot;ButtonSite&quot;);             ButtonVisitSite.TextureButtonLight = Content.Load&lt;Texture2D&gt;(&quot;ButtonSitePressed&quot;);             Content.RootDirectory = &quot;Content\/&quot; + locale;             TextureBackgroundLoad = Content.Load&lt;Texture2D&gt;(locale + &quot;_&quot; + &quot;LoadingScreen&quot;);             ButtonReplay.TextureButton = Content.Load&lt;Texture2D&gt;(locale + &quot;_&quot; + &quot;ButtonPlayAgain&quot;);             ButtonReplay.TextureButtonLight = Content.Load&lt;Texture2D&gt;(locale + &quot;_&quot; + &quot;ButtonPlayAgainPressed&quot;);             ButtonNewGame.TextureButton = Content.Load&lt;Texture2D&gt;(locale + &quot;_&quot; + &quot;StartGame&quot;);             ButtonNewGame.TextureButtonLight = Content.Load&lt;Texture2D&gt;(locale + &quot;_&quot; + &quot;StartGamePressed&quot;);             ButtonPause.TextureButton = Content.Load&lt;Texture2D&gt;(locale + &quot;_&quot; + &quot;PauseButton&quot;);             ButtonPause.TextureButtonLight = Content.Load&lt;Texture2D&gt;(locale + &quot;_&quot; + &quot;PauseButtonPressed&quot;);             ButtonResumeGame.TextureButton = Content.Load&lt;Texture2D&gt;(locale + &quot;_&quot; + &quot;ButtonResume&quot;);             ButtonResumeGame.TextureButtonLight = Content.Load&lt;Texture2D&gt;(locale + &quot;_&quot; + &quot;ButtonResumePressed&quot;);             ButtonStartNewGame.TextureButton = Content.Load&lt;Texture2D&gt;(locale + &quot;_&quot; + &quot;ButtonNewGame&quot;);             ButtonStartNewGame.TextureButtonLight = Content.Load&lt;Texture2D&gt;(locale + &quot;_&quot; + &quot;ButtonNewGamePressed&quot;);             ButtonExit.TextureButton = Content.Load&lt;Texture2D&gt;(locale + &quot;_&quot; + &quot;ButtonExit&quot;);             ButtonExit.TextureButtonLight = Content.Load&lt;Texture2D&gt;(locale + &quot;_&quot; + &quot;ButtonExitPressed&quot;);         } <\/code><\/pre>\n<p>  \u0422\u0430\u043a\u043e\u0439 \u0432\u043e\u0442 \u0434\u043b\u0438\u043d\u043d\u044b\u0439 \u043a\u043e\u0434. \u0417\u0430\u0442\u043e \u2014 \u0438\u0437\u0431\u0430\u0432\u043b\u044f\u0435\u0442 \u043e\u0442 \u043f\u043e\u0434\u0432\u0438\u0441\u0430\u043d\u0438\u044f \u043f\u0440\u0438 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0435, \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c \u0437\u0430\u0433\u0440\u0443\u0437\u043e\u0447\u043d\u044b\u0439 \u044d\u043a\u0440\u0430\u043d \u0441 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435\u043c \u0438\u0433\u0440\u044b \u0438 \u043d\u0430\u0434\u043f\u0438\u0441\u044c\u044e \u00ab\u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430&#8230;\u00bb, \u0442\u0435\u043c \u0441\u0430\u043c\u044b\u043c \u0434\u0430\u0432\u0430\u044f \u0438\u0433\u0440\u043e\u043a\u0443 \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u0435, \u0447\u0442\u043e \u0435\u0433\u043e \u0442\u0435\u043b\u0435\u0444\u043e\u043d \u0438\u043b\u0438 \u043f\u043b\u0430\u043d\u0448\u0435\u0442 \u043d\u0435 \u0437\u0430\u0432\u0438\u0441.<\/p>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u043f\u043e \u043f\u043e\u0432\u043e\u0434\u0443 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u043d\u043e\u0439 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 Language. \u041a\u0430\u043a \u043c\u044b \u0443\u0436\u0435 \u0443\u043f\u043e\u043c\u044f\u043d\u0443\u043b\u0438, \u043e\u043d\u0430 \u0438\u043c\u0435\u0435\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u00abru\u00bb \u0438\u043b\u0438 \u00aben\u00bb. \u0412 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 PacManGame \u043d\u0443\u0436\u043d\u043e \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0438\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f:  <\/p>\n<pre><code class=\"cs\">            string strlocale = Locale.Default.ToString();             strlocale = strlocale.Substring(0, 2);             if (strlocale.Equals(&quot;ru&quot;) || strlocale.Equals(&quot;be&quot;) || strlocale.Equals(&quot;uk&quot;) || strlocale.Equals(&quot;sr&quot;) ||                 strlocale.Equals(&quot;kz&quot;))             {                 Language = &quot;ru&quot;;                 strScore = &quot;\u0421\u0447\u0435\u0442: &quot;;                 strRecord = &quot;\u0420\u0435\u043a\u043e\u0440\u0434: &quot;;                 strScoreAmount = &quot;\u0427\u0438\u0441\u043b\u043e \u043e\u0447\u043a\u043e\u0432: &quot;;                 strRecordString = &quot;\u0420\u0435\u043a\u043e\u0440\u0434 &quot;;                 strRecordNotReached = &quot; \u043d\u0435 \u0431\u044b\u043b \u043f\u043e\u0431\u0438\u0442.&quot;;                 strPacmanInjured = &quot;Pacman \u0431\u044b\u043b \u0440\u0430\u043d\u0435\u043d \u043e \u0433\u0440\u0430\u043d\u0438\u0446\u044b \u043f\u043e\u043b\u044f...&quot;;                 strNewRecord = &quot;\u041f\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d \u0440\u0435\u043a\u043e\u0440\u0434 &quot;;             }             else             {                 Language = &quot;en&quot;;                 strScore = &quot;Score: &quot;;                 strRecord = &quot;Record: &quot;;                 strScoreAmount = &quot;Reached score: &quot;;                 strRecordString = &quot;Record &quot;;                 strRecordNotReached = &quot; was not reached.&quot;;                 strPacmanInjured = &quot;Pacman was injured by field border...&quot;;                 strNewRecord = &quot;New record reached: &quot;;             } <\/code><\/pre>\n<p>  \u0422\u043e \u0435\u0441\u0442\u044c: \u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u043c \u0438\u0437 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0442\u0435\u043a\u0443\u0449\u0438\u0439 \u044f\u0437\u044b\u043a, \u0438 \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u043e\u0433\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043f\u0440\u0438\u0441\u0432\u0430\u0438\u0432\u0430\u0435\u043c \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e Language \u0438 \u0440\u044f\u0434 \u0434\u0440\u0443\u0433\u0438\u0445 (\u0442\u0430\u043a\u0430\u044f \u0434\u043b\u0438\u043d\u043d\u0430\u044f \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u0430 \u0441 locale.Substring \u043d\u0443\u0436\u043d\u0430 \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u043e\u0442\u0434\u0435\u043b\u0438\u0442\u044c \u043e\u0442 \u0432\u0441\u0435\u0445 \u043c\u043d\u043e\u0433\u043e\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u044b\u0445 en-US, en-GB \u0438 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0445 \u043f\u0440\u043e\u0441\u0442\u043e \u0447\u0430\u0441\u0442\u0438\u0446\u0443 en). \u0412 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0435, \u0442\u043e \u0436\u0435 \u0441\u0430\u043c\u043e\u0435 \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u0447\u0435\u0440\u0435\u0437 strings.xml, \u043d\u043e \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0445 \u0441\u0442\u0440\u043e\u043a \u043d\u0435\u043c\u043d\u043e\u0433\u043e, \u0430 \u0438\u0433\u0440\u0430 \u0432\u0441\u0435\u0433\u043e \u043b\u0438\u0448\u044c \u043d\u0430 \u0434\u0432\u0443\u0445 \u044f\u0437\u044b\u043a\u0430\u0445, \u0442\u043e \u043c\u043e\u0436\u043d\u043e \u043e\u0431\u043e\u0439\u0442\u0438\u0441\u044c \u0438 \u043f\u0440\u043e\u0441\u0442\u044b\u043c \u043f\u0440\u0438\u0441\u0432\u0430\u0438\u0432\u0430\u043d\u0438\u0435\u043c \u043f\u0440\u044f\u043c\u043e \u0432 \u043a\u043e\u0434\u0435.<\/p>\n<p>  \u0421\u0442\u0440\u043e\u043a\u0438 \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u0448\u0440\u0438\u0444\u0442\u043e\u043c Font.xnb. MonoGame \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 *.xnb, \u0430 \u043d\u0435 XNA-\u0448\u043d\u044b\u0435 *.spritefont, \u0442\u0430\u043a \u0447\u0442\u043e \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0447\u0435\u0440\u0435\u0437 XNA (\u0441\u043c. \u043e\u0431\u0430 \u0444\u0430\u0439\u043b\u0430 \u043d\u0430 GitHub).<\/p>\n<p>  \u041f\u043e\u043b\u043d\u044b\u0439 \u043a\u043e\u0434 Game.cs, \u0441 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u044f\u043c\u0438:<\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">Game.cs<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"cs\">using System; using System.Globalization; using Android.Content; using Java.Util; using Microsoft.Xna.Framework; using Microsoft.Xna.Framework.Graphics; using Microsoft.Xna.Framework.Input;  namespace pacmangame {     \/* \u041e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u043a\u043b\u0430\u0441\u0441 &quot;\u0438\u0433\u0440\u0430&quot;. \u0421\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0432\u0441\u0435 \u0432\u0438\u0437\u0443\u0430\u043b\u044c\u043d\u044b\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u044b \u0438 \u043c\u0435\u0442\u043e\u0434\u044b \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0438\u0433\u0440\u043e\u0432\u043e\u0433\u043e \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430. *\/      partial class PacManGame : Game     {         \/\/ \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u044b \u0433\u0440\u0430\u0444\u0438\u043a\u0438         private readonly GraphicsDeviceManager Graphics;         private SpriteBatch SpriteBatch;         \/\/ \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u044b         private Texture2D TextureBackground; \/\/ \u0444\u043e\u043d         private Texture2D TextureBorder; \/\/ \u0444\u043e\u043d         private Texture2D TextureBackgroundLose; \/\/ \u0444\u043e\u043d \u043c\u0435\u043d\u044e \u043f\u043e\u0440\u0430\u0436\u0435\u043d\u0438\u044f         private Texture2D TextureBackgroundWin; \/\/ \u0444\u043e\u043d \u043c\u0435\u043d\u044e \u043f\u043e\u0431\u0435\u0434\u044b         private Texture2D TextureBackgroundLoad; \/\/ \u0444\u043e\u043d \u043c\u0435\u043d\u044e \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438         private Texture2D TexturePlayer; \/\/ \u0438\u0433\u0440\u043e\u043a         private Texture2D TexturePlayerBack; \/\/ \u0438\u0433\u0440\u043e\u043a (\u043e\u0442\u0440\u0430\u0436\u0435\u043d\u043d\u044b\u0439)         private Texture2D TextureTarget; \/\/ \u0446\u0435\u043b\u044c         private Texture2D TextureTargetBad; \/\/ \u0448\u0435\u0441\u0442\u0435\u0440\u0435\u043d\u043a\u0430         private Texture2D TextureCross; \/\/ \u0441\u0447\u0435\u0442\u0447\u0438\u043a \u0436\u0438\u0437\u043d\u0435\u0439         private SpriteFont Font;         \/\/ \u043a\u043d\u043e\u043f\u043a\u0438         public Button ButtonUp = new Button();         public Button ButtonDown = new Button();         public Button ButtonRight = new Button();         public Button ButtonLeft = new Button();         public Button ButtonReplay = new Button();         public Button ButtonNewGame = new Button();         public Button ButtonPause = new Button();         public Button ButtonResumeGame = new Button();         public Button ButtonStartNewGame = new Button();         public Button ButtonExit = new Button();         public Button ButtonVisitSite = new Button();          \/\/ \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u044b         private Player Player; \/\/ \u0438\u0433\u0440\u043e\u043a (\u043e\u0431\u044a\u0435\u043a\u0442)         private GameProcess GameProcess = new GameProcess(); \/\/ \u0438\u0433\u0440\u043e\u0432\u043e\u0439 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 (\u043e\u0431\u044a\u0435\u043a\u0442)          \/\/ \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u043a\u0438         public static float Dx = 1f;         public static float Dy = 1f;         private static int NominalWidth = 960;         private static int NominalHeight = 540;         private static float NominalWidthCounted;         private static float NominalHeightCounted;         private static int CurrentWidth;         private static int CurrentHeigth;         private static float deltaY = 0;         private static float deltaY_1 = 0;         public static float YTopBorder;         public static float YBottomBorder;         \/\/ \u0441\u0442\u0440\u043e\u043a\u0438         public string Language = &quot;en&quot;;         public string strScore = &quot;&quot;;         public string strRecord = &quot;&quot;;         public string strScoreAmount = &quot;&quot;;         public string strRecordString = &quot;&quot;;         public string strRecordNotReached = &quot;&quot;;         public string strPacmanInjured = &quot;&quot;;         public string strNewRecord = &quot;&quot;;         \/\/ \u0437\u0430\u0433\u0440\u0443\u0437\u043e\u0447\u043d\u044b\u0439 \u044d\u043a\u0440\u0430\u043d         public Texture2D Splash;         public bool SplashShown = true;         public bool SplashHide = false;          \/\/ \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u044d\u043a\u0440\u0430\u043d\u0430         public void UpdateScreenAttributies()         {             Dx = (float) CurrentWidth\/NominalWidth;             Dy = (float) CurrentHeigth\/NominalHeight;              NominalHeightCounted = CurrentHeigth\/Dx;             NominalWidthCounted = CurrentWidth\/Dx;              int check = Math.Abs(CurrentHeigth - CurrentWidth\/16*9);             if (check &gt; 10)                 deltaY = (float) check\/2; \/\/ \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u044e\u0449\u0435\u0435 \u0440\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0434\u043e 16:9 \u043f\u043e \u043f \u043e\u0441\u0438 Y (\u0432 \u0430\u0431\u0441\u043e\u043b\u044e\u0442\u043d\u044b\u0445 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u0430\u0445)             deltaY_1 = -(CurrentWidth\/16*10 - CurrentWidth\/16*9)\/2f;              YTopBorder = -deltaY\/Dx; \/\/ \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u0430 \u0442\u043e\u0447\u043a\u0438 \u0432 \u043b\u0435\u0432\u043e\u043c \u0432\u0435\u0440\u0445\u043d\u0435\u043c \u0443\u0433\u043b\u0443 (\u0432 \u0432\u0438\u0440\u0443\u0430\u043b\u044c\u043d\u044b\u0445 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u0430\u0445)             YBottomBorder = NominalHeight + (180); \/\/ \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u0430 \u0442\u043e\u0447\u043a\u0438 \u0432 \u043d\u0438\u0436\u043d\u0435\u043c \u0432\u0435\u0440\u0445\u043d\u0435\u043c \u0443\u0433\u043b\u0443 (\u0432 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0445 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u0430\u0445)         }          public void DrawRectangle(Rectangle coords, Color color)         {             var rect = new Texture2D(GraphicsDevice, 1, 1);             rect.SetData(new[] {color});             SpriteBatch.Draw(rect, coords, color);         }          \/\/ \u043a\u0430\u043b\u0438\u0431\u0440\u043e\u0432\u043a\u0430 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u044b X         public static float AbsoluteX(float x)         {             return x*Dx;         }          \/\/ \u043a\u0430\u043b\u0438\u0431\u0440\u043e\u0432\u043a\u0430 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u044b Y         public static float AbsoluteY(float y)         {             return y*Dx + deltaY;         }          \/\/ \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u043a\u043b\u0430\u0441\u0441\u0430 &quot;\u0438\u0433\u0440\u0430&quot;         public PacManGame()         {             \/\/ \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0433\u0440\u0430\u0444\u0438\u043a\u0438             Graphics = new GraphicsDeviceManager(this);             var metric = new Android.Util.DisplayMetrics();             Activity.WindowManager.DefaultDisplay.GetMetrics(metric);             \/\/ \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u044d\u043a\u0440\u0430\u043d\u0430              Graphics.IsFullScreen = true;             Graphics.PreferredBackBufferWidth = metric.WidthPixels;             Graphics.PreferredBackBufferHeight = metric.HeightPixels;             CurrentWidth = Graphics.PreferredBackBufferWidth;             CurrentHeigth = Graphics.PreferredBackBufferHeight;             Graphics.SupportedOrientations = DisplayOrientation.LandscapeLeft | DisplayOrientation.LandscapeRight;              UpdateScreenAttributies();              string strlocale = Locale.Default.ToString();             strlocale = strlocale.Substring(0, 2);             if (strlocale.Equals(&quot;ru&quot;) || strlocale.Equals(&quot;be&quot;) || strlocale.Equals(&quot;uk&quot;) || strlocale.Equals(&quot;sr&quot;) ||                 strlocale.Equals(&quot;kz&quot;))             {                 Language = &quot;ru&quot;;                 strScore = &quot;\u0421\u0447\u0435\u0442: &quot;;                 strRecord = &quot;\u0420\u0435\u043a\u043e\u0440\u0434: &quot;;                 strScoreAmount = &quot;\u0427\u0438\u0441\u043b\u043e \u043e\u0447\u043a\u043e\u0432: &quot;;                 strRecordString = &quot;\u0420\u0435\u043a\u043e\u0440\u0434 &quot;;                 strRecordNotReached = &quot; \u043d\u0435 \u0431\u044b\u043b \u043f\u043e\u0431\u0438\u0442.&quot;;                 strPacmanInjured = &quot;Pacman \u0431\u044b\u043b \u0440\u0430\u043d\u0435\u043d \u043e \u0433\u0440\u0430\u043d\u0438\u0446\u044b \u043f\u043e\u043b\u044f...&quot;;                 strNewRecord = &quot;\u041f\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d \u0440\u0435\u043a\u043e\u0440\u0434 &quot;;             }             else             {                 Language = &quot;en&quot;;                 strScore = &quot;Score: &quot;;                 strRecord = &quot;Record: &quot;;                 strScoreAmount = &quot;Reached score: &quot;;                 strRecordString = &quot;Record &quot;;                 strRecordNotReached = &quot; was not reached.&quot;;                 strPacmanInjured = &quot;Pacman was injured by field border...&quot;;                 strNewRecord = &quot;New record reached: &quot;;             }             var locale = new Locale(Language); \/\/ languageIso is locale string             Locale.Default = locale;             var config = new Android.Content.Res.Configuration {Locale = locale};             Activity.Resources.UpdateConfiguration(config, Activity.Resources.DisplayMetrics);          }          \/\/ \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u0430         protected override void LoadContent()         {             SpriteBatch = new SpriteBatch(GraphicsDevice); \/\/ \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0433\u0440\u0430\u0444\u0438\u043a\u0438 \u0438 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0442\u0435\u043a\u0441\u0442\u0443\u0440             Content.RootDirectory = &quot;Content\/&quot; + Language;             Splash = Content.Load&lt;Texture2D&gt;(Language + &quot;_&quot; + &quot;splash&quot;);          }          public void LoadData(string locale)         {             Content.RootDirectory = &quot;Content\/&quot;;              TextureBackground = Content.Load&lt;Texture2D&gt;(&quot;background_game&quot;);             TextureBorder = Content.Load&lt;Texture2D&gt;(&quot;border&quot;);             TextureBackgroundLose = Content.Load&lt;Texture2D&gt;(&quot;background_lose&quot;);             TextureBackgroundWin = Content.Load&lt;Texture2D&gt;(&quot;background_win&quot;);             TexturePlayer = Content.Load&lt;Texture2D&gt;(&quot;pacman&quot;);             TexturePlayerBack = Content.Load&lt;Texture2D&gt;(&quot;pacman_back&quot;);             TextureTarget = Content.Load&lt;Texture2D&gt;(&quot;target&quot;);             TextureTargetBad = Content.Load&lt;Texture2D&gt;(&quot;target_bad&quot;);             TextureCross = Content.Load&lt;Texture2D&gt;(&quot;cross&quot;);             Font = Content.Load&lt;SpriteFont&gt;(&quot;Font&quot;);              ButtonUp.TextureButton = Content.Load&lt;Texture2D&gt;(&quot;ButtonUp&quot;);             ButtonUp.TextureButtonLight = Content.Load&lt;Texture2D&gt;(&quot;ButtonUpPressed&quot;);             ButtonDown.TextureButton = Content.Load&lt;Texture2D&gt;(&quot;ButtonDown&quot;);             ButtonDown.TextureButtonLight = Content.Load&lt;Texture2D&gt;(&quot;ButtonDownPressed&quot;);             ButtonLeft.TextureButton = Content.Load&lt;Texture2D&gt;(&quot;ButtonLeft&quot;);             ButtonLeft.TextureButtonLight = Content.Load&lt;Texture2D&gt;(&quot;ButtonLeftPressed&quot;);             ButtonRight.TextureButton = Content.Load&lt;Texture2D&gt;(&quot;ButtonRight&quot;);             ButtonRight.TextureButtonLight = Content.Load&lt;Texture2D&gt;(&quot;ButtonRightPressed&quot;);              ButtonVisitSite.TextureButton = Content.Load&lt;Texture2D&gt;(&quot;ButtonSite&quot;);             ButtonVisitSite.TextureButtonLight = Content.Load&lt;Texture2D&gt;(&quot;ButtonSitePressed&quot;);              Content.RootDirectory = &quot;Content\/&quot; + locale;              TextureBackgroundLoad = Content.Load&lt;Texture2D&gt;(locale + &quot;_&quot; + &quot;LoadingScreen&quot;);             ButtonReplay.TextureButton = Content.Load&lt;Texture2D&gt;(locale + &quot;_&quot; + &quot;ButtonPlayAgain&quot;);             ButtonReplay.TextureButtonLight = Content.Load&lt;Texture2D&gt;(locale + &quot;_&quot; + &quot;ButtonPlayAgainPressed&quot;);              ButtonNewGame.TextureButton = Content.Load&lt;Texture2D&gt;(locale + &quot;_&quot; + &quot;StartGame&quot;);             ButtonNewGame.TextureButtonLight = Content.Load&lt;Texture2D&gt;(locale + &quot;_&quot; + &quot;StartGamePressed&quot;);              ButtonPause.TextureButton = Content.Load&lt;Texture2D&gt;(locale + &quot;_&quot; + &quot;PauseButton&quot;);             ButtonPause.TextureButtonLight = Content.Load&lt;Texture2D&gt;(locale + &quot;_&quot; + &quot;PauseButtonPressed&quot;);              ButtonResumeGame.TextureButton = Content.Load&lt;Texture2D&gt;(locale + &quot;_&quot; + &quot;ButtonResume&quot;);             ButtonResumeGame.TextureButtonLight = Content.Load&lt;Texture2D&gt;(locale + &quot;_&quot; + &quot;ButtonResumePressed&quot;);             ButtonStartNewGame.TextureButton = Content.Load&lt;Texture2D&gt;(locale + &quot;_&quot; + &quot;ButtonNewGame&quot;);             ButtonStartNewGame.TextureButtonLight = Content.Load&lt;Texture2D&gt;(locale + &quot;_&quot; + &quot;ButtonNewGamePressed&quot;);             ButtonExit.TextureButton = Content.Load&lt;Texture2D&gt;(locale + &quot;_&quot; + &quot;ButtonExit&quot;);             ButtonExit.TextureButtonLight = Content.Load&lt;Texture2D&gt;(locale + &quot;_&quot; + &quot;ButtonExitPressed&quot;);         }          \/\/ \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u0438\u0433\u0440\u043e\u0432\u043e\u0433\u043e \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430 (\u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u0432 \u043a\u0430\u0436\u0434\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u0432\u0440\u0435\u043c\u0435\u043d\u0438)         protected override void Update(GameTime gameTime)         {             base.Update(gameTime); \/\/ \u043e\u0431\u043d\u043e\u0432\u0438\u0442\u044c \u0441\u0447\u0435\u0442\u0447\u0438\u043a \u0438\u0433\u0440\u043e\u0432\u043e\u0433\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438             \/\/ \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u043d\u0430\u0436\u0430\u0442\u0438\u044f \u043a\u043d\u043e\u043f\u043a\u0438 &quot;\u043d\u0430\u0437\u0430\u0434&quot;             if (GameProcess.IsGame)             {                 if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed) GameProcess.IsPause = true;             }             if (GameProcess.IsPause)             {                 if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed) GameProcess.IsPause = false;             }         }          \/\/ \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u043a\u0430 \u0432\u0438\u0437\u0443\u0430\u043b\u044c\u043d\u044b\u0445 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 (\u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u0432 \u043a\u0430\u0436\u0434\u044b\u0439 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u0432\u0440\u0435\u043c\u0435\u043d\u0438)         protected override void Draw(GameTime gameTime)         {             GraphicsDevice.Clear(Color.AliceBlue); \/\/ \u0437\u0430\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0444\u043e\u043d             SpriteBatch.Begin(SpriteSortMode.Deferred, BlendState.NonPremultiplied); \/\/ \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043f\u043e\u0440\u044f\u0434\u043e\u043a \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u043a\u0438 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432              if (SplashShown)             {                 if (SplashHide)                 {                     LoadData(Language); \/\/ \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 (\u0442\u0435\u043a\u0441\u0442\u0443\u0440, \u0437\u0432\u0443\u043a\u043e\u0432, \u0448\u0440\u0438\u0444\u0442\u0430)                     SplashShown = false;                     SplashHide = true;                 }                 else                 {                     SplashHide = true;                 }                 SpriteBatch.Draw(Splash, new Vector2(AbsoluteX(0), AbsoluteY(0)),                                  new Rectangle(0, 0, Splash.Width, Splash.Height),                                  Color.White, 0,                                  new Vector2(0, 0), Dx, SpriteEffects.None, 0);             }             else             {                 if (GameProcess.IsGame)                 {                     \/\/ \u0435\u0441\u043b\u0438 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0438\u0433\u0440\u043e\u0432\u043e\u0439 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 - \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u043a\u0430 \u0438\u0433\u0440\u043e\u0432\u043e\u0433\u043e \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430                     if (!GameProcess.IsPause)                     {                         \/\/ \u0435\u0441\u043b\u0438 \u043f\u0430\u0443\u0437\u0430 \u0432\u044b\u043a\u043b\u044e\u0447\u0435\u043d\u0430                         SpriteBatch.Draw(TextureBackground, new Vector2(AbsoluteX(0), AbsoluteY(0)),                                          new Rectangle(0, 0, TextureBackground.Width, TextureBackground.Height),                                          Color.White,                                          0, new Vector2(0, 0), 1*Dx, SpriteEffects.None, 0); \/\/ \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u043a\u0430 \u0444\u043e\u043d\u0430                         foreach (var enemy in GameProcess.Enemies)                         {                             \/\/ \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u043a\u0430 \u0446\u0435\u043b\u0435\u0439                             SpriteBatch.Draw(TextureTarget,                                              new Vector2(AbsoluteX(enemy.Screenpos.X), AbsoluteY(enemy.Screenpos.Y)),                                              new Rectangle(0, 0, TextureTarget.Width, TextureTarget.Height), Color.White,                                              0, new Vector2(TextureTarget.Width\/2f, TextureTarget.Height\/2f), 1*Dx,                                              SpriteEffects.None, 0);                          }                         \/\/ \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u043a\u0430 \u0438\u0433\u0440\u043e\u043a\u0430                         if (Player.Direction == 2)                             SpriteBatch.Draw(TexturePlayerBack, new Vector2(AbsoluteX(Player.X), AbsoluteY(Player.Y)),                                              new Rectangle(0, 0, TexturePlayerBack.Width, TexturePlayerBack.Height),                                              Color.White,                                              Player.Angle,                                              new Vector2(TexturePlayerBack.Width\/2f, TexturePlayerBack.Height\/2f), 1*Dx,                                              SpriteEffects.None, 0);                             \/\/ \u043e\u0442\u0440\u0430\u0436\u0435\u043d\u043d\u044b\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 (\u0434\u0432\u0438\u0436\u0435\u043d\u0438 \u0432\u043b\u0435\u0432\u043e)                         else                             SpriteBatch.Draw(TexturePlayer, new Vector2(AbsoluteX(Player.X), AbsoluteY(Player.Y)),                                              new Rectangle(0, 0, TexturePlayer.Width, TexturePlayer.Height), Color.White,                                              Player.Angle,                                              new Vector2(TexturePlayerBack.Width\/2f, TexturePlayerBack.Height\/2f), 1*Dx,                                              SpriteEffects.None, 0);                         \/\/ \u043e\u0431\u044b\u0447\u043d\u044b\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 (\u0432\u043f\u0440\u0430\u0432\u043e\/\u0432\u0432\u0435\u0440\u0445\/\u0432\u043d\u0438\u0437)                         foreach (var badenemy in GameProcess.BadEnemies)                         {                             SpriteBatch.Draw(TextureTargetBad,                                              new Vector2(AbsoluteX(badenemy.Screenpos.X),                                                          AbsoluteY(badenemy.Screenpos.Y)),                                              new Rectangle(0, 0, TextureTargetBad.Width, TextureTargetBad.Height),                                              Color.White,                                              badenemy.Rotation, new Vector2(0, 0), 1*Dx, SpriteEffects.None, 0);                         }                         \/\/ \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u043a\u0430 \u043a\u043e\u043b\u044e\u0447\u0435\u043a \u043f\u043e \u043a\u0440\u0430\u044f\u043c \u044d\u043a\u0440\u0430\u043d\u0430                         SpriteBatch.Draw(TextureBorder, new Vector2(AbsoluteX(0), AbsoluteY(0)),                                          new Rectangle(0, 0, TextureBorder.Width, TextureBorder.Height), Color.White,                                          0, new Vector2(0, 0), 1*Dx, SpriteEffects.None, 0);                         \/\/ \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u043a\u0430 \u0447\u0438\u0441\u043b\u0430 \u043e\u0447\u043a\u043e\u0432                         SpriteBatch.DrawString(Font,                                                strRecord + GameProcess.MaxScore.ToString(CultureInfo.InvariantCulture),                                                new Vector2(20, 60),                                                Color.White, 0, new Vector2(0, 0), 0.8f*Dx, SpriteEffects.None, 0);                         SpriteBatch.DrawString(Font,                                                strScoreAmount + GameProcess.Score.ToString(CultureInfo.InvariantCulture),                                                new Vector2(20, 10),                                                GameProcess.Score &lt;= GameProcess.MaxScore                                                    ? Color.White                                                    : new Color(66, 160, 208), 0,                                                new Vector2(0, 0), 1*Dx, SpriteEffects.None, 0);                         \/\/ \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u043a\u0430 \u0436\u0438\u0437\u043d\u0435\u0439                         SpriteBatch.Draw(TextureCross, new Vector2(AbsoluteX(690), AbsoluteY(15)),                                          new Rectangle(0, 0, TextureCross.Width, TextureCross.Height),                                          Player.Lives &gt;= 1 ? Color.White : Color.Red,                                          0, new Vector2(0, 0), 1*Dx, SpriteEffects.None, 0);                         SpriteBatch.Draw(TextureCross, new Vector2(AbsoluteX(743), AbsoluteY(15)),                                          new Rectangle(0, 0, TextureCross.Width, TextureCross.Height),                                          Player.Lives &gt;= 2 ? Color.White : Color.Red,                                          0, new Vector2(0, 0), 1*Dx, SpriteEffects.None, 0);                         SpriteBatch.Draw(TextureCross, new Vector2(AbsoluteX(793), AbsoluteY(15)),                                          new Rectangle(0, 0, TextureCross.Width, TextureCross.Height),                                          Player.Lives &gt;= 3 ? Color.White : Color.Red,                                          0, new Vector2(0, 0), 1*Dx, SpriteEffects.None, 0);                         SpriteBatch.Draw(TextureCross, new Vector2(AbsoluteX(845), AbsoluteY(15)),                                          new Rectangle(0, 0, TextureCross.Width, TextureCross.Height),                                          Player.Lives &gt;= 4 ? Color.White : Color.Red,                                          0, new Vector2(0, 0), 1*Dx, SpriteEffects.None, 0);                         SpriteBatch.Draw(TextureCross, new Vector2(AbsoluteX(896), AbsoluteY(15)),                                          new Rectangle(0, 0, TextureCross.Width, TextureCross.Height),                                          Player.Lives &gt;= 5 ? Color.White : Color.Red,                                          0, new Vector2(0, 0), 1*Dx, SpriteEffects.None, 0);                          \/\/ \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439 \u0446\u0435\u043b\u0435\u0439 (&quot;false&quot; \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e \u0443\u0441\u043a\u043e\u0440\u0435\u043d\u0438\u0435 \u0432\u044b\u043a\u043b\u044e\u0447\u0435\u043d\u043e)                         foreach (var enemy in GameProcess.Enemies)                             enemy.Process(false, gameTime);                         \/\/ \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439 \u0448\u0435\u0441\u0442\u0435\u0440\u0435\u043d\u043e\u043a (&quot;true&quot; \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u043e \u0443\u0441\u043a\u043e\u0440\u0435\u043d\u0438\u0435)                         foreach (var badenemy in GameProcess.BadEnemies)                             badenemy.Process(true, gameTime);                         Player.Process(gameTime); \/\/ \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u044f \u0438\u0433\u0440\u043e\u043a\u0430                         Player.WorkWithTarget(); \/\/ \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u0446\u0435\u043b\u044f\u043c\u0438                         \/\/ \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u0435\u043c                         \/\/ \u0432\u0432\u0435\u0440\u0445                         ButtonUp.Process(SpriteBatch);                         ButtonUp.Update(90, 205);                         if (ButtonUp.IsEnabled)                         {                             ButtonUp.Reset();                             Player.Direction = 3;                         }                         \/\/ \u0432\u043d\u0438\u0437                         ButtonDown.Process(SpriteBatch);                         ButtonDown.Update(90, 430);                         if (ButtonDown.IsEnabled)                         {                             ButtonDown.Reset();                             Player.Direction = 4;                         }                         \/\/ \u0432\u043b\u0435\u0432\u043e                         ButtonLeft.Process(SpriteBatch);                         ButtonLeft.Update(18, 312);                         if (ButtonLeft.IsEnabled)                         {                             ButtonLeft.Reset();                             Player.Direction = 2;                         }                         \/\/ \u0432\u043f\u0440\u0430\u0432\u043e                         ButtonRight.Process(SpriteBatch);                         ButtonRight.Update(175, 312);                         if (ButtonRight.IsEnabled)                         {                             Player.Direction = 1;                             ButtonRight.Reset();                         }                         \/\/ \u043f\u0430\u0443\u0437\u0430                         ButtonPause.Process(SpriteBatch);                         ButtonPause.Update(830, 484);                         if (ButtonPause.IsEnabled)                         {                             ButtonPause.Reset();                             GameProcess.IsPause = true;                         }                     }                     else                     {                         \/\/ \u0435\u0441\u043b\u0438 \u043f\u0430\u0443\u0437\u0430 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0430                         SpriteBatch.Draw(TextureBackgroundLoad, new Vector2(AbsoluteX(0), AbsoluteY(0)),                                          new Rectangle(0, 0, TextureBackgroundLoad.Width, TextureBackgroundLoad.Height),                                          Color.White,                                          0, new Vector2(0, 0), 1*Dx, SpriteEffects.None, 0);                          SpriteBatch.DrawString(Font,                                                &quot;\u041f\u0430\u0443\u0437\u0430&quot;,                                                new Vector2(AbsoluteX(420), AbsoluteY(1175)),                                                Color.White, 0, new Vector2(0, 0), 1.5f*Dx, SpriteEffects.None, 0);                         \/\/ \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u0442\u044c                         ButtonResumeGame.Process(SpriteBatch);                         ButtonResumeGame.Update(328, 351);                         if (ButtonResumeGame.IsEnabled)                         {                             ButtonResumeGame.Reset();                             GameProcess.IsPause = false;                         }                         \/\/ \u043d\u0430\u0447\u0430\u0442\u044c \u043d\u043e\u0432\u0443\u044e \u0438\u0433\u0440\u0443                         ButtonStartNewGame.Process(SpriteBatch);                         ButtonStartNewGame.Update(320, 420);                         if (ButtonStartNewGame.IsEnabled)                         {                             ButtonStartNewGame.Reset();                             GameProcess = new GameProcess();                             GameProcess.IsGame = true;                             Player = new Player(GameProcess);                         }                         \/\/ \u0432\u044b\u0445\u043e\u0434                         ButtonExit.Process(SpriteBatch);                         ButtonExit.Update(320, 483);                         if (ButtonExit.IsEnabled)                         {                             ButtonExit.Reset();                             Exit();                         }                         \/\/ \u043f\u043e\u0441\u0435\u0442\u0438\u0442\u044c \u0441\u0430\u0439\u0442                         ButtonVisitSite.Process(SpriteBatch);                         ButtonVisitSite.Update(741, 475);                         if (ButtonVisitSite.IsEnabled)                         {                             ButtonVisitSite.Reset();                             var uri = Android.Net.Uri.Parse(&quot;http:\/\/www.dageron.com\/?cat=146&quot;);                             var intent = new Intent(Intent.ActionView, uri);                             Activity.StartActivity(intent);                         }                     }                 }                 else                 {                     if (GameProcess.IsLose)                     {                         \/\/ \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u043a\u0430 \u043c\u0435\u043d\u044e \u043f\u043e\u0440\u0430\u0436\u0435\u043d\u0438\u044f                         SpriteBatch.Draw(TextureBackgroundLose, new Vector2(AbsoluteX(0), AbsoluteY(0)),                                          new Rectangle(0, 0, TextureBackgroundLose.Width, TextureBackgroundLose.Height),                                          Color.White,                                          0, new Vector2(0, 0), 1*Dx, SpriteEffects.None, 0);                         SpriteBatch.DrawString(Font,                                                strRecordString +                                                GameProcess.MaxScore.ToString(CultureInfo.InvariantCulture) +                                                strRecordNotReached,                                                new Vector2(AbsoluteX(350), AbsoluteY(252)),                                                Color.White, 0, new Vector2(0, 0), 1*Dx, SpriteEffects.None, 0);                         if (Player.Lives == 5)                             SpriteBatch.DrawString(Font, strPacmanInjured,                                                    new Vector2(AbsoluteX(258), AbsoluteY(278)),                                                    Color.White, 0, new Vector2(0, 0), 1.2f*Dx, SpriteEffects.None, 0);                         \/\/ \u0441\u044b\u0433\u0440\u0430\u0442\u044c \u0437\u0430\u043d\u043e\u0432\u043e                         ButtonReplay.Process(SpriteBatch);                         ButtonReplay.Update(330, 355);                         if (ButtonReplay.IsEnabled)                         {                             ButtonReplay.Reset();                             GameProcess = new GameProcess();                             GameProcess.IsGame = true;                             Player = new Player(GameProcess);                         }                     }                     else                     {                         if (GameProcess.IsWin)                         {                             \/\/ \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u043a\u0430 \u043c\u0435\u043d\u044e \u043f\u043e\u0431\u0435\u0434\u044b                             SpriteBatch.Draw(TextureBackgroundWin, new Vector2(AbsoluteX(0), AbsoluteY(0)),                                              new Rectangle(0, 0, TextureBackgroundWin.Width, TextureBackgroundWin.Height),                                              Color.White,                                              0, new Vector2(0, 0), 1*Dx, SpriteEffects.None, 0);                             SpriteBatch.DrawString(Font,                                                    strNewRecord +                                                    GameProcess.Score.ToString(CultureInfo.InvariantCulture) + &quot;!&quot;,                                                    new Vector2(AbsoluteX(350), AbsoluteY(252)),                                                    Color.White, 0, new Vector2(0, 0), 1*Dx, SpriteEffects.None, 0);                             \/\/ \u043d\u0430\u0447\u0430\u0442\u044c \u043d\u043e\u0432\u0443\u044e \u0438\u0433\u0440\u0443                             ButtonStartNewGame.Process(SpriteBatch);                             ButtonStartNewGame.Update(320, 320);                             if (ButtonStartNewGame.IsEnabled)                             {                                 ButtonStartNewGame.Reset();                                 GameProcess = new GameProcess();                                 GameProcess.IsGame = true;                                 Player = new Player(GameProcess);                             }                             \/\/ \u0432\u044b\u0439\u0442\u0438                             ButtonExit.Process(SpriteBatch);                             ButtonExit.Update(332, 395);                             if (ButtonExit.IsEnabled)                             {                                 ButtonExit.Reset();                                 Exit();                             }                             \/\/ \u043f\u043e\u0441\u0435\u0442\u0438\u0442\u044c \u0441\u0430\u0439\u0442                             ButtonVisitSite.Process(SpriteBatch);                             ButtonVisitSite.Update(380, 180);                             if (ButtonVisitSite.IsEnabled)                             {                                 ButtonVisitSite.Reset();                                 var uri = Android.Net.Uri.Parse(&quot;http:\/\/www.dageron.com\/?cat=146&quot;);                                 var intent = new Intent(Intent.ActionView, uri);                                 Activity.StartActivity(intent);                             }                         }                         else                         {                             \/\/ \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u0430\u0442\u044c \u0441\u0442\u0430\u0440\u0442\u043e\u0432\u044b\u0439 \u044d\u043a\u0440\u0430\u043d \u0438\u0433\u0440\u044b                             SpriteBatch.Draw(TextureBackgroundLoad, new Vector2(AbsoluteX(0), AbsoluteY(0)),                                              new Rectangle(0, 0, TextureBackgroundLoad.Width,                                                            TextureBackgroundLoad.Height),                                              Color.White,                                              0, new Vector2(0, 0), 1*Dx, SpriteEffects.None, 0);                             \/\/ \u043d\u0430\u0447\u0430\u0442\u044c \u043d\u043e\u0432\u0443\u044e \u0438\u0433\u0440\u0443                             ButtonNewGame.Process(SpriteBatch);                             ButtonNewGame.Update(330, 455);                             if (ButtonNewGame.IsEnabled)                             {                                 ButtonNewGame.Reset();                                 GameProcess = new GameProcess();                                 GameProcess.IsGame = true;                                 Player = new Player(GameProcess);                             }                             \/\/ \u043f\u043e\u0441\u0435\u0442\u0438\u0442\u044c \u0441\u0430\u0439\u0442                             ButtonVisitSite.Process(SpriteBatch);                             ButtonVisitSite.Update(741, 475);                             if (ButtonVisitSite.IsEnabled)                             {                                 ButtonVisitSite.Reset();                                 var uri = Android.Net.Uri.Parse(&quot;http:\/\/www.dageron.com\/?cat=146&quot;);                                 var intent = new Intent(Intent.ActionView, uri);                                 Activity.StartActivity(intent);                             }                         }                     }                 }                 \/\/ \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u0430\u0442\u044c \u0440\u0430\u043c\u043a\u0438                 DrawRectangle(                     new Rectangle(-100, -100, CurrentWidth + 100 + 100, 100 + (int) deltaY),                     Color.Black);                 DrawRectangle(                     new Rectangle(-100, CurrentHeigth - (int) deltaY, CurrentWidth + 100 + 100,                                   (int) deltaY + (int) deltaY_1 + 100), Color.Black);             }             SpriteBatch.End(); \/\/ \u043f\u0440\u0435\u0440\u0432\u0430\u0442\u044c \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u043a\u0443 \u043d\u0430 \u0434\u0430\u043d\u043d\u043e\u043c \u044d\u0442\u0430\u043f\u0435             base.Draw(gameTime); \/\/ \u043e\u0431\u043d\u043e\u0432\u0438\u0442\u044c \u0441\u0447\u0435\u0442\u0447\u0438\u043a \u0438\u0433\u0440\u043e\u0432\u043e\u0433\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438         }     } } <\/code><\/pre>\n<\/div>\n<\/div>\n<p>  \u041e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043c\u0441\u044f \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u043d\u0430 \u043c\u0435\u0442\u043e\u0434\u0435 Update \u2014 \u043e\u043d \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u043e Draw \u0438 \u0443\u0434\u043e\u0431\u0435\u043d \u0434\u043b\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f, \u0432 \u0447\u0430\u0441\u0442\u043d\u043e\u0441\u0442\u0438, \u043a\u043d\u043e\u043f\u043a\u043e\u0439 \u00ab\u043d\u0430\u0437\u0430\u0434\u00bb \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0435 \u0438\u043b\u0438 \u043f\u043b\u0430\u043d\u0448\u0435\u0442\u0435 (\u043b\u044e\u0431\u043e\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 GamePad \u0432 \u043f\u0440\u0435\u0434\u0435\u043b\u0430\u0445 Draw \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u0442 \u043a \u0437\u0430\u0432\u0438\u0441\u0430\u043d\u0438\u044e).  <\/p>\n<pre><code class=\"cs\">        \/\/ \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u0438\u0433\u0440\u043e\u0432\u043e\u0433\u043e \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430 (\u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u0432 \u043a\u0430\u0436\u0434\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u0432\u0440\u0435\u043c\u0435\u043d\u0438)         protected override void Update(GameTime gameTime)         {             base.Update(gameTime); \/\/ \u043e\u0431\u043d\u043e\u0432\u0438\u0442\u044c \u0441\u0447\u0435\u0442\u0447\u0438\u043a \u0438\u0433\u0440\u043e\u0432\u043e\u0433\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438             \/\/ \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u043d\u0430\u0436\u0430\u0442\u0438\u044f \u043a\u043d\u043e\u043f\u043a\u0438 &quot;\u043d\u0430\u0437\u0430\u0434&quot;             if (GameProcess.IsGame)             {                 if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed) GameProcess.IsPause = true;             }             if (GameProcess.IsPause)             {                 if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed) GameProcess.IsPause = false;             }         } <\/code><\/pre>\n<p>\u0415\u0441\u043b\u0438 \u043d\u0430\u0436\u0430\u0442\u0430 \u043a\u043d\u043e\u043f\u043a\u0430 \u00ab\u043d\u0430\u0437\u0430\u0434\u00bb \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u0438\u0433\u0440\u044b, \u0442\u043e \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u043f\u0430\u0443\u0437\u0430, \u0435\u0441\u043b\u0438 \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u043f\u0430\u0443\u0437\u044b, \u0442\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0435\u043d\u0438\u0435 \u0432 \u0438\u0433\u0440\u0443.<\/p>\n<p>  \u0412\u0430\u0436\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0442\u043e\u0436\u0435 \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c\u0441\u044f, \u044d\u0442\u043e \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u0440\u0435\u043a\u043e\u0440\u0434\u043e\u0432. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u044f \u043d\u0430\u043f\u0438\u0441\u0430\u043b \u043a\u043b\u0430\u0441\u0441 Game.Score.cs, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0442\u0430\u043a\u0436\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e \u0432\u043e \u0432\u0441\u0435\u0445 \u0441\u0432\u043e\u0438\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u0430\u0445 \u0441 \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u043c\u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f\u043c\u0438 (\u043d\u0430 MonoGame \u043f\u043e\u0434\u043e\u0431\u043d\u044b\u0435 \u043f\u0440\u0438\u0435\u043c\u044b \u043e\u0447\u0435\u043d\u044c \u0443\u0434\u043e\u0431\u043d\u044b).   <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">Game.Score.cs<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"cs\">using System; using System.IO; using System.Runtime.Serialization.Formatters.Binary; using System.Collections.Generic;  namespace pacmangame { \t[Serializable] \tpublic class ClassScoreManager \t{ \t\t\/\/ \u043a\u043b\u0430\u0441\u0441 &quot;\u0441\u0447\u0435\u0442&quot; \t\t[Serializable] \t\tpublic class ScoreItem \t\t{ \t\t\tpublic int Value = 0; \t\t}  \t\tpublic ScoreItem Score;  \t\t\/\/ \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u0441\u0447\u0435\u0442 \u0438\u0437 \u0444\u0430\u0439\u043b\u0430 \t\tpublic ClassScoreManager ReadScores() \t\t{ \t\t\ttry \t\t\t{ \t\t\t\tvar sdCardPath = Android.OS.Environment.ExternalStorageDirectory.AbsolutePath; \t\t\t\tvar filePath = System.IO.Path.Combine(sdCardPath+&quot;\/Application\/Dageron Studio&quot;, &quot;dageron_angry_pacman.xml&quot;); \t\t\t\tFileStream fStream = new FileStream(filePath, FileMode.Open, FileAccess.Read); \t\t\t\tvar myBinaryFormatter = new BinaryFormatter(); \t\t\t\tvar mc = (ClassScoreManager) myBinaryFormatter.Deserialize(fStream); \t\t\t\tfStream.Close(); \t\t\t\treturn mc; \t\t\t} \t\t\tcatch (Exception e) \t\t\t{ \t\t\t\tScore = new ScoreItem (); \t\t\t\treturn this; \t\t\t} \t\t}  \t\t\/\/ \u0437\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0441\u0447\u0435\u0442 \u0432 \u0444\u0430\u0439\u043b \t\tpublic void WriteScores() \t\t{ \t\t\tvar sdCardPath = Android.OS.Environment.ExternalStorageDirectory.AbsolutePath; \t\t\tif (!Directory.Exists(sdCardPath +&quot;\/Application&quot;)) Directory.CreateDirectory (sdCardPath +&quot;\/Application&quot;); \t\t\tif (!Directory.Exists(sdCardPath +&quot;\/Application\/Dageron Studio&quot;)) Directory.CreateDirectory (sdCardPath +&quot;\/Application\/Dageron Studio&quot;); \t\t\tvar filePath = System.IO.Path.Combine(sdCardPath+&quot;\/Application\/Dageron Studio&quot;, &quot;dageron_angry_pacman.xml&quot;); \t\t\tFileStream fStream = new FileStream(filePath, FileMode.Create, FileAccess.Write); \t\t\tvar myBinaryFormatter = new BinaryFormatter(); \t\t\tmyBinaryFormatter.Serialize(fStream, this); \t\t\tfStream.Close(); \t\t} \t} } <\/code><\/pre>\n<\/div>\n<\/div>\n<p>  \u0414\u043b\u044f \u0441\u0447\u0438\u0442\u044b\u0432\u0430\u043d\u0438\u044f \u0438 \u0437\u0430\u043f\u0438\u0441\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0441\u0447\u0435\u0442\u0430 \u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u043a\u043b\u0430\u0441\u0441 \u0438 \u0441\u0435\u0440\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e. \u041a\u043e\u043d\u0435\u0447\u043d\u043e, \u0447\u0442\u043e\u0431\u044b \u0445\u0440\u0430\u043d\u0438\u0442\u044c \u043e\u0434\u043d\u043e \u043b\u0438\u0448\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u044d\u0442\u043e \u043d\u0435\u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u043e \u0438 \u0438\u0437\u0431\u044b\u0442\u043e\u0447\u043d\u043e \u0441 \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0442\u043e\u0447\u043a\u0438 \u0437\u0440\u0435\u043d\u0438\u044f. \u041d\u043e \u0447\u0442\u043e, \u0435\u0441\u043b\u0438 \u043d\u0443\u0436\u043d\u043e \u0441\u0440\u0430\u0437\u0443 \u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0432\u0435\u0441\u044c \u043f\u0435\u0440\u0435\u0447\u0435\u043d\u044c \u0440\u0435\u043a\u043e\u0440\u0434\u043e\u0432, \u0434\u0430 \u0435\u0449\u0435 \u0438 \u0438\u0437 \u0440\u0430\u0437\u043d\u044b\u0445 \u0440\u0435\u0436\u0438\u043c\u043e\u0432 \u0438\u0433\u0440\u044b? \u0421 \u044d\u0442\u0438\u043c \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u043b\u043e\u0441\u044c \u0441\u0442\u0430\u043b\u043a\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0435\u043e\u0434\u043d\u043e\u043a\u0440\u0430\u0442\u043d\u043e, \u0441\u0435\u0440\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u043e\u0447\u0435\u043d\u044c \u0432\u044b\u0440\u0443\u0447\u0430\u0435\u0442.<\/p>\n<p>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/getpro\/habr\/post_images\/27b\/dcb\/83f\/27bdcb83f27a79793b208a8ed827d90f.jpg\"\/><\/p>\n<h4>\u0417\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435<\/h4>\n<p>  \u0421\u043a\u0440\u0438\u043d\u0448\u043e\u0442\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0432\u0448\u0435\u0439\u0441\u044f \u0438\u0433\u0440\u044b <a href=\"http:\/\/dageron.com\/?p=5975\"><b>\u0442\u0443\u0442<\/b><\/a> \u0438 <a href=\"http:\/\/dageron.com\/?p=5975&amp;lang=en\"><b>\u0442\u0443\u0442<\/b><\/a>. \u0412 Google Play \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f\u043c \u0438\u0433\u0440\u0430 \u043d\u0440\u0430\u0432\u0438\u0442\u0441\u044f, \u0432\u043e \u0432\u0441\u044f\u043a\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043f\u043e\u043a\u0430 \ud83d\ude42<br \/>  <b><a href=\"https:\/\/github.com\/Dageron\/Angry-PacMan\">\u041f\u043e\u043b\u043d\u044b\u0435 \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0438 \u0441\u043c\u043e\u0442\u0440\u0438\u0442\u0435 \u043d\u0430 GitHub<\/a><\/b><\/p>\n<p>  \u0412 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0435 MonoGame \u043f\u0440\u043e\u0441\u0442 \u0438 \u0443\u0434\u043e\u0431\u0435\u043d \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0434\u0432\u0443\u0445\u043c\u0435\u0440\u043d\u044b\u0445 \u0438\u0433\u0440, \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043a\u043e\u043c \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0435 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u0438 \u043c\u043d\u043e\u0433\u0438\u0445 \u0442\u0438\u043f\u0438\u0447\u043d\u044b\u0445 \u0437\u0430\u0434\u0430\u0447 (\u0434\u0430\u0436\u0435 \u0442\u0443\u0442 \u0441 \u043d\u0438\u043c\u0438 \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u0441\u0442\u043e\u043b\u043a\u043d\u0443\u0442\u044c\u0441\u044f: \u043f\u043e\u0434\u0433\u0440\u0443\u0437\u043a\u0430 \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u0430, \u043a\u043d\u043e\u043f\u043a\u0438, \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u0440\u0435\u043a\u043e\u0440\u0434\u043e\u0432). \u0415\u0441\u043b\u0438 \u0432\u044b \u0440\u0430\u043d\u044c\u0448\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u043b\u0438 \u0441 XNA Game Studio, \u043c\u043d\u043e\u0433\u0438\u0435 \u0432\u0435\u0449\u0438 \u043f\u043e\u043a\u0430\u0436\u0443\u0442\u0441\u044f \u0437\u043d\u0430\u043a\u043e\u043c\u044b\u043c\u0438, \u043f\u0440\u043e\u0441\u0442\u044b\u043c\u0438 \u0438 \u043f\u043e\u043d\u044f\u0442\u043d\u044b\u043c\u0438, \u0443 \u0432\u0430\u0441 \u0435\u0441\u0442\u044c \u0432\u0441\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0434\u043b\u044f \u043a\u0440\u043e\u0441\u0441\u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0435\u043d\u043d\u043e\u0439 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0441\u0432\u043e\u0438\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432. \u0415\u0441\u043b\u0438 \u043d\u0435\u0442 (\u0438, \u0432 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u0438, \u0435\u0441\u043b\u0438 \u0445\u043e\u0442\u0438\u0442\u0435 \u0434\u0435\u043b\u0430\u0442\u044c \u0442\u0440\u0435\u0445\u043c\u0435\u0440\u043d\u044b\u0435 \u0438\u0433\u0440\u044b) \u2014 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u0442\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0434\u0440\u0443\u0433\u0438\u0445 \u0434\u0432\u0438\u0436\u043a\u043e\u0432, \u043a \u043f\u0440\u0438\u043c\u0435\u0440\u0443, Unity.<\/p>\n<p>  \u041d\u0430\u0434\u0435\u044e\u0441\u044c, \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u0437\u0430\u0431\u044b\u043b \ud83d\ude42<br \/>  \u0415\u0441\u043b\u0438 \u0431\u0443\u0434\u0443\u0442 \u0432\u043e\u043f\u0440\u043e\u0441\u044b \u2014 \u0441\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0439\u0442\u0435.      \t<\/p>\n<div class=\"clear\"><\/div>\n<\/p><\/div>\n<p> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"http:\/\/habrahabr.ru\/post\/229951\/\"> http:\/\/habrahabr.ru\/post\/229951\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div class=\"content html_format\">     \t<img decoding=\"async\" src=\"http:\/\/habrastorage.org\/getpro\/habr\/post_images\/518\/9c6\/531\/5189c6531df33ff8141c187095c765de.png\"\/><\/p>\n<p>  \u0421\u0435\u0433\u043e\u0434\u043d\u044f \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u043f\u0438\u0441\u0430\u0442\u044c \u043f\u0440\u043e\u0441\u0442\u0435\u043d\u044c\u043a\u0443\u044e \u0438\u0433\u0440\u0443 \u0434\u043b\u044f Android \u043d\u0430 \u044f\u0437\u044b\u043a\u0435 C# \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c Xamarin \u0438 MonoGame.   <\/p>\n<ul>\n<li><a href=\"https:\/\/xamarin.com\/\">Xamarin<\/a> \u2014 \u044d\u0442\u043e framework \u0434\u043b\u044f \u043a\u0440\u043e\u0441\u0441\u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0435\u043d\u043d\u043e\u0439 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043c\u043e\u0431\u0438\u043b\u044c\u043d\u044b\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 (iOS, Android, Windows Phone) \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u044f\u0437\u044b\u043a\u0430 C#. <\/li>\n<li><a href=\"http:\/\/www.monogame.net\/\">MonoGame<\/a> \u2014 \u044d\u0442\u043e \u043a\u0440\u043e\u0441\u0441\u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0435\u043d\u043d\u0430\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0438\u0433\u0440\u043e\u0432\u043e\u0433\u043e \u0434\u0432\u0438\u0436\u043a\u0430 XNA, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0430\u044f \u043f\u0438\u0441\u0430\u0442\u044c \u0438\u0433\u0440\u044b \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u0434 Windows \u0438 Windows Phone (\u043a\u0430\u043a \u0438\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u0437\u0430\u0434\u0443\u043c\u044b\u0432\u0430\u043b\u043e\u0441\u044c Microsoft), \u043d\u043e \u0438 \u043c\u0430\u0441\u0441\u0443 \u0434\u0440\u0443\u0433\u0438\u0445 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c, \u0432\u043a\u043b\u044e\u0447\u0430\u044f Android.<\/li>\n<\/ul>\n<p>  \u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0440\u0430\u0431\u043e\u0447\u0435\u0439 \u0438\u0434\u0435\u0438 \u0431\u044b\u043b\u043e \u0432\u044b\u0431\u0440\u0430\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0434\u0432\u0443\u043c\u0435\u0440\u043d\u043e\u0439 \u0438\u0433\u0440\u044b \u043f\u0440\u043e PacMan-\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439, \u043f\u0440\u0430\u0432\u0434\u0430, \u0431\u0443\u0434\u0435\u0442 \u043d\u0435 \u043f\u0440\u043e\u0441\u0442\u043e PacMan-\u043e\u043c, \u0430 &#8216;\u0441\u0435\u0440\u0434\u0438\u0442\u044b\u043c Pa\u0441Man-\u043e\u043c&#8217;, \u0442\u043e \u0435\u0441\u0442\u044c \u043f\u043e\u0435\u0434\u0430\u044e\u0449\u0438\u043c \u043f\u0440\u0438\u0432\u0438\u0434\u0435\u043d\u0438\u044f \u0432\u043c\u0435\u0441\u0442\u043e \u0436\u0435\u043b\u0442\u044b\u0445 \u0431\u043e\u043d\u0443\u0441\u043e\u0432 \ud83d\ude42 <\/p>\n<p>  \u0421\u0444\u043e\u0440\u043c\u0443\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u043f\u0440\u0438\u043d\u0446\u0438\u043f: PacMan \u0434\u043e\u043b\u0436\u0435\u043d \u0441\u044a\u0435\u0441\u0442\u044c \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0435 \u0447\u0438\u0441\u043b\u043e \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u0438\u0439, \u0443\u0432\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u044f\u0441\u044c \u043e\u0442 \u0445\u0430\u043e\u0442\u0438\u0447\u043d\u043e \u043b\u0435\u0442\u0430\u044e\u0449\u0438\u0445 \u0436\u0435\u043b\u0442\u044b\u0445 \u0448\u0435\u0441\u0442\u0435\u0440\u0435\u043d\u043e\u043a, \u043d\u0435 \u0437\u0430\u0434\u0435\u0432 \u043f\u0440\u0438 \u0442\u043e\u043c \u0433\u0440\u0430\u043d\u0438\u0446\u044b \u043f\u043e\u043b\u044f (\u043e\u043d\u043e \u043e\u0433\u043e\u0440\u043e\u0436\u0435\u043d\u043e \u043a\u043e\u043b\u044e\u0447\u0435\u0439 \u043f\u0440\u043e\u0432\u043e\u043b\u043e\u043a\u043e\u0439); \u0437\u0430 \u043a\u0430\u0436\u0434\u043e\u0435 \u00ab\u0441\u044a\u0435\u0434\u0435\u043d\u043d\u043e\u0435\u00bb \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u043d\u0430\u0447\u0438\u0441\u043b\u044f\u0435\u0442\u0441\u044f \u043e\u0434\u043d\u043e \u043e\u0447\u043a\u043e, \u0437\u0430 \u043a\u0430\u0436\u0434\u043e\u0435 \u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u0448\u0435\u0441\u0442\u0435\u0440\u0435\u043d\u043a\u043e\u0439 \u2014 \u0441\u043d\u0438\u043c\u0430\u0435\u0442\u0441\u044f \u043e\u0434\u043d\u0430 \u0436\u0438\u0437\u043d\u044c (\u0438\u0437 \u043f\u044f\u0442\u0438), \u0437\u0430 \u043f\u0435\u0440\u0435\u0441\u0435\u0447\u0435\u043d\u0438\u0435 \u0433\u0440\u0430\u043d\u0438\u0446\u044b \u043f\u043e\u043b\u044f \u2014 \u0441\u0440\u0430\u0437\u0443 \u0432\u0441\u0435 \u0436\u0438\u0437\u043d\u0438.<\/p>\n<p>  \u0418\u0433\u0440\u0430 \u0431\u0443\u0434\u0435\u0442 \u043d\u0430 \u0434\u0432\u0443\u0445 \u044f\u0437\u044b\u043a\u0430\u0445: \u0440\u0443\u0441\u0441\u043a\u043e\u043c \u0438 \u0430\u043d\u0433\u043b\u0438\u0439\u0441\u043a\u043e\u043c. \u0414\u043e\u043b\u0436\u043d\u043e \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0438\u0433\u0440\u043e\u0432\u043e\u0435 \u043c\u0435\u043d\u044e \u0438 \u0434\u0440\u0443\u0436\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u0434\u043b\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441.<\/p>\n<p>  \u041f\u043e\u0434 \u043a\u0430\u0442\u043e\u043c \u043c\u043d\u043e\u0433\u043e \u0441\u043a\u0440\u0438\u043d\u0448\u043e\u0442\u043e\u0432, \u0441\u0445\u0435\u043c \u0438 \u043a\u043e\u0434\u0430) \u0412 \u043a\u043e\u043d\u0446\u0435 \u0443\u0440\u043e\u043a\u0430 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u0430 \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 GitHub \u0441 \u043f\u043e\u043b\u043d\u044b\u043c\u0438 \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0430\u043c\u0438 \u0438\u0433\u0440\u044b.  <\/p>\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-229951","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/229951","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=229951"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/229951\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=229951"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=229951"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=229951"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}