{"id":4954,"date":"2021-01-14T17:14:22","date_gmt":"2021-01-14T09:14:22","guid":{"rendered":"https:\/\/damogame.cn\/wordpress\/?p=4954"},"modified":"2021-01-14T17:14:22","modified_gmt":"2021-01-14T09:14:22","slug":"%e6%89%8b%e6%8a%8a%e6%89%8b%e6%95%99%e4%bd%a0%e7%94%a8python%e5%86%99%e6%b8%b8%e6%88%8f","status":"publish","type":"post","link":"https:\/\/i007.cc\/wordpress\/archives\/4954","title":{"rendered":"\u624b\u628a\u624b\u6559\u4f60\u7528python\u5199\u6e38\u620f"},"content":{"rendered":"<div class=\"article-header-box\">\n<div class=\"article-header\">\n<div class=\"article-title-box\">\n<p id=\"articleContentId\" class=\"title-article\"><a href=\"https:\/\/blog.csdn.net\/u010665216\/article\/details\/79086160\">\u539f\u6587\u5730\u5740<\/a><\/p>\n<\/div>\n<div class=\"article-info-box\">\n<div class=\"article-bar-top\"><img decoding=\"async\" class=\"article-type-img\" src=\"https:\/\/csdnimg.cn\/release\/blogv2\/dist\/pc\/img\/original.png\" alt=\"\" \/><\/p>\n<div class=\"bar-content\"><a class=\"follow-nickName \" href=\"https:\/\/blog.csdn.net\/u010665216\" target=\"_blank\" rel=\"noopener\">OraYang<\/a>\u00a0<span class=\"time\">2018-01-17 21:41:10<\/span>\u00a0<img decoding=\"async\" class=\"article-read-img article-heard-img\" src=\"https:\/\/csdnimg.cn\/release\/blogv2\/dist\/pc\/img\/articleReadEyes.png\" alt=\"\" \/>\u00a0<span class=\"read-count\">104482<\/span>\u00a0<a id=\"blog_detail_zk_collection\" class=\"un-collection\" data-report-click=\"{&quot;mod&quot;:&quot;popu_823&quot;,&quot;spm&quot;:&quot;1001.2101.3001.4232&quot;,&quot;ab&quot;:&quot;new&quot;}\"><\/a><img decoding=\"async\" class=\"article-collect-img article-heard-img un-collect-status isdefault\" src=\"https:\/\/csdnimg.cn\/release\/blogv2\/dist\/pc\/img\/tobarCollect.png\" alt=\"\" \/>\u00a0<span class=\"name\">\u6536\u85cf<\/span>\u00a0<span class=\"get-collection\">212<\/span><\/div>\n<\/div>\n<div class=\"blog-tags-box\">\n<div class=\"tags-box artic-tag-box\"><span class=\"label\">\u5206\u7c7b\u4e13\u680f\uff1a<\/span>\u00a0<a class=\"tag-link\" href=\"https:\/\/blog.csdn.net\/u010665216\/category_7408021.html\" target=\"_blank\" rel=\"noopener\">Python_game<\/a>\u00a0<a class=\"tag-link\" href=\"https:\/\/blog.csdn.net\/u010665216\/category_9270763.html\" target=\"_blank\" rel=\"noopener\">python\u79d1\u5b66\u8ba1\u7b97\u3001\u6e38\u620f\u5f00\u53d1\u3001\u540e\u53f0\u5f00\u53d1<\/a>\u00a0<span class=\"label\">\u6587\u7ae0\u6807\u7b7e\uff1a<\/span>\u00a0<a class=\"tag-link\" href=\"https:\/\/www.csdn.net\/tags\/MtjaQg4sNDk0LWJsb2cO0O0O.html\" target=\"_blank\" rel=\"noopener\" data-report-click=\"{&quot;mod&quot;:&quot;popu_626&quot;,&quot;spm&quot;:&quot;1001.2101.3001.4223&quot;,&quot;strategy&quot;:&quot;python&quot;,&quot;ab&quot;:&quot;new&quot;}\">python<\/a>\u00a0<a class=\"tag-link\" href=\"https:\/\/so.csdn.net\/so\/search\/s.do?q=game&amp;t=blog&amp;o=vip&amp;s=&amp;l=&amp;f=&amp;viparticle=\" target=\"_blank\" rel=\"noopener\" data-report-click=\"{&quot;mod&quot;:&quot;popu_626&quot;,&quot;spm&quot;:&quot;1001.2101.3001.4223&quot;,&quot;strategy&quot;:&quot;game&quot;,&quot;ab&quot;:&quot;new&quot;}\">game<\/a><\/div>\n<\/div>\n<div class=\"operating\"><a class=\"href-article-edit slide-toggle\">\u7248\u6743<\/a><\/div>\n<\/div>\n<\/div>\n<\/div>\n<article class=\"baidu_pl\">\n<div id=\"article_content\" class=\"article_content clearfix\">\n<div id=\"content_views\" class=\"markdown_views\">\n<h1 id=\"\u5f15\u8a00\"><a name=\"t0\"><\/a><a name=\"t0\"><\/a>\u5f15\u8a00<\/h1>\n<p>\u6700\u8fd1python\u8bed\u8a00\u5927\u706b\uff0c\u9664\u4e86\u5728\u79d1\u5b66\u8ba1\u7b97\u9886\u57dfpython\u6709\u7528\u6b66\u4e4b\u5730\u4e4b\u5916\uff0c\u5728\u6e38\u620f\u3001\u540e\u53f0\u7b49\u65b9\u9762\uff0cpython\u4e5f\u5927\u653e\u5f02\u5f69\uff0c\u672c\u7bc7\u535a\u6587\u5c06\u6309\u7167\u6b63\u89c4\u7684\u9879\u76ee\u5f00\u53d1\u6d41\u7a0b\uff0c\u624b\u628a\u624b\u6559\u5927\u5bb6\u5199\u4e2apython\u5c0f\u6e38\u620f,\u9879\u76ee\u6765\u81ea\u300aPython\u7f16\u7a0b\u4ece\u5165\u95e8\u5230\u5b9e\u8df5\u300b\uff08\u672c\u6587\u5c06\u539f\u9879\u76ee\u4e2d\u7684\u90e8\u5206\u9519\u8bef\u8fdb\u884c\u4fee\u6539\u5b8c\u5584\uff0cPS:\u5f3a\u70c8\u63a8\u8350\u8fd9\u672c\u4e66\uff0c\u771f\u7684\u5f88\u8d5e\uff09\uff0c\u6765\u611f\u53d7\u4e0b\u5176\u4e2d\u7684\u6709\u8da3\u4e4b\u5904\u3002\u672c\u6b21\u5f00\u53d1\u7684\u6e38\u620f\u53eb\u505aalien invasion\u3002<\/p>\n<h1 id=\"\u5b89\u88c5pygame\u5e76\u521b\u5efa\u80fd\u5de6\u53f3\u79fb\u52a8\u7684\u98de\u8239\"><a name=\"t1\"><\/a><a name=\"t1\"><\/a>\u5b89\u88c5pygame\u5e76\u521b\u5efa\u80fd\u5de6\u53f3\u79fb\u52a8\u7684\u98de\u8239<\/h1>\n<h2 id=\"\u5b89\u88c5pygame\"><a name=\"t2\"><\/a><a name=\"t2\"><\/a>\u5b89\u88c5pygame<\/h2>\n<p>\u672c\u4eba\u7535\u8111\u662fwindows 10\u3001python3.6\uff0cpygame\u4e0b\u8f7d\u5730\u5740\uff1a<a href=\"https:\/\/pypi.python.org\/pypi\/Pygame\/1.9.3\">\u4f20\u9001\u95e8<\/a><br \/>\n\u8bf7\u81ea\u884c\u4e0b\u8f7d\u5bf9\u5e94python\u7248\u672c\u7684pygame<br \/>\n\u8fd0\u884c\u4ee5\u4e0b\u547d\u4ee4<\/p>\n<pre class=\"prettyprint\"><code class=\"hljs ruby has-numbering\"><span class=\"hljs-variable\">$ <\/span>pip install wheel\r\n<span class=\"hljs-variable\">$ <\/span>pip install pygame\u2011<span class=\"hljs-number\">1.9<\/span>.<span class=\"hljs-number\">3<\/span>\u2011cp36\u2011cp36m\u2011win_amd64.whl<\/code><\/pre>\n<h2 id=\"\u521b\u5efapygame\u7a97\u53e3\u53ca\u54cd\u5e94\u7528\u6237\u8f93\u5165\"><a name=\"t3\"><\/a><a name=\"t3\"><\/a>\u521b\u5efaPygame\u7a97\u53e3\u53ca\u54cd\u5e94\u7528\u6237\u8f93\u5165<\/h2>\n<p>\u65b0\u5efa\u4e00\u4e2a\u6587\u4ef6\u5939alien_invasion\uff0c\u5e76\u5728\u6587\u4ef6\u5939\u4e2d\u65b0\u5efaalien_invasion.py\u6587\u4ef6\uff0c\u8f93\u5165\u5982\u4e0b\u4ee3\u7801\u3002<\/p>\n<pre class=\"prettyprint\"><code class=\"language-python hljs  has-numbering\"><span class=\"hljs-keyword\">import<\/span> sys\r\n<span class=\"hljs-keyword\">import<\/span> pygame\r\n<span class=\"hljs-function\"><span class=\"hljs-keyword\">def<\/span> <span class=\"hljs-title\">run_game<\/span><span class=\"hljs-params\">()<\/span>:<\/span>\r\n    <span class=\"hljs-comment\">#initialize game and create a dispaly object<\/span>\r\n    pygame.init()\r\n    screen = pygame.display.set_mode((<span class=\"hljs-number\">1200<\/span>,<span class=\"hljs-number\">800<\/span>))\r\n    pygame.display.set_caption(<span class=\"hljs-string\">\"Alien Invasion\"<\/span>)\r\n    <span class=\"hljs-comment\"># set backgroud color<\/span>\r\n    bg_color = (<span class=\"hljs-number\">230<\/span>,<span class=\"hljs-number\">230<\/span>,<span class=\"hljs-number\">230<\/span>)\r\n\r\n    <span class=\"hljs-comment\"># game loop<\/span>\r\n    <span class=\"hljs-keyword\">while<\/span> <span class=\"hljs-keyword\">True<\/span>:\r\n        <span class=\"hljs-comment\"># supervise keyboard and mouse item<\/span>\r\n        <span class=\"hljs-keyword\">for<\/span> event <span class=\"hljs-keyword\">in<\/span> pygame.event.get():\r\n            <span class=\"hljs-keyword\">if<\/span> event.type == pygame.QUIT:\r\n                sys.exit()\r\n        <span class=\"hljs-comment\"># fill color<\/span>\r\n        screen.fill(bg_color)\r\n        <span class=\"hljs-comment\"># visualiaze the window<\/span>\r\n        pygame.display.flip()\r\nrun_game()<\/code><\/pre>\n<p>\u8fd0\u884c\u4e0a\u8ff0\u4ee3\u7801\uff0c\u6211\u4eec\u53ef\u4ee5\u5f97\u5230\u4e00\u4e2a\u7070\u8272\u754c\u9762\u7684\u7a97\u53e3\uff1a<\/p>\n<pre class=\"prettyprint\"><code class=\"hljs ruby has-numbering\"><span class=\"hljs-variable\">$ <\/span>python alien_invasion.py<\/code><\/pre>\n<p><img decoding=\"async\" title=\"\" src=\"https:\/\/img-blog.csdn.net\/20180117150103771?watermark\/2\/text\/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMDY2NTIxNg==\/font\/5a6L5L2T\/fontsize\/400\/fill\/I0JBQkFCMA==\/dissolve\/70\/gravity\/SouthEast\" alt=\"\u8fd9\u91cc\u5199\u56fe\u7247\u63cf\u8ff0\" \/><\/p>\n<h2 id=\"\u521b\u5efa\u8bbe\u7f6e\u7c7b\"><a name=\"t4\"><\/a><a name=\"t4\"><\/a>\u521b\u5efa\u8bbe\u7f6e\u7c7b<\/h2>\n<p>\u4e3a\u4e86\u5728\u5199\u6e38\u620f\u7684\u8fc7\u7a0b\u4e2d\u80fd\u4fbf\u6377\u5730\u521b\u5efa\u4e00\u4e9b\u65b0\u529f\u80fd\uff0c\u4e0b\u9762\u989d\u5916\u7f16\u5199\u4e00\u4e2asettings\u6a21\u5757\uff0c\u5176\u4e2d\u5305\u542b\u4e00\u4e2aSettings\u7c7b\uff0c\u7528\u4e8e\u5c06\u6240\u6709\u8bbe\u7f6e\u5b58\u50a8\u5728\u4e00\u4e2a\u5730\u65b9\u3002\u8fd9\u6837\u5728\u4ee5\u540e\u9879\u76ee\u589e\u5927\u65f6\u4fee\u6539\u6e38\u620f\u7684\u5916\u89c2\u5c31\u66f4\u52a0\u5bb9\u6613\u3002<br \/>\n\u6211\u4eec\u9996\u5148\u5c06alien_invasion.py\u4e2d\u7684\u663e\u793a\u5c4f\u5927\u5c0f\u53ca\u663e\u793a\u5c4f\u989c\u8272\u8fdb\u884c\u4fee\u6539\u3002<br \/>\n\u9996\u5148\u5728alien_invasion\u6587\u4ef6\u5939\u4e0b\u65b0\u5efapython\u6587\u4ef6settings.py\uff0c\u5e76\u5411\u5176\u4e2d\u6dfb\u52a0\u5982\u4e0b\u4ee3\u7801\uff1a<\/p>\n<pre class=\"prettyprint\"><code class=\"language-python hljs  has-numbering\"><span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">Settings<\/span><span class=\"hljs-params\">(object)<\/span>:<\/span>\r\n    <span class=\"hljs-string\">\"\"\"docstring for Settings\"\"\"<\/span>\r\n    <span class=\"hljs-function\"><span class=\"hljs-keyword\">def<\/span> <span class=\"hljs-title\">__init__<\/span><span class=\"hljs-params\">(self)<\/span>:<\/span>\r\n        <span class=\"hljs-comment\"># initialize setting of game<\/span>\r\n\r\n        <span class=\"hljs-comment\"># screen setting<\/span>\r\n        self.screen_width = <span class=\"hljs-number\">1200<\/span>\r\n        self.screen_height = <span class=\"hljs-number\">800<\/span>\r\n        self.bg_color = (<span class=\"hljs-number\">230<\/span>,<span class=\"hljs-number\">230<\/span>,<span class=\"hljs-number\">230<\/span>)<\/code><\/pre>\n<p>\u7136\u540e\u518dalien_invasion.py\u4e2d\u5bfc\u5165Settings\u7c7b\uff0c\u5e76\u4f7f\u7528\u76f8\u5173\u8bbe\u7f6e\uff0c\u4fee\u6539\u5982\u4e0b\uff1a<\/p>\n<pre class=\"prettyprint\"><code class=\"hljs python has-numbering\"><span class=\"hljs-keyword\">import<\/span> sys\r\n<span class=\"hljs-keyword\">import<\/span> pygame\r\n<span class=\"hljs-keyword\">from<\/span> settings <span class=\"hljs-keyword\">import<\/span> Settings\r\n<span class=\"hljs-function\"><span class=\"hljs-keyword\">def<\/span> <span class=\"hljs-title\">run_game<\/span><span class=\"hljs-params\">()<\/span>:<\/span>\r\n    <span class=\"hljs-comment\">#initialize game and create a dispaly object<\/span>\r\n    pygame.init()\r\n    ai_settings = Settings()\r\n    screen = pygame.display.set_mode((ai_settings.screen_width,ai_settings.screen_height))\r\n    pygame.display.set_caption(<span class=\"hljs-string\">\"Alien Invasion\"<\/span>)\r\n    <span class=\"hljs-comment\"># set backgroud color<\/span>\r\n    bg_color = (<span class=\"hljs-number\">230<\/span>,<span class=\"hljs-number\">230<\/span>,<span class=\"hljs-number\">230<\/span>)\r\n\r\n    <span class=\"hljs-comment\"># game loop<\/span>\r\n    <span class=\"hljs-keyword\">while<\/span> <span class=\"hljs-keyword\">True<\/span>:\r\n        <span class=\"hljs-comment\"># supervise keyboard and mouse item<\/span>\r\n        <span class=\"hljs-keyword\">for<\/span> event <span class=\"hljs-keyword\">in<\/span> pygame.event.get():\r\n            <span class=\"hljs-keyword\">if<\/span> event.type == pygame.QUIT:\r\n                sys.exit()\r\n        <span class=\"hljs-comment\"># fill color<\/span>\r\n        screen.fill(ai_settings.bg_color)\r\n        <span class=\"hljs-comment\"># visualiaze the window<\/span>\r\n        pygame.display.flip()\r\nrun_game()<\/code><\/pre>\n<h2 id=\"\u6dfb\u52a0\u98de\u8239\u56fe\u50cf\"><a name=\"t5\"><\/a><a name=\"t5\"><\/a>\u6dfb\u52a0\u98de\u8239\u56fe\u50cf<\/h2>\n<p>\u63a5\u4e0b\u6765\uff0c\u6211\u4eec\u9700\u8981\u5c06\u98de\u8239\u52a0\u5165\u6e38\u620f\u4e2d\u3002\u4e3a\u4e86\u5728\u5c4f\u5e55\u4e0a\u7ed8\u5236\u73a9\u5bb6\u7684\u98de\u8239\uff0c\u6211\u4eec\u5c06\u52a0\u8f7d\u4e00\u5e45\u56fe\u50cf\uff0c\u518d\u4f7f\u7528Pygame()\u65b9\u6cd5blit()\u7ed8\u5236\u5b83\u3002<br \/>\n\u5728\u6e38\u620f\u4e2d\u51e0\u4e4e\u53ef\u4ee5\u4f7f\u7528\u5404\u79cd\u7c7b\u578b\u7684\u56fe\u50cf\u6587\u4ef6\uff0c\u4f46\u662f\u4f7f\u7528\u4f4d\u56fe\uff08.bmp\uff09\u6587\u4ef6\u6700\u4e3a\u7b80\u5355\uff0c\u8fd9\u662f\u56e0\u4e3aPygame\u9ed8\u8ba4\u52a0\u8f7d\u4f4d\u56fe\u3002\u867d\u7136\u5176\u4ed6\u7c7b\u578b\u7684\u56fe\u50cf\u4e5f\u80fd\u52a0\u8f7d\uff0c\u4f46\u662f\u9700\u8981\u5b89\u88c5\u989d\u5916\u7684\u5e93\u3002\u6211\u4eec\u63a8\u8350\u53bb\u514d\u8d39\u7684\u56fe\u7247\u7d20\u6750\u7f51\u7ad9\u4e0a\u53bb\u627e\u56fe\u50cf\uff1a<a href=\"https:\/\/pixabay.com\/\">\u4f20\u9001\u95e8<\/a>\u3002\u6211\u4eec\u5728\u4e3b\u9879\u76ee\u6587\u4ef6\u5939\uff08alien_invasion\uff09\u4e2d\u65b0\u5efa\u4e00\u4e2a\u6587\u4ef6\u5939\u53ebimages\uff0c\u5c06\u5982\u4e0bbmp\u56fe\u7247\u653e\u5165\u5176\u4e2d\u3002<br \/>\n<img decoding=\"async\" title=\"\" src=\"https:\/\/img-blog.csdn.net\/20180117152751650?watermark\/2\/text\/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMDY2NTIxNg==\/font\/5a6L5L2T\/fontsize\/400\/fill\/I0JBQkFCMA==\/dissolve\/70\/gravity\/SouthEast\" alt=\"\u8fd9\u91cc\u5199\u56fe\u7247\u63cf\u8ff0\" \/><br \/>\n\u63a5\u4e0b\u6765\uff0c\u6211\u4eec\u521b\u5efa\u98de\u8239\u7c7bship.py:<\/p>\n<pre class=\"prettyprint\"><code class=\"language-python hljs  has-numbering\"><span class=\"hljs-keyword\">import<\/span> pygame\r\n<span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">Ship<\/span><span class=\"hljs-params\">()<\/span>:<\/span>\r\n\r\n    <span class=\"hljs-function\"><span class=\"hljs-keyword\">def<\/span> <span class=\"hljs-title\">__init__<\/span><span class=\"hljs-params\">(self,screen)<\/span>:<\/span>\r\n        <span class=\"hljs-comment\">#initialize spaceship and its location<\/span>\r\n        self.screen = screen\r\n\r\n        <span class=\"hljs-comment\"># load bmp image and get rectangle<\/span>\r\n        self.image = pygame.image.load(<span class=\"hljs-string\">'image\/ship.bmp'<\/span>)\r\n        self.rect = self.image.get_rect()\r\n        self.screen_rect = screen.get_rect()\r\n\r\n        <span class=\"hljs-comment\">#put spaceship on the bottom of window<\/span>\r\n        self.rect.centerx = self.screen_rect.centerx\r\n        self.rect.bottom = self.screen_rect.bottom\r\n\r\n    <span class=\"hljs-function\"><span class=\"hljs-keyword\">def<\/span> <span class=\"hljs-title\">blitme<\/span><span class=\"hljs-params\">(self)<\/span>:<\/span>\r\n        <span class=\"hljs-comment\">#buld the spaceship at the specific location<\/span>\r\n        self.screen.blit(self.image,self.rect)<\/code><\/pre>\n<p>\u6700\u540e\u6211\u4eec\u5728\u5c4f\u5e55\u4e0a\u7ed8\u5236\u98de\u8239\uff0c\u5373\u5728alien_invasion.py\u6587\u4ef6\u4e2d\u8c03\u7528blitme\u65b9\u6cd5\uff1a<\/p>\n<pre class=\"prettyprint\"><code class=\"language-python hljs  has-numbering\"><span class=\"hljs-keyword\">import<\/span> sys\r\n<span class=\"hljs-keyword\">import<\/span> pygame\r\n<span class=\"hljs-keyword\">from<\/span> settings <span class=\"hljs-keyword\">import<\/span> Settings\r\n<span class=\"hljs-keyword\">from<\/span> ship <span class=\"hljs-keyword\">import<\/span> Settings\r\n<span class=\"hljs-function\"><span class=\"hljs-keyword\">def<\/span> <span class=\"hljs-title\">run_game<\/span><span class=\"hljs-params\">()<\/span>:<\/span>\r\n    <span class=\"hljs-comment\">#initialize game and create a dispaly object<\/span>\r\n    pygame.init()\r\n    ai_settings = Settings()\r\n    screen = pygame.display.set_mode((ai_settings.screen_width,ai_settings.screen_height))\r\n    ship = Ship(screen)\r\n    pygame.display.set_caption(<span class=\"hljs-string\">\"Alien Invasion\"<\/span>)\r\n    <span class=\"hljs-comment\"># set backgroud color<\/span>\r\n    bg_color = (<span class=\"hljs-number\">230<\/span>,<span class=\"hljs-number\">230<\/span>,<span class=\"hljs-number\">230<\/span>)\r\n\r\n    <span class=\"hljs-comment\"># game loop<\/span>\r\n    <span class=\"hljs-keyword\">while<\/span> <span class=\"hljs-keyword\">True<\/span>:\r\n        <span class=\"hljs-comment\"># supervise keyboard and mouse item<\/span>\r\n        <span class=\"hljs-keyword\">for<\/span> event <span class=\"hljs-keyword\">in<\/span> pygame.event.get():\r\n            <span class=\"hljs-keyword\">if<\/span> event.type == pygame.QUIT:\r\n                sys.exit()\r\n        <span class=\"hljs-comment\"># fill color<\/span>\r\n        screen.fill(ai_settings.bg_color)\r\n        ship.blitme()\r\n        <span class=\"hljs-comment\"># visualiaze the window<\/span>\r\n        pygame.display.flip()\r\nrun_game()<\/code><\/pre>\n<h2 id=\"\u91cd\u6784\u6a21\u5757gamefunctions\"><a name=\"t6\"><\/a><a name=\"t6\"><\/a>\u91cd\u6784\uff1a\u6a21\u5757game_functions<\/h2>\n<p>\u5728\u5927\u578b\u9879\u76ee\u4e2d\uff0c\u7ecf\u5e38\u9700\u8981\u5728\u6dfb\u52a0\u65b0\u4ee3\u7801\u524d\u91cd\u6784\u65e2\u6709\u4ee3\u7801\u3002\u91cd\u6784\u7684\u76ee\u7684\u662f\u4e3a\u4e86\u7b80\u5316\u4ee3\u7801\u7684\u7ed3\u6784\uff0c\u4f7f\u5176\u66f4\u52a0\u5bb9\u6613\u6269\u5c55\u3002\u6211\u4eec\u5c06\u5b9e\u73b0\u4e00\u4e2agame_functions\u6a21\u5757\uff0c\u5b83\u5c06\u5b58\u50a8\u5927\u91cf\u8ba9\u6e38\u620fAlien invasion\u8fd0\u884c\u7684\u51fd\u6570\u3002\u901a\u8fc7\u521b\u5efa\u6a21\u5757game_functions\uff0c\u53ef\u907f\u514dalien_invasion.py\u592a\u957f\uff0c\u4f7f\u5176\u903b\u8f91\u66f4\u5bb9\u6613\u7406\u89e3\u3002<\/p>\n<h3 id=\"\u51fd\u6570checkevents\"><a name=\"t7\"><\/a><a name=\"t7\"><\/a>\u51fd\u6570check_events()<\/h3>\n<p>\u9996\u5148\u6211\u4eec\u5c06\u7ba1\u7406\u4e8b\u4ef6\u7684\u4ee3\u7801\u79fb\u5230\u4e00\u4e2a\u540d\u4e3acheck_events()\u7684\u51fd\u6570\u4e2d\uff0c\u76ee\u7684\u662f\u4e3a\u4e86\u9694\u79bb\u4e8b\u4ef6\u5faa\u73af<\/p>\n<pre class=\"prettyprint\"><code class=\"language-python hljs  has-numbering\"><span class=\"hljs-keyword\">import<\/span> sys\r\n<span class=\"hljs-keyword\">import<\/span> pygame\r\n\r\n<span class=\"hljs-function\"><span class=\"hljs-keyword\">def<\/span> <span class=\"hljs-title\">check_events<\/span><span class=\"hljs-params\">()<\/span>:<\/span>\r\n    <span class=\"hljs-comment\">#respond to  keyboard and mouse item<\/span>\r\n    <span class=\"hljs-keyword\">for<\/span> event <span class=\"hljs-keyword\">in<\/span> pygame.event.get():\r\n        <span class=\"hljs-keyword\">if<\/span> event.type == pygame.QUIT:\r\n            sys.exit()<\/code><\/pre>\n<p>\u7136\u540e\u6211\u4eec\u4fee\u6539alien_invasion.py\u4ee3\u7801\uff0c\u5bfc\u5165game_functions\u6a21\u5757\uff0c\u5e76\u5c06\u4e8b\u4ef6\u5faa\u73af\u66ff\u6362\u6210\u5bf9\u51fd\u6570check_events()\u7684\u8c03\u7528\uff1a<\/p>\n<pre class=\"prettyprint\"><code class=\"language-python hljs  has-numbering\"><span class=\"hljs-keyword\">import<\/span> sys\r\n<span class=\"hljs-keyword\">import<\/span> pygame\r\n<span class=\"hljs-keyword\">from<\/span> settings <span class=\"hljs-keyword\">import<\/span> Settings\r\n<span class=\"hljs-keyword\">from<\/span> ship <span class=\"hljs-keyword\">import<\/span> Ship\r\n<span class=\"hljs-keyword\">import<\/span> game_functions <span class=\"hljs-keyword\">as<\/span> gf\r\n<span class=\"hljs-function\"><span class=\"hljs-keyword\">def<\/span> <span class=\"hljs-title\">run_game<\/span><span class=\"hljs-params\">()<\/span>:<\/span>\r\n    <span class=\"hljs-comment\">#initialize game and create a dispaly object<\/span>\r\n    pygame.init()\r\n    ai_settings = Settings()\r\n    screen = pygame.display.set_mode((ai_settings.screen_width,ai_settings.screen_height))\r\n    ship = Ship(screen)\r\n    pygame.display.set_caption(<span class=\"hljs-string\">\"Alien Invasion\"<\/span>)\r\n    <span class=\"hljs-comment\"># set backgroud color<\/span>\r\n    bg_color = (<span class=\"hljs-number\">230<\/span>,<span class=\"hljs-number\">230<\/span>,<span class=\"hljs-number\">230<\/span>)\r\n\r\n    <span class=\"hljs-comment\"># game loop<\/span>\r\n    <span class=\"hljs-keyword\">while<\/span> <span class=\"hljs-keyword\">True<\/span>:\r\n        <span class=\"hljs-comment\"># supervise keyboard and mouse item<\/span>\r\n        gf.check_events()\r\n        <span class=\"hljs-comment\"># fill color<\/span>\r\n        screen.fill(ai_settings.bg_color)\r\n        ship.blitme()\r\n        <span class=\"hljs-comment\"># visualiaze the window<\/span>\r\n        pygame.display.flip()\r\nrun_game()<\/code><\/pre>\n<h3 id=\"\u51fd\u6570updatescreen\"><a name=\"t8\"><\/a><a name=\"t8\"><\/a>\u51fd\u6570update_screen()<\/h3>\n<p>\u5c06\u66f4\u65b0\u5c4f\u5e55\u7684\u4ee3\u7801\u79fb\u5230\u4e00\u4e2a\u540d\u4e3aupdate_screen()\u51fd\u6570\u4e2d\uff0c\u5e76\u5c06\u8fd9\u4e2a\u51fd\u6570\u653e\u5728\u6a21\u5757game_functions\u4e2d\uff1a<\/p>\n<pre class=\"prettyprint\"><code class=\"language-python hljs  has-numbering\"><span class=\"hljs-function\"><span class=\"hljs-keyword\">def<\/span> <span class=\"hljs-title\">update_screen<\/span><span class=\"hljs-params\">(ai_settings,screen,ship)<\/span>:<\/span>\r\n    <span class=\"hljs-comment\"># fill color<\/span>\r\n    screen.fill(ai_settings.bg_color)\r\n    ship.blitme()\r\n    <span class=\"hljs-comment\"># visualiaze the window<\/span>\r\n    pygame.display.flip()<\/code><\/pre>\n<p>\u5176\u4e2dalien_invasion\u4fee\u6539\u5982\u4e0b\uff1a<\/p>\n<pre class=\"prettyprint\"><code class=\"language-python hljs  has-numbering\"><span class=\"hljs-keyword\">import<\/span> sys\r\n<span class=\"hljs-keyword\">import<\/span> pygame\r\n<span class=\"hljs-keyword\">from<\/span> settings <span class=\"hljs-keyword\">import<\/span> Settings\r\n<span class=\"hljs-keyword\">from<\/span> ship <span class=\"hljs-keyword\">import<\/span> Ship\r\n<span class=\"hljs-keyword\">import<\/span> game_functions <span class=\"hljs-keyword\">as<\/span> gf\r\n<span class=\"hljs-function\"><span class=\"hljs-keyword\">def<\/span> <span class=\"hljs-title\">run_game<\/span><span class=\"hljs-params\">()<\/span>:<\/span>\r\n    <span class=\"hljs-comment\">#initialize game and create a dispaly object<\/span>\r\n    pygame.init()\r\n    ai_settings = Settings()\r\n    screen = pygame.display.set_mode((ai_settings.screen_width,ai_settings.screen_height))\r\n    ship = Ship(screen)\r\n    pygame.display.set_caption(<span class=\"hljs-string\">\"Alien Invasion\"<\/span>)\r\n    <span class=\"hljs-comment\"># set backgroud color<\/span>\r\n    bg_color = (<span class=\"hljs-number\">230<\/span>,<span class=\"hljs-number\">230<\/span>,<span class=\"hljs-number\">230<\/span>)\r\n\r\n    <span class=\"hljs-comment\"># game loop<\/span>\r\n    <span class=\"hljs-keyword\">while<\/span> <span class=\"hljs-keyword\">True<\/span>:\r\n        <span class=\"hljs-comment\"># supervise keyboard and mouse item<\/span>\r\n        gf.check_events()\r\n        gf.update_screen(ai_settings,screen,ship)\r\nrun_game()<\/code><\/pre>\n<p>\u4ece\u4e0a\u9762\u4e00\u5957\u6d41\u7a0b\u8d70\u4e0b\u6765\uff0c\u6211\u4eec\u53d1\u73b0\uff1a\u5728\u5b9e\u9645\u7684\u5f00\u53d1\u8fc7\u7a0b\u4e2d\uff0c\u6211\u4eec\u4e00\u5f00\u59cb\u5c06\u4ee3\u7801\u7f16\u5199\u5f97\u5c3d\u53ef\u80fd\u7684\u7b80\u5355\uff0c\u5e76\u5728\u9879\u76ee\u8d8a\u6765\u8d8a\u590d\u6742\u65f6\u8fdb\u884c\u91cd\u6784\u3002\u63a5\u4e0b\u6765\u6211\u4eec\u5f00\u59cb\u5904\u7406\u6e38\u620f\u7684\u52a8\u6001\u65b9\u9762\u3002<\/p>\n<h2 id=\"\u9a7e\u9a76\u98de\u8239\"><a name=\"t9\"><\/a><a name=\"t9\"><\/a>\u9a7e\u9a76\u98de\u8239<\/h2>\n<p>\u8fd9\u91cc\u6211\u4eec\u8981\u5b9e\u73b0\u7684\u5c31\u662f\u4f7f\u73a9\u5bb6\u901a\u8fc7\u5de6\u53f3\u7bad\u5934\u952e\u6765\u63a7\u5236\u98de\u8239\u7684\u5de6\u79fb\u4e0e\u53f3\u79fb\u3002<\/p>\n<h3 id=\"\u54cd\u5e94\u6309\u952e\"><a name=\"t10\"><\/a><a name=\"t10\"><\/a>\u54cd\u5e94\u6309\u952e<\/h3>\n<p>\u56e0\u4e3a\u5728pygame\u4e2d\uff0c\u6bcf\u6b21\u6309\u952e\u90fd\u88ab\u6ce8\u518c\u4e3aKEYDOWN\u4e8b\u4ef6\uff0c\u5728check_events()\u4e2d\uff0c\u6211\u4eec\u901a\u8fc7event.type\u68c0\u6d4b\u5230KEYDOWN\u4e8b\u4ef6\u540e\u8fd8\u9700\u8fdb\u4e00\u6b65\u5224\u65ad\u662f\u54ea\u4e2a\u6309\u952e\u3002\u4ee3\u7801\u5982\u4e0b\uff1a<\/p>\n<pre class=\"prettyprint\"><code class=\"language-python hljs  has-numbering\"><span class=\"hljs-function\"><span class=\"hljs-keyword\">def<\/span> <span class=\"hljs-title\">check_events<\/span><span class=\"hljs-params\">(ship)<\/span>:<\/span>\r\n    <span class=\"hljs-comment\">#respond to  keyboard and mouse item<\/span>\r\n    <span class=\"hljs-keyword\">for<\/span> event <span class=\"hljs-keyword\">in<\/span> pygame.event.get():\r\n        <span class=\"hljs-keyword\">if<\/span> event.type == pygame.QUIT:\r\n            sys.exit()\r\n        <span class=\"hljs-keyword\">elif<\/span> event.type == pygame.KEYDOWN:\r\n            <span class=\"hljs-keyword\">if<\/span> event.key == pygame.K_RIGHT:\r\n                <span class=\"hljs-comment\">#move right<\/span>\r\n                ship.rect.centerx +=<span class=\"hljs-number\">1<\/span><\/code><\/pre>\n<h3 id=\"\u5141\u8bb8\u4e0d\u65ad\u79fb\u52a8\"><a name=\"t11\"><\/a><a name=\"t11\"><\/a>\u5141\u8bb8\u4e0d\u65ad\u79fb\u52a8<\/h3>\n<p>\u73a9\u5bb6\u6309\u4f4f\u53f3\u7bad\u5934\u4e0d\u52a8\u65f6\uff0c\u6211\u4eec\u5e0c\u671b\u98de\u8239\u80fd\u4e0d\u65ad\u5730\u79fb\u52a8\uff0c\u77e5\u9053\u73a9\u5bb6\u677e\u5f00\u4e3a\u6b62\u3002\u8fd9\u91cc\u6211\u4eec\u901a\u8fc7KETUO\u4e8b\u4ef6\u6765\u5224\u65ad\u3002\u56e0\u6b64\u6211\u4eec\u8bbe\u7f6e\u4e00\u4e2a\u6807\u5fd7\u4f4dmoving_right\u6765\u5b9e\u73b0\u6301\u7eed\u79fb\u52a8\u3002\u539f\u7406\u5982\u4e0b\uff1a<\/p>\n<blockquote><p>\u98de\u8239\u4e0d\u52a8\u65f6\uff0c\u6807\u5fd7moving_right\u5c06\u4e3afalse\u3002\u73a9\u5bb6\u6309\u4e0b\u53f3\u7bad\u5934\u65f6\uff0c\u6211\u4eec\u5c06\u8fd9\u4e2a\u6807\u5fd7\u8bbe\u7f6e\u4e3aTrue;\u73a9\u5bb6\u677e\u5f00\u65f6\uff0c\u6211\u4eec\u5c06\u6807\u5fd7\u91cd\u65b0\u8bbe\u7f6e\u6210False\u3002<\/p><\/blockquote>\n<p>\u8fd9\u4e2a\u79fb\u52a8\u5c5e\u6027\u662f\u98de\u8239\u5c5e\u6027\u7684\u4e00\u79cd\uff0c\u6211\u4eec\u7528ship\u7c7b\u6765\u63a7\u5236\uff0c\u56e0\u6b64\u6211\u4eec\u7ed9\u8fd9\u4e2a\u7c7b\u589e\u52a0\u4e00\u4e2a\u5c5e\u6027\u540d\u79f0\u53eb\uff0cmoving_right\u4ee5\u53ca\u4e00\u4e2aupdate()\u65b9\u6cd5\u6765\u68c0\u6d4b\u6807\u5fd7moving_right\u7684\u72b6\u6001\u3002<br \/>\nship<\/p>\n<pre class=\"prettyprint\"><code class=\"language-python hljs  has-numbering\">        self.moving_right = <span class=\"hljs-keyword\">False<\/span>\r\n    <span class=\"hljs-function\"><span class=\"hljs-keyword\">def<\/span> <span class=\"hljs-title\">update<\/span><span class=\"hljs-params\">(self)<\/span>:<\/span>\r\n        <span class=\"hljs-keyword\">if<\/span> self.moving_right:\r\n            self.rect.centerx +=<span class=\"hljs-number\">1<\/span><\/code><\/pre>\n<p>game_functions<\/p>\n<pre class=\"prettyprint\"><code class=\"language-python hljs  has-numbering\">        <span class=\"hljs-keyword\">elif<\/span> event.type == pygame.KEYDOWN:\r\n            <span class=\"hljs-keyword\">if<\/span> event.key == pygame.K_RIGHT:\r\n                <span class=\"hljs-comment\">#move right<\/span>\r\n                ship.moving_right = <span class=\"hljs-keyword\">True<\/span>\r\n        <span class=\"hljs-keyword\">elif<\/span> event.type == pygame.KEYUP:\r\n            <span class=\"hljs-keyword\">if<\/span> event.key = pygame.K_RIGHT:\r\n                ship.moving_right = <span class=\"hljs-keyword\">False<\/span><\/code><\/pre>\n<p>\u6700\u540e\u5728alien_invasion\u4e2d\u8c03\u7528update()\u65b9\u6cd5<\/p>\n<pre class=\"prettyprint\"><code class=\"language-python hljs  has-numbering\">    <span class=\"hljs-keyword\">while<\/span> <span class=\"hljs-keyword\">True<\/span>:\r\n        <span class=\"hljs-comment\"># supervise keyboard and mouse item<\/span>\r\n        gf.check_events(ship)\r\n        ship.update()<\/code><\/pre>\n<h3 id=\"\u5de6\u53f3\u79fb\u52a8\"><a name=\"t12\"><\/a><a name=\"t12\"><\/a>\u5de6\u53f3\u79fb\u52a8<\/h3>\n<p>\u524d\u9762\u6211\u4eec\u5b9e\u73b0\u4e86\u5411\u53f3\u79fb\u52a8\uff0c\u63a5\u4e0b\u6765\u5b9e\u73b0\u5411\u5de6\u79fb\u52a8\uff0c\u903b\u8f91\u7c7b\u4f3c\uff0c\u4ee3\u7801\u5c31\u4e0d\u8d34\u4e86\u3002<\/p>\n<h3 id=\"\u8c03\u6574\u98de\u8239\u7684\u901f\u5ea6\"><a name=\"t13\"><\/a><a name=\"t13\"><\/a>\u8c03\u6574\u98de\u8239\u7684\u901f\u5ea6<\/h3>\n<p>\u5f53\u524d\uff0c\u6bcf\u6b21\u6267\u884cwhile\u5faa\u73af\u65f6\uff0c\u98de\u8239\u6700\u591a\u79fb\u52a8\u4e00\u4e2a\u50cf\u7d20\uff0c\u6211\u4eec\u53ef\u4ee5\u5728Settings\u4e2d\u6dfb\u52a0ship_speed_factor\uff0c\u7528\u4e8e\u63a7\u5236\u98de\u8239\u7684\u901f\u5ea6\u3002\u6211\u4eec\u5c06\u6839\u636e\u8fd9\u4e2a\u5c5e\u6027\u51b3\u5b9a\u98de\u8239\u6bcf\u6b21\u5faa\u73af\u65f6\u6700\u591a\u79fb\u52a8\u591a\u5c11\u8ddd\u79bb\u3002<br \/>\nSettings\uff1a<\/p>\n<pre class=\"prettyprint\"><code class=\"language-python hljs  has-numbering\"><span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">Settings<\/span><span class=\"hljs-params\">(object)<\/span>:<\/span>\r\n    <span class=\"hljs-string\">\"\"\"docstring for Settings\"\"\"<\/span>\r\n    <span class=\"hljs-function\"><span class=\"hljs-keyword\">def<\/span> <span class=\"hljs-title\">__init__<\/span><span class=\"hljs-params\">(self)<\/span>:<\/span>\r\n        <span class=\"hljs-comment\"># initialize setting of game<\/span>\r\n\r\n        <span class=\"hljs-comment\"># screen setting<\/span>\r\n        self.screen_width = <span class=\"hljs-number\">1200<\/span>\r\n        self.screen_height = <span class=\"hljs-number\">800<\/span>\r\n        self.bg_color = (<span class=\"hljs-number\">230<\/span>,<span class=\"hljs-number\">230<\/span>,<span class=\"hljs-number\">230<\/span>)\r\n        self.ship_speed_factor = <span class=\"hljs-number\">1.5<\/span><\/code><\/pre>\n<p>Ship\uff1a<\/p>\n<pre class=\"prettyprint\"><code class=\"language-python hljs  has-numbering\"><span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">Ship<\/span><span class=\"hljs-params\">()<\/span>:<\/span>\r\n\r\n    <span class=\"hljs-function\"><span class=\"hljs-keyword\">def<\/span> <span class=\"hljs-title\">__init__<\/span><span class=\"hljs-params\">(self,ai_settings,screen)<\/span>:<\/span>\r\n        <span class=\"hljs-comment\">#initialize spaceship and its location<\/span>\r\n        self.screen = screen\r\n        self.ai_settings = ai_settings<\/code><\/pre>\n<h4 id=\"\u9650\u5236\u98de\u8239\u7684\u6d3b\u52a8\u8303\u56f4\">\u9650\u5236\u98de\u8239\u7684\u6d3b\u52a8\u8303\u56f4<\/h4>\n<p>\u5982\u679c\u73a9\u5bb6\u6309\u4f4f\u7bad\u5934\u7684\u65f6\u95f4\u8fc7\u957f\uff0c\u98de\u8239\u5c31\u4f1a\u6d88\u5931\uff0c\u90a3\u4e48\u5982\u4f55\u4f7f\u98de\u8239\u62b5\u8fbe\u5c4f\u5e55\u8fb9\u7f18\u65f6\u505c\u6b62\u79fb\u52a8\uff1f\u8fd9\u91cc\u6211\u4eec\u53ea\u9700\u8981\u4fee\u6539Ship\u7c7b\u4e2d\u7684update\u65b9\u6cd5\uff0c\u589e\u52a0\u4e00\u4e2a\u903b\u8f91\u5224\u65ad\u3002<\/p>\n<h3 id=\"\u91cd\u6784\"><a name=\"t14\"><\/a><a name=\"t14\"><\/a>\u91cd\u6784<\/h3>\n<p>\u8fd9\u91cc\u6211\u4eec\u4e3b\u8981\u8bb2check_events()\u51fd\u6570\u8fdb\u884c\u91cd\u6784\uff0c\u5c06\u5176\u4e2d\u90e8\u5206\u4ee3\u7801\u5206\u6210\u4e24\u90e8\u5206\uff0c\u4e00\u90e8\u5206\u5904\u7406KEYDOWN\u4e8b\u4ef6\uff0c\u4e00\u90e8\u5206\u5904\u7406KEYUP\u4e8b\u4ef6\u3002<br \/>\ngame_functions:<\/p>\n<pre class=\"prettyprint\"><code class=\"language-python hljs  has-numbering\"><span class=\"hljs-function\"><span class=\"hljs-keyword\">def<\/span> <span class=\"hljs-title\">check_keydown_events<\/span><span class=\"hljs-params\">(event,ship)<\/span>:<\/span>\r\n    <span class=\"hljs-keyword\">if<\/span> event.key == pygame.K_RIGHT:\r\n        <span class=\"hljs-comment\">#move right<\/span>\r\n        ship.moving_right = <span class=\"hljs-keyword\">True<\/span>\r\n    <span class=\"hljs-keyword\">elif<\/span> event.key == pygame.K_LEFT:\r\n        <span class=\"hljs-comment\">#move right<\/span>\r\n        ship.moving_left = <span class=\"hljs-keyword\">True<\/span> \r\n<span class=\"hljs-function\"><span class=\"hljs-keyword\">def<\/span> <span class=\"hljs-title\">check_keyup_events<\/span><span class=\"hljs-params\">(event,ship)<\/span>:<\/span>\r\n    <span class=\"hljs-keyword\">if<\/span> event.key == pygame.K_RIGHT:\r\n        ship.moving_right = <span class=\"hljs-keyword\">False<\/span>\r\n    <span class=\"hljs-keyword\">elif<\/span> event.key == pygame.K_LEFT:\r\n        <span class=\"hljs-comment\">#move right<\/span>\r\n        ship.moving_left = <span class=\"hljs-keyword\">False<\/span>\r\n<span class=\"hljs-function\"><span class=\"hljs-keyword\">def<\/span> <span class=\"hljs-title\">check_events<\/span><span class=\"hljs-params\">(ship)<\/span>:<\/span>\r\n    <span class=\"hljs-comment\">#respond to  keyboard and mouse item<\/span>\r\n    <span class=\"hljs-keyword\">for<\/span> event <span class=\"hljs-keyword\">in<\/span> pygame.event.get():\r\n        <span class=\"hljs-keyword\">if<\/span> event.type == pygame.QUIT:\r\n            sys.exit()\r\n        <span class=\"hljs-keyword\">elif<\/span> event.type == pygame.KEYDOWN:\r\n            check_keydown_events(event,ship)\r\n        <span class=\"hljs-keyword\">elif<\/span> event.type == pygame.KEYUP:\r\n            check_keyup_events(event,ship)<\/code><\/pre>\n<h2 id=\"\u5c04\u51fb\"><a name=\"t15\"><\/a><a name=\"t15\"><\/a>\u5c04\u51fb<\/h2>\n<p>\u63a5\u4e0b\u6765\u6dfb\u52a0\u5c04\u51fb\u529f\u80fd\uff0c\u4f7f\u73a9\u5bb6\u6309\u7a7a\u683c\u952e\u65f6\u53d1\u5c04\u5b50\u5f39\uff0c\u5b50\u5f39\u5c06\u5728\u5c4f\u5e55\u4e2d\u5411\u4e0a\u7a7f\u884c\uff0c\u62b5\u8fbe\u5c4f\u5e55\u540e\u6d88\u5931\u3002<\/p>\n<h3 id=\"\u6dfb\u52a0\u5b50\u5f39\u8bbe\u7f6e\"><a name=\"t16\"><\/a><a name=\"t16\"><\/a>\u6dfb\u52a0\u5b50\u5f39\u8bbe\u7f6e<\/h3>\n<p>\u5728Settings\u7c7b\u4e2d\u589e\u52a0\u4e00\u4e9b\u5b50\u5f39\u7684\u5c5e\u6027\uff0c\u8fd9\u91cc\u6211\u4eec\u521b\u5efa\u4e00\u4e2a\u5bbd3\u50cf\u7d20\uff0c\u9ad815\u50cf\u7d20\u7684\u6df1\u7070\u8272\u5b50\u5f39\u3002\u5b50\u5f39\u7684\u901f\u5ea6\u6bd4\u98de\u8239\u7a0d\u4f4e\u3002<\/p>\n<h3 id=\"\u521b\u5efabullet\u7c7b\"><a name=\"t17\"><\/a><a name=\"t17\"><\/a>\u521b\u5efaBullet\u7c7b<\/h3>\n<pre class=\"prettyprint\"><code class=\"language-python hljs  has-numbering\"><span class=\"hljs-keyword\">import<\/span> pygame\r\n<span class=\"hljs-keyword\">from<\/span> pygame.sprite <span class=\"hljs-keyword\">import<\/span> Sprite\r\n\r\n<span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">Bullet<\/span><span class=\"hljs-params\">(Sprite)<\/span>:<\/span>\r\n    <span class=\"hljs-string\">\"\"\"A class to manage bullets fired from the ship.\"\"\"<\/span>\r\n\r\n    <span class=\"hljs-function\"><span class=\"hljs-keyword\">def<\/span> <span class=\"hljs-title\">__init__<\/span><span class=\"hljs-params\">(self, ai_settings, screen, ship)<\/span>:<\/span>\r\n        <span class=\"hljs-string\">\"\"\"Create a bullet object, at the ship's current position.\"\"\"<\/span>\r\n        super().__init__()\r\n        self.screen = screen\r\n\r\n        <span class=\"hljs-comment\"># Create bullet rect at (0, 0), then set correct position.<\/span>\r\n        self.rect = pygame.Rect(<span class=\"hljs-number\">0<\/span>, <span class=\"hljs-number\">0<\/span>, ai_settings.bullet_width,\r\n            ai_settings.bullet_height)\r\n        self.rect.centerx = ship.rect.centerx\r\n        self.rect.top = ship.rect.top\r\n\r\n        <span class=\"hljs-comment\"># Store a decimal value for the bullet's position.<\/span>\r\n        self.y = float(self.rect.y)\r\n\r\n        self.color = ai_settings.bullet_color\r\n        self.speed_factor = ai_settings.bullet_speed_factor\r\n\r\n    <span class=\"hljs-function\"><span class=\"hljs-keyword\">def<\/span> <span class=\"hljs-title\">update<\/span><span class=\"hljs-params\">(self)<\/span>:<\/span>\r\n        <span class=\"hljs-string\">\"\"\"Move the bullet up the screen.\"\"\"<\/span>\r\n        <span class=\"hljs-comment\"># Update the decimal position of the bullet.<\/span>\r\n        self.y -= self.speed_factor\r\n        <span class=\"hljs-comment\"># Update the rect position.<\/span>\r\n        self.rect.y = self.y\r\n\r\n    <span class=\"hljs-function\"><span class=\"hljs-keyword\">def<\/span> <span class=\"hljs-title\">draw_bullet<\/span><span class=\"hljs-params\">(self)<\/span>:<\/span>\r\n        <span class=\"hljs-string\">\"\"\"Draw the bullet to the screen.\"\"\"<\/span>\r\n        pygame.draw.rect(self.screen, self.color, self.rect)<\/code><\/pre>\n<h3 id=\"\u5c06\u5b50\u5f39\u5b58\u50a8\u5230group\u4e2d\"><a name=\"t18\"><\/a><a name=\"t18\"><\/a>\u5c06\u5b50\u5f39\u5b58\u50a8\u5230group\u4e2d<\/h3>\n<p>\u524d\u9762\u5b9a\u4e49\u4e86Bullet\u7c7b\u548c\u5fc5\u8981\u7684\u8bbe\u7f6e\u540e\uff0c\u5c31\u53ef\u4ee5\u7f16\u5199\u4ee3\u7801\u4e86\uff0c\u5728\u73a9\u5bb6\u6bcf\u6b21\u6309\u7a7a\u683c\u952e\u65f6\u90fd\u4f1a\u53d1\u5c04\u4e00\u53d1\u5b50\u5f39\u3002\u9996\u5148\uff0c\u6211\u4eec\u5728alien_invasion\u4e2d\u521b\u5efa\u4e00\u4e2agroup,\u7528\u4e8e\u5b58\u50a8\u6240\u6709\u7684\u6709\u6548\u5b50\u5f39\u3002<\/p>\n<pre class=\"prettyprint\"><code class=\"language-python hljs  has-numbering\"><span class=\"hljs-function\"><span class=\"hljs-keyword\">def<\/span> <span class=\"hljs-title\">run_game<\/span><span class=\"hljs-params\">()<\/span>:<\/span>\r\n    <span class=\"hljs-comment\">#initialize game and create a dispaly object<\/span>\r\n    pygame.init()\r\n    ai_settings = Settings()\r\n    screen = pygame.display.set_mode((ai_settings.screen_width,ai_settings.screen_height))\r\n    ship = Ship(ai_settings,screen)\r\n    bullets = Group()\r\n    pygame.display.set_caption(<span class=\"hljs-string\">\"Alien Invasion\"<\/span>)\r\n    <span class=\"hljs-comment\"># set backgroud color<\/span>\r\n    bg_color = (<span class=\"hljs-number\">230<\/span>,<span class=\"hljs-number\">230<\/span>,<span class=\"hljs-number\">230<\/span>)\r\n\r\n    <span class=\"hljs-comment\"># game loop<\/span>\r\n    <span class=\"hljs-keyword\">while<\/span> <span class=\"hljs-keyword\">True<\/span>:\r\n        <span class=\"hljs-comment\"># supervise keyboard and mouse item<\/span>\r\n        gf.check_events(ai_settings, screen, ship,bullets)\r\n        ship.update()\r\n        bullets.update()\r\n        gf.update_screen(ai_settings, screen, ship,bullets)<\/code><\/pre>\n<h3 id=\"\u5f00\u706b\"><a name=\"t19\"><\/a><a name=\"t19\"><\/a>\u5f00\u706b<\/h3>\n<p>\u8fd9\u91cc\u6211\u4eec\u4fee\u6539check_keydown_events()\u51fd\u6570\uff0c\u6765\u76d1\u542c\u73a9\u5bb6\u6309\u4e0b\u7a7a\u683c\u952e\u7684\u4e8b\u4ef6\u3002\u8fd9\u91cc\u8fd8\u9700\u8981\u4fee\u6539update_screen()\u51fd\u6570\uff0c\u786e\u4fdd\u5c4f\u5e55\u6bcf\u6b21\u66f4\u65b0\u65f6\uff0c\u90fd\u80fd\u91cd\u7ed8\u6bcf\u4e00\u4e2a\u5b50\u5f39\u3002<br \/>\n\u6211\u4eec\u6765\u770b\u4e0b\u6548\u679c\uff1a<br \/>\n<img decoding=\"async\" title=\"\" src=\"https:\/\/img-blog.csdn.net\/20180117184118998?watermark\/2\/text\/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMDY2NTIxNg==\/font\/5a6L5L2T\/fontsize\/400\/fill\/I0JBQkFCMA==\/dissolve\/70\/gravity\/SouthEast\" alt=\"\u8fd9\u91cc\u5199\u56fe\u7247\u63cf\u8ff0\" \/><\/p>\n<h3 id=\"\u5220\u9664\u6d88\u5931\u7684\u5b50\u5f39\"><a name=\"t20\"><\/a><a name=\"t20\"><\/a>\u5220\u9664\u6d88\u5931\u7684\u5b50\u5f39<\/h3>\n<p>\u5728alien_invasion\u4e2d\u5220\u9664\u6d88\u5931\u7684\u5b50\u5f39\u3002<\/p>\n<pre class=\"prettyprint\"><code class=\"language-python hljs  has-numbering\"><span class=\"hljs-keyword\">import<\/span> sys\r\n<span class=\"hljs-keyword\">import<\/span> pygame\r\n<span class=\"hljs-keyword\">from<\/span> settings <span class=\"hljs-keyword\">import<\/span> Settings\r\n<span class=\"hljs-keyword\">from<\/span> ship <span class=\"hljs-keyword\">import<\/span> Ship\r\n<span class=\"hljs-keyword\">import<\/span> game_functions <span class=\"hljs-keyword\">as<\/span> gf\r\n<span class=\"hljs-keyword\">from<\/span> pygame.sprite <span class=\"hljs-keyword\">import<\/span> Group\r\n<span class=\"hljs-function\"><span class=\"hljs-keyword\">def<\/span> <span class=\"hljs-title\">run_game<\/span><span class=\"hljs-params\">()<\/span>:<\/span>\r\n    <span class=\"hljs-comment\">#initialize game and create a dispaly object<\/span>\r\n    pygame.init()\r\n    ai_settings = Settings()\r\n    screen = pygame.display.set_mode((ai_settings.screen_width,ai_settings.screen_height))\r\n    ship = Ship(ai_settings,screen)\r\n    bullets = Group()\r\n    pygame.display.set_caption(<span class=\"hljs-string\">\"Alien Invasion\"<\/span>)\r\n    <span class=\"hljs-comment\"># set backgroud color<\/span>\r\n    bg_color = (<span class=\"hljs-number\">230<\/span>,<span class=\"hljs-number\">230<\/span>,<span class=\"hljs-number\">230<\/span>)\r\n\r\n    <span class=\"hljs-comment\"># game loop<\/span>\r\n    <span class=\"hljs-keyword\">while<\/span> <span class=\"hljs-keyword\">True<\/span>:\r\n        <span class=\"hljs-comment\"># supervise keyboard and mouse item<\/span>\r\n        gf.check_events(ai_settings, screen, ship,bullets)\r\n        ship.update()\r\n        bullets.update()\r\n        <span class=\"hljs-keyword\">for<\/span> bullet <span class=\"hljs-keyword\">in<\/span> bullets.copy():\r\n            <span class=\"hljs-keyword\">if<\/span> bullet.rect.bottom &lt;=<span class=\"hljs-number\">0<\/span>:\r\n                bullets.remove(bullet)\r\n        gf.update_screen(ai_settings, screen,ship,bullets)\r\nrun_game()<\/code><\/pre>\n<h3 id=\"\u9650\u5236\u5b50\u5f39\u6570\u91cf\"><a name=\"t21\"><\/a><a name=\"t21\"><\/a>\u9650\u5236\u5b50\u5f39\u6570\u91cf<\/h3>\n<p>\u4e3a\u4e86\u9f13\u52b1\u73a9\u5bb6\u6709\u76ee\u6807\u7684\u5c04\u51fb\uff0c\u6211\u4eec\u89c4\u5b9a\u5c4f\u5e55\u4e0a\u53ea\u80fd\u540c\u65f6\u5b58\u57283\u9897\u5b50\u5f39\uff0c\u6211\u4eec\u53ea\u9700\u8981\u5728\u6bcf\u6b21\u521b\u5efa\u5b50\u5f39\u524d\u68c0\u67e5\u672a\u6d88\u5931\u7684\u5b50\u5f39\u6570\u76ee\u662f\u5426\u5c0f\u4e8e3\u5373\u53ef\u3002<\/p>\n<h3 id=\"\u521b\u5efaupdatebullets\u51fd\u6570\"><a name=\"t22\"><\/a><a name=\"t22\"><\/a>\u521b\u5efaupdate_bullets\uff08\uff09\u51fd\u6570<\/h3>\n<p>\u4e3a\u4e86\u4f7falien_invasion\u4e2d\u4ee3\u7801\u66f4\u52a0\u7b80\u5355\uff0c\u6211\u4eec\u5c06\u68c0\u67e5\u5b50\u5f39\u7ba1\u7406\u7684\u4ee3\u7801\uff0c\u79fb\u5230game_functions\u6a21\u5757\u4e2d\uff1a<\/p>\n<pre class=\"prettyprint\"><code class=\"language-python hljs  has-numbering\"><span class=\"hljs-function\"><span class=\"hljs-keyword\">def<\/span> <span class=\"hljs-title\">update_bullets<\/span><span class=\"hljs-params\">(bullets)<\/span>:<\/span>\r\n    bullets.update()\r\n    <span class=\"hljs-keyword\">for<\/span> bullet <span class=\"hljs-keyword\">in<\/span> bullets.copy():\r\n        <span class=\"hljs-keyword\">if<\/span> bullet.rect.bottom&lt;=<span class=\"hljs-number\">0<\/span>:\r\n            bullets.remove(bullet)<\/code><\/pre>\n<h3 id=\"\u521b\u5efafirebullet\u51fd\u6570\"><a name=\"t23\"><\/a><a name=\"t23\"><\/a>\u521b\u5efafire_bullet()\u51fd\u6570<\/h3>\n<p>\u8fd9\u91cc\u6211\u4eec\u5c06\u53d1\u5c04\u5b50\u5f39\u7684\u4ee3\u7801\u79fb\u5230\u4e00\u4e2a\u72ec\u7acb\u7684\u51fd\u6570\u4e2d:<\/p>\n<pre class=\"prettyprint\"><code class=\"language-python hljs  has-numbering\"><span class=\"hljs-function\"><span class=\"hljs-keyword\">def<\/span> <span class=\"hljs-title\">fire_bullet<\/span><span class=\"hljs-params\">(ai_settings,screen,ship,bullets)<\/span>:<\/span>\r\n    <span class=\"hljs-keyword\">if<\/span> len(bullets) &lt; ai_settings.bullets_allowed:\r\n        new_bullet = Bullet(ai_settings,screen,ship)\r\n        bullets.add(new_bullet) <\/code><\/pre>\n<h1 id=\"\u6dfb\u52a0\u5916\u661f\u4eba\u5e76\u68c0\u6d4b\u78b0\u649e\"><a name=\"t24\"><\/a><a name=\"t24\"><\/a>\u6dfb\u52a0\u5916\u661f\u4eba\uff0c\u5e76\u68c0\u6d4b\u78b0\u649e<\/h1>\n<p>\u5728\u6211\u4eec\u5b8c\u6210\u65b0\u7684\u4efb\u52a1\u4e4b\u524d\uff0c\u6211\u4eec\u5148\u7ed9\u6e38\u620f\u6dfb\u52a0\u4e00\u4e2a\u7ed3\u675f\u6e38\u620f\u7684\u5feb\u6377\u952eQ:<\/p>\n<h2 id=\"\u521b\u5efa\u7b2c\u4e00\u4e2a\u5916\u661f\u4eba\"><a name=\"t25\"><\/a><a name=\"t25\"><\/a>\u521b\u5efa\u7b2c\u4e00\u4e2a\u5916\u661f\u4eba<\/h2>\n<p>\u8fd9\u91cc\u548c\u521b\u5efa\u98de\u8239\u7684\u65b9\u6cd5\u4e00\u6837<\/p>\n<pre class=\"prettyprint\"><code class=\"language-python hljs  has-numbering\"><span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">Alien<\/span><span class=\"hljs-params\">(Sprite)<\/span>:<\/span>\r\n    <span class=\"hljs-string\">\"\"\"A class to represent a single alien in the fleet.\"\"\"<\/span>\r\n\r\n    <span class=\"hljs-function\"><span class=\"hljs-keyword\">def<\/span> <span class=\"hljs-title\">__init__<\/span><span class=\"hljs-params\">(self, ai_settings, screen)<\/span>:<\/span>\r\n        <span class=\"hljs-string\">\"\"\"Initialize the alien, and set its starting position.\"\"\"<\/span>\r\n        super().__init__()\r\n        self.screen = screen\r\n        self.ai_settings = ai_settings\r\n\r\n        <span class=\"hljs-comment\"># Load the alien image, and set its rect attribute.<\/span>\r\n        self.image = pygame.image.load(<span class=\"hljs-string\">'images\/alien.bmp'<\/span>)\r\n        self.rect = self.image.get_rect()\r\n\r\n        <span class=\"hljs-comment\"># Start each new alien near the top left of the screen.<\/span>\r\n        self.rect.x = self.rect.width\r\n        self.rect.y = self.rect.height\r\n\r\n        <span class=\"hljs-comment\"># Store the alien's exact position.<\/span>\r\n        self.x = float(self.rect.x)\r\n    <span class=\"hljs-function\"><span class=\"hljs-keyword\">def<\/span> <span class=\"hljs-title\">blitme<\/span><span class=\"hljs-params\">(self)<\/span>:<\/span>\r\n        <span class=\"hljs-string\">\"\"\"Draw the alien at its current location.\"\"\"<\/span>\r\n        self.screen.blit(self.image, self.rect)<\/code><\/pre>\n<h2 id=\"\u521b\u5efa\u4e00\u7fa4\u5916\u661f\u4eba\"><a name=\"t26\"><\/a><a name=\"t26\"><\/a>\u521b\u5efa\u4e00\u7fa4\u5916\u661f\u4eba<\/h2>\n<p>\u8fd9\u91cc\u6211\u4eec\u9996\u5148\u786e\u5b9a\u4e00\u884c\u80fd\u5bb9\u7eb3\u591a\u5c11\u4e2a\u5916\u661f\u4eba\u4ee5\u53ca\u8981\u7ed8\u5236\u51e0\u884c\u3002\u8fd9\u91cc\u6539\u52a8\u4ee3\u7801\u8f83\u591a\uff0c\u76f4\u63a5\u770b\u6548\u679c\uff1a<br \/>\n<img decoding=\"async\" title=\"\" src=\"https:\/\/img-blog.csdn.net\/20180117195021165?watermark\/2\/text\/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMDY2NTIxNg==\/font\/5a6L5L2T\/fontsize\/400\/fill\/I0JBQkFCMA==\/dissolve\/70\/gravity\/SouthEast\" alt=\"\u8fd9\u91cc\u5199\u56fe\u7247\u63cf\u8ff0\" \/><\/p>\n<h2 id=\"\u79fb\u52a8\u5916\u661f\u4eba\"><a name=\"t27\"><\/a><a name=\"t27\"><\/a>\u79fb\u52a8\u5916\u661f\u4eba<\/h2>\n<p>\u524d\u9762\u6211\u4eec\u521b\u5efa\u7684\u662f\u9759\u6001\u7684\u5916\u661f\u4eba\uff0c\u73b0\u5728\u6211\u4eec\u9700\u8981\u8ba9\u5916\u661f\u4eba\u52a8\u8d77\u6765\u3002\u8fd9\u91cc\u6211\u4eec\u5728Settings\u7c7b\u4e2d\u8bbe\u7f6e\u5916\u661f\u4eba\u79fb\u52a8\u7684\u901f\u5ea6\uff0c\u7136\u540e\u901a\u8fc7Alien\u7c7b\u4e2d\u7684update\u7684\u65b9\u6cd5\u6765\u5b9e\u73b0\u79fb\u52a8<\/p>\n<h2 id=\"\u5c04\u6740\u5916\u661f\u4eba\"><a name=\"t28\"><\/a><a name=\"t28\"><\/a>\u5c04\u6740\u5916\u661f\u4eba<\/h2>\n<p>\u8981\u60f3\u5c04\u6740\u5916\u661f\u4eba\uff0c\u5c31\u5fc5\u987b\u5148\u68c0\u6d4b\u4e24\u4e2a\u7f16\u7ec4\u6210\u5458\u4e4b\u95f4\u662f\u5426\u53d1\u751f\u78b0\u649e\uff0c\u5728\u6e38\u620f\u4e2d\uff0c\u78b0\u649e\u5c31\u662f\u6e38\u620f\u5143\u7d20\u91cd\u53e0\u5728\u4e00\u8d77\u3002\u8fd9\u91cc\u6211\u4eec\u4f7f\u7528sprite.groupcollide()\u6765\u68c0\u6d4b\u4e24\u4e2a\u7f16\u7ec4\u7684\u6210\u5458\u4e4b\u95f4\u7684\u78b0\u649e\u3002<br \/>\n\u5b50\u5f39\u51fb\u4e2d\u5916\u661f\u4eba\u65f6\uff0c\u9700\u8981\u7acb\u9a6c\u77e5\u9053\uff0c\u5e76\u540c\u65f6\u4f7f\u88ab\u78b0\u649e\u7684\u5916\u661f\u4eba\u7acb\u5373\u6d88\u5931\uff0c\u56e0\u6b64\u6211\u4eec\u9700\u8981\u5728\u66f4\u65b0\u5b50\u5f39\u7684\u4f4d\u7f6e\u540e\u7acb\u5373\u68c0\u6d4b\u78b0\u649e\u3002<\/p>\n<h2 id=\"\u7ed3\u675f\u6e38\u620f\"><a name=\"t29\"><\/a><a name=\"t29\"><\/a>\u7ed3\u675f\u6e38\u620f<\/h2>\n<p>\u8fd9\u91cc\u6211\u4eec\u8fd8\u9700\u8981\u77e5\u9053\u4f55\u65f6\u8be5\u7ed3\u675f\u6e38\u620f\uff0c\u6709\u4ee5\u4e0b\u51e0\u79cd\u60c5\u51b5\uff1a<\/p>\n<blockquote>\n<ul>\n<li>\u98de\u8239\u5168\u90e8\u88ab\u6467\u6bc1<\/li>\n<li>\u5916\u661f\u4eba\u5230\u8fbe\u5c4f\u5e55\u5e95\u90e8<\/li>\n<\/ul>\n<\/blockquote>\n<p>\u5b9e\u9645\u6548\u679c\uff1a<br \/>\n<img decoding=\"async\" title=\"\" src=\"https:\/\/img-blog.csdn.net\/20180117203835365?watermark\/2\/text\/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMDY2NTIxNg==\/font\/5a6L5L2T\/fontsize\/400\/fill\/I0JBQkFCMA==\/dissolve\/70\/gravity\/SouthEast\" alt=\"\u8fd9\u91cc\u5199\u56fe\u7247\u63cf\u8ff0\" \/><\/p>\n<h1 id=\"\u8ba1\u5206\"><a name=\"t30\"><\/a><a name=\"t30\"><\/a>\u8ba1\u5206<\/h1>\n<p>\u6700\u540e\u6211\u4eec\u5c06\u7ed9\u6e38\u620f\u6dfb\u52a0\u4e00\u4e2aPlay\u6309\u94ae\uff0c\u7528\u4e8e\u6839\u636e\u9700\u8981\u542f\u52a8\u6e38\u620f\u4ee5\u53ca\u5728\u6e38\u620f\u7ed3\u675f\u540e\u91cd\u542f\u6e38\u620f\u3002\u6211\u4eec\u8fd8\u5c06\u5b9e\u73b0\u4e00\u4e2a\u8ba1\u5206\u7cfb\u7edf\uff0c\u80fd\u591f\u5728\u73a9\u5bb6\u7b49\u7ea7\u63d0\u9ad8\u65f6\u52a0\u5feb\u8282\u594f\u3002<\/p>\n<h2 id=\"\u6dfb\u52a0play\u6309\u94ae\"><a name=\"t31\"><\/a><a name=\"t31\"><\/a>\u6dfb\u52a0Play\u6309\u94ae<\/h2>\n<p>\u8fd9\u91cc\u53ef\u4ee5\u5148\u5c06\u6e38\u620f\u521d\u59cb\u5316\u4e3a\u975e\u6d3b\u52a8\u72b6\u6001\uff0c\u5f53\u6211\u4eec\u70b9\u51fb\u4e86\u6309\u94ae\uff0c\u5c31\u5f00\u59cb\u6e38\u620f\u3002\u7531\u4e8ePygame\u4e2d\u6ca1\u6709\u5185\u7f6e\u7684\u521b\u5efa\u6309\u94ae\u7684\u65b9\u6cd5\u3002\u56e0\u6b64\u6211\u4eec\u53ef\u4ee5\u901a\u8fc7\u521b\u5efa\u4e00\u4e2aButton\u7c7b\u6765\u521b\u5efa\u4e00\u4e2a\u81ea\u5e26\u6807\u7b7e\u7684\u5b9e\u5fc3\u77e9\u5f62\u3002\u6211\u4eec\u901a\u8fc7\u68c0\u6d4b\u9f20\u6807\u53d1\u751f\u70b9\u51fb\u540e\u7684\u5750\u6807\u662f\u5426\u4e0e\u6211\u4eec\u7ed8\u5236\u7684\u6309\u94ae\u53d1\u751f\u78b0\u649e\u4e0e\u5426\u6765\u5224\u65ad\u662f\u5426\u53d1\u751f\u4e86\u70b9\u51fb\u4e8b\u4ef6\u3002<\/p>\n<h2 id=\"\u63d0\u9ad8\u7b49\u7ea7\"><a name=\"t32\"><\/a><a name=\"t32\"><\/a>\u63d0\u9ad8\u7b49\u7ea7<\/h2>\n<p>\u4e3a\u4e86\u4f7f\u73a9\u5bb6\u5c06\u654c\u4eba\u6d88\u706d\u5e72\u51c0\u540e\u80fd\u591f\u63d0\u9ad8\u6e38\u620f\u96be\u5ea6\uff0c\u589e\u52a0\u8da3\u5473\u6027\uff0c\u8fd9\u91cc\u6211\u4eec\u53ef\u4ee5\u5728Settings\u7c7b\u4e2d\u8fdb\u884c\u4fee\u6539\uff0c\u589e\u52a0\u9759\u6001\u521d\u59cb\u503c\uff0c\u548c\u52a8\u6001\u521d\u59cb\u503c\u3002<\/p>\n<h2 id=\"\u8bb0\u5206\u7b49\u7ea7\u5269\u4f59\u98de\u8239\"><a name=\"t33\"><\/a><a name=\"t33\"><\/a>\u8bb0\u5206\u3001\u7b49\u7ea7\u3001\u5269\u4f59\u98de\u8239<\/h2>\n<p><img decoding=\"async\" title=\"\" src=\"https:\/\/img-blog.csdn.net\/20180117210058020?watermark\/2\/text\/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMDY2NTIxNg==\/font\/5a6L5L2T\/fontsize\/400\/fill\/I0JBQkFCMA==\/dissolve\/70\/gravity\/SouthEast\" alt=\"\u8fd9\u91cc\u5199\u56fe\u7247\u63cf\u8ff0\" \/><\/p>\n<h1 id=\"\u6253\u5305\u6210exe\u53ef\u6267\u884c\u6587\u4ef6\"><a name=\"t34\"><\/a><a name=\"t34\"><\/a>\u6253\u5305\u6210exe\u53ef\u6267\u884c\u6587\u4ef6<\/h1>\n<p>\u4e0a\u9762\u6e38\u620f\u5f00\u53d1\u5b8c\u4e86\uff0c\u90a3\u4e48\u4f60\u9700\u8981\u5c06\u5176\u8f6c\u6210\u6587exe\u7684\u53ef\u6267\u884c\u6587\u4ef6\u3002\u6211\u4eec\u91c7\u7528pyinstaller\uff0c\u5b89\u88c5\u6b65\u9aa4\u53c2\u8003\uff1a<a href=\"https:\/\/github.com\/pyinstaller\/pyinstaller\/\">\u4f20\u9001\u95e8<\/a><\/p>\n<h1 id=\"\u9879\u76ee\u4ee3\u7801\"><a name=\"t35\"><\/a><a name=\"t35\"><\/a>\u9879\u76ee\u4ee3\u7801<\/h1>\n<p>github\u5730\u5740\uff1a<a href=\"https:\/\/github.com\/shawshany\/Python_game\">\u4f20\u9001\u95e8<\/a><\/p>\n<\/div>\n<\/div>\n<\/article>\n","protected":false},"excerpt":{"rendered":"<p>\u539f\u6587\u5730\u5740 OraYang\u00a02018-01<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"colormag_page_container_layout":"default_layout","colormag_page_sidebar_layout":"default_layout","footnotes":""},"categories":[],"tags":[119],"class_list":["post-4954","post","type-post","status-publish","format-standard","hentry","tag-03-"],"_links":{"self":[{"href":"https:\/\/i007.cc\/wordpress\/wp-json\/wp\/v2\/posts\/4954","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/i007.cc\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/i007.cc\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/i007.cc\/wordpress\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/i007.cc\/wordpress\/wp-json\/wp\/v2\/comments?post=4954"}],"version-history":[{"count":0,"href":"https:\/\/i007.cc\/wordpress\/wp-json\/wp\/v2\/posts\/4954\/revisions"}],"wp:attachment":[{"href":"https:\/\/i007.cc\/wordpress\/wp-json\/wp\/v2\/media?parent=4954"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/i007.cc\/wordpress\/wp-json\/wp\/v2\/categories?post=4954"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/i007.cc\/wordpress\/wp-json\/wp\/v2\/tags?post=4954"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}