{"id":29272,"date":"2024-11-25T09:30:03","date_gmt":"2024-11-25T01:30:03","guid":{"rendered":"https:\/\/fwq.ai\/blog\/29272\/"},"modified":"2024-11-25T09:30:03","modified_gmt":"2024-11-25T01:30:03","slug":"pygame%e5%bc%80%e5%8f%91pc%e7%ab%af%e5%be%ae%e4%bf%a1%e6%89%93%e9%a3%9e%e6%9c%ba%e6%b8%b8%e6%88%8f%e5%ae%9e%e4%be%8b%e4%bb%8b%e7%bb%8d","status":"publish","type":"post","link":"https:\/\/fwq.ai\/blog\/29272\/","title":{"rendered":"pygame\u5f00\u53d1PC\u7aef\u5fae\u4fe1\u6253\u98de\u673a\u6e38\u620f\u5b9e\u4f8b\u4ecb\u7ecd"},"content":{"rendered":"<p>pygame\u5f00\u53d1pc\u7aef\u5fae\u4fe1\u6253\u98de\u673a\u6e38\u620f<\/p>\n<p>\u4e00\u3001\u9879\u76ee\u7b80\u4ecb<br \/>1. \u4ecb\u7ecd<br \/>\u672c\u9879\u76ee\u7c7b\u4f3c\u66fe\u7ecf\u706b\u7206\u7684\u5fae\u4fe1\u6253\u98de\u673a\u6e38\u620f\u3002\u6e38\u620f\u5c06\u4f7f\u7528Python\u8bed\u8a00\u5f00\u53d1\uff0c\u4e3b\u8981\u7528\u5230pygame\u7684API\u3002\u6e38\u620f\u6700\u7ec8\u5c06\u4f1a\u4ee5python\u6e90\u6587\u4ef6game.py\u5f62\u5f0f\u5b8c\u6210\uff0c\u53ea\u9700\u8981\u8fd0\u884cpython game.py\u5c31\u53ef\u4ee5\u8fdb\u5165\u6e38\u620f\u3002<br \/>\u6e38\u620f\u6700\u7ec8\u6548\u679c\u622a\u56fe\u5982\u4e0b\uff1a<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/img.php.cn\/\/upload\/image\/878\/150\/831\/1490241087105084.jpg\" style=\"max-width:90%\" class=\"aligncenter\" title=\"pygame\u5f00\u53d1PC\u7aef\u5fae\u4fe1\u6253\u98de\u673a\u6e38\u620f\u5b9e\u4f8b\u4ecb\u7ecd\u63d2\u56fe\" alt=\"pygame\u5f00\u53d1PC\u7aef\u5fae\u4fe1\u6253\u98de\u673a\u6e38\u620f\u5b9e\u4f8b\u4ecb\u7ecd\u63d2\u56fe\" \/><\/p>\n<p><img decoding=\"async\" src=\"https:\/\/img.php.cn\/\/upload\/image\/424\/667\/854\/1490241099395618.jpg\" style=\"max-width:90%\" class=\"aligncenter\" title=\"pygame\u5f00\u53d1PC\u7aef\u5fae\u4fe1\u6253\u98de\u673a\u6e38\u620f\u5b9e\u4f8b\u4ecb\u7ecd\u63d2\u56fe1\" alt=\"pygame\u5f00\u53d1PC\u7aef\u5fae\u4fe1\u6253\u98de\u673a\u6e38\u620f\u5b9e\u4f8b\u4ecb\u7ecd\u63d2\u56fe1\" \/><\/p>\n<p>2. \u77e5\u8bc6\u70b9<br \/>\u672c\u5b9e\u9a8c\u4e2d\u5c06\u4ecb\u7ecd\u5728Linux\u684c\u9762\u73af\u5883\u4e0b\u4f7f\u7528Python\u53capygame\u5feb\u901f\u5f00\u53d1\u5c0f\u6e38\u620f\u7684\u65b9\u5f0f\u3002\u53ef\u4ee5\u901a\u8fc7\u8fd9\u4e2a\u6e38\u620f\u5165\u95e8pygame\u6e38\u620f\u5f00\u53d1\u3002<br \/>3. \u53c2\u8003\u6587\u6863<\/p>\n<p>\u4ee3\u7801\u53c2\u8003 Kill-Console\u5199\u7684PythonShootGame<\/p>\n<p>\u6587\u6863\u53c2\u8003&nbsp;pygame\u6587\u6863<\/p>\n<p>4. \u5b89\u88c5\u4f9d\u8d56\u5305<br \/>\uff08\u4ee5\u4e0b\u5185\u5bb9\u9700\u8981\u5728\u5b9e\u9a8c\u697c\u5b98\u65b9\u7f51\u7ad9\u5b9e\u73b0\uff0c\u4e0d\u9700\u8981\u7684\u4e5f\u53ef\u4ee5\u76f4\u63a5\u8df3\u8fc7\uff09<\/p>\n<p>\u9700\u8981\u5b89\u88c5pygame\u5e93\u6765\u652f\u6301\u672c\u5b9e\u9a8c\u6240\u9700\u7684\u4ee3\u7801\u8fd0\u884c\u3002<br \/>\u5728\u5b9e\u9a8c\u73af\u5883\u4e2d\u6253\u5f00Xfce\u7ec8\u7aef\uff0c\u5e76\u8f93\u5165\u4ee5\u4e0b\u547d\u4ee4\u6765\u5b89\u88c5pygame\uff0c\u4f1a\u63d0\u793a\u8f93\u5165shiyanlou\u7684\u5bc6\u7801\uff0c\u5bc6\u7801\u4e5f\u662fshiyanlou\uff1a<br \/>$ sudo apt-get update$ sudo apt-get install python-pygame<br \/>\u4e8c\u3001\u6280\u672f\u8bbe\u8ba1<br \/>1. \u6e38\u620f\u89d2\u8272<br \/>\u672c\u6e38\u620f\u4e2d\u6240\u9700\u7684\u89d2\u8272\u5305\u62ec\u73a9\u5bb6\u98de\u673a\u3001\u654c\u673a\u53ca***\u3002\u7528\u6237\u53ef\u4ee5\u901a\u8fc7\u952e\u76d8\u79fb\u52a8\u73a9\u5bb6\u98de\u673a\u5728\u5c4f\u5e55\u4e0a\u7684\u4f4d\u7f6e\u6765\u6253\u51fb\u4e0d\u540c\u4f4d\u7f6e\u7684\u654c\u673a\u3002\u56e0\u6b64\u8bbe\u8ba1\u4ee5\u4e0bPlayer\uff0cEnemy\u548cBullet\u4e09\u4e2a\u7c7b\u5bf9\u5e94\u4e09\u79cd\u6e38\u620f\u89d2\u8272\u3002<br \/>\u5bf9\u4e8ePlayer\uff0c\u9700\u8981\u7684\u64cd\u4f5c\u6709\u5c04\u51fb\u548c\u79fb\u52a8\u4e24\u79cd\uff0c\u79fb\u52a8\u53c8\u5206\u4e3a\u4e0a\u4e0b\u5de6\u53f34\u79cd\u60c5\u51b5\u3002<br \/>\u5bf9\u4e8eEnemy\uff0c\u5219\u6bd4\u8f83\u7b80\u5355\uff0c\u53ea\u9700\u8981\u79fb\u52a8\u5373\u53ef\uff0c\u4ece\u5c4f\u5e55\u4e0a\u65b9\u51fa\u73b0\u5e76\u79fb\u52a8\u5230\u5c4f\u5e55\u4e0b\u65b9\u3002<br \/>\u5bf9\u4e8eBullet\uff0c\u4e0e\u98de\u673a\u76f8\u540c\uff0c\u4ec5\u9700\u8981\u4ee5\u4e00\u5b9a\u901f\u5ea6\u79fb\u52a8\u5373\u53ef\u3002<br \/>2. \u6e38\u620f\u529f\u80fd<br \/>\u76f8\u4fe1\u73a9\u8fc7\u5fae\u4fe1\u6253\u98de\u673a\u7684\u670b\u53cb\u90fd\u719f\u6089\uff0c\u8fd9\u91cc\u5c06\u6e38\u620f\u505a\u4e86\u7b80\u5316\u3002\u98de\u673a\u7684\u901f\u5ea6\u56fa\u5b9a\uff0c***\u7684\u901f\u5ea6\u56fa\u5b9a\uff0c\u57fa\u672c\u64cd\u4f5c\u662f\u79fb\u52a8\u73a9\u5bb6\u98de\u673a\uff0c\u76ee\u6807\u98de\u673a\u968f\u673a\u4ece\u5c4f\u5e55\u4e0a\u65b9\u51fa\u73b0\u5e76\u5300\u901f\u843d\u5230\u4e0b\u65b9\uff0c***\u4ece\u73a9\u5bb6\u98de\u673a\u53d1\u51fa\uff0c\u78b0\u5230\u76ee\u6807\u98de\u673a\u4f1a\u51fb\u6bc1\uff0c\u5982\u679c\u76ee\u6807\u98de\u673a\u78b0\u5230\u73a9\u5bb6\u98de\u673a\uff0c\u5219Game Over\u5e76\u663e\u793a\u5206\u6570\u3002<br \/>\u4e09\u3001\u4ee3\u7801\u5b9e\u73b0<br \/>1. \u754c\u9762\u663e\u793a<br \/>\u4ee3\u7801\u5b9e\u73b0\u6240\u9700\u7684resources\u56fe\u7247\u6587\u4ef6\u90fd\u53ef\u4ee5\u901a\u8fc7\u4e0b\u8ff0\u547d\u4ee4\u83b7\u53d6\uff1a<\/p>\n<p>$git clone https:\/\/github.com\/shiyanlou\/PythonShootGame.git<\/p>\n<p>\u8be6\u7ec6\u6b65\u9aa4<\/p>\n<p>\u521d\u59cb\u5316pygame<\/p>\n<p>\u8bbe\u7f6e\u6e38\u620f\u754c\u9762\u5927\u5c0f\u3001\u80cc\u666f\u56fe\u7247\u53ca\u6807\u9898<\/p>\n<p>\u6e38\u620f\u4e3b\u5faa\u73af\u5185\u9700\u8981\u5904\u7406\u6e38\u620f\u754c\u9762\u7684\u521d\u59cb\u5316\u3001\u66f4\u65b0\u53ca\u9000\u51fa<\/p>\n<p>\u663e\u793a\u73a9\u5bb6\u98de\u673a\uff08\u4ee3\u7801\u4e2d\u4f7f\u7528\u7684resources\/image\/shoot.png\u56fe\u91cc\u5305\u542b\u591a\u79cd\u98de\u673a\uff0c\u53ea\u9700\u8981\u4f7f\u7528pygame.image\u7684subsurface API\u6839\u636e\u4f4d\u7f6e\u622a\u53d6shoot.png\u4e2d\u6240\u9700\u7684\u56fe\u7247\uff09<\/p>\n<p>\u793a\u4f8b\u4ee3\u7801<\/p>\n<pre>#1.&nbsp;\u521d\u59cb\u5316pygame\r\npygame.init()\r\n&nbsp;\r\n#2.&nbsp;\u8bbe\u7f6e\u6e38\u620f\u754c\u9762\u5927\u5c0f\u3001\u80cc\u666f\u56fe\u7247\u53ca\u6807\u9898\r\n#&nbsp;\u6e38\u620f\u754c\u9762\u50cf\u7d20\u5927\u5c0f\r\nscreen&nbsp;=&nbsp;pygame.display.set_mode((480,&nbsp;800))\r\n&nbsp;\r\n#&nbsp;\u6e38\u620f\u754c\u9762\u6807\u9898\r\npygame.display.set_caption('\u98de\u673a\u5927\u6218')\r\n&nbsp;\r\n#&nbsp;\u80cc\u666f\u56fe\r\nbackground&nbsp;=&nbsp;pygame.image.load('resources\/image\/background.png').convert()\r\n&nbsp;\r\n#&nbsp;Game&nbsp;Over\u7684\u80cc\u666f\u56fe\r\ngame_over&nbsp;=&nbsp;pygame.image.load('resources\/image\/gameover.png')\r\n&nbsp;\r\n#&nbsp;\u98de\u673a\u56fe\u7247\r\nplane_img&nbsp;=&nbsp;pygame.image.load('resources\/image\/shoot.png')\r\n&nbsp;\r\n#&nbsp;\u622a\u53d6\u73a9\u5bb6\u98de\u673a\u56fe\u7247\r\nplayer&nbsp;=&nbsp;plane_img.subsurface(pygame.Rect(0,&nbsp;99,&nbsp;102,&nbsp;126))\r\n&nbsp;\r\n#3.&nbsp;\u6e38\u620f\u4e3b\u5faa\u73af\u5185\u9700\u8981\u5904\u7406\u6e38\u620f\u754c\u9762\u7684\u521d\u59cb\u5316\u3001\u66f4\u65b0\u53ca\u9000\u51fa\r\nwhile&nbsp;True:&nbsp;\r\n&nbsp;&nbsp;&nbsp;#&nbsp;\u521d\u59cb\u5316\u6e38\u620f\u5c4f\u5e55\r\n&nbsp;&nbsp;&nbsp;&nbsp;screen.fill(0)\r\n&nbsp;&nbsp;&nbsp;&nbsp;screen.blit(background,&nbsp;(0,&nbsp;0))&nbsp;&nbsp;&nbsp;&nbsp;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\r\n&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;\u663e\u793a\u73a9\u5bb6\u98de\u673a\u5728\u4f4d\u7f6e[200,600]\r\n&nbsp;&nbsp;&nbsp;&nbsp;screen.blit(player,&nbsp;[200,&nbsp;600])&nbsp;&nbsp;&nbsp;&nbsp;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\r\n&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;\u66f4\u65b0\u6e38\u620f\u5c4f\u5e55\r\n&nbsp;&nbsp;&nbsp;&nbsp;pygame.display.update()&nbsp;&nbsp;&nbsp;&nbsp;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\r\n&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;\u6e38\u620f\u9000\u51fa\u4e8b\u4ef6\r\n&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;event&nbsp;in&nbsp;pygame.event.get():&nbsp;&nbsp;&nbsp;&nbsp;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;event.type&nbsp;==&nbsp;pygame.QUIT:\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pygame.quit()\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;exit()<\/pre>\n<p>  \u767b\u5f55\u540e\u590d\u5236   <\/p>\n<p>2. \u4e8b\u4ef6\u5904\u7406<br \/>\u5728\u4e3b\u5faa\u73af\u4e2d\u5904\u7406\u952e\u76d8\u8f93\u5165\u7684\u4e8b\u4ef6\uff08\u4e0a\u4e0b\u5de6\u53f3\u6309\u952e\u64cd\u4f5c\uff09\uff0c\u589e\u52a0\u6e38\u620f\u64cd\u4f5c\u4ea4\u4e92\uff08\u73a9\u5bb6\u98de\u673a\u7684\u4e0a\u4e0b\u5de6\u53f3\u79fb\u52a8\uff09\u3002<br \/>\u8be6\u7ec6\u6b65\u9aa4<\/p>\n<p>\u83b7\u53d6\u952e\u76d8\u4e8b\u4ef6\uff08\u4e0a\u4e0b\u5de6\u53f3\u6309\u952e\uff09<\/p>\n<p>\u5904\u7406\u952e\u76d8\u4e8b\u4ef6\uff08\u79fb\u52a8\u98de\u673a\u7684\u4f4d\u7f6e\uff09<\/p>\n<p>\u5c06\u4e0a\u8ff0\u6b65\u9aa4\u4ee3\u7801\u653e\u5165\u6e38\u620f\u4e3b\u5faa\u73af\u4e2d<\/p>\n<p>\u793a\u4f8b\u4ee3\u7801<\/p>\n<pre>#1.&nbsp;\u83b7\u53d6\u952e\u76d8\u4e8b\u4ef6\uff08\u4e0a\u4e0b\u5de6\u53f3\u6309\u952e\uff09\r\nkey_pressed&nbsp;=&nbsp;pygame.key.get_pressed()\r\n&nbsp;\r\n#2.&nbsp;\u5904\u7406\u952e\u76d8\u4e8b\u4ef6\uff08\u79fb\u52a8\u98de\u673a\u7684\u4f4d\u7f6e\uff09\r\nif&nbsp;key_pressed[K_w]&nbsp;or&nbsp;key_pressed[K_UP]:\r\n&nbsp;&nbsp;&nbsp;&nbsp;player.moveUp()\r\nif&nbsp;key_pressed[K_s]&nbsp;or&nbsp;key_pressed[K_DOWN]:\r\n&nbsp;&nbsp;&nbsp;&nbsp;player.moveDown()\r\nif&nbsp;key_pressed[K_a]&nbsp;or&nbsp;key_pressed[K_LEFT]:\r\n&nbsp;&nbsp;&nbsp;&nbsp;player.moveLeft()\r\nif&nbsp;key_pressed[K_d]&nbsp;or&nbsp;key_pressed[K_RIGHT]:\r\n&nbsp;&nbsp;&nbsp;&nbsp;player.moveRight()<\/pre>\n<p>  \u767b\u5f55\u540e\u590d\u5236   <\/p>\n<p>3. ***\u5904\u7406<br \/>***\u7531\u73a9\u5bb6\u98de\u673a\u53d1\u51fa\uff0c\u5e76\u4ee5\u4e00\u5b9a\u901f\u5ea6\u5411\u754c\u9762\u4e0a\u65b9\u79fb\u52a8\u3002<br \/>\u8be6\u7ec6\u6b65\u9aa4<\/p>\n<p>\u751f\u6210***\uff0c\u9700\u8981\u63a7\u5236\u53d1\u5c04\u9891\u7387<\/p>\n<p>\u4ee5\u56fa\u5b9a\u901f\u5ea6\u79fb\u52a8***<\/p>\n<p>\u79fb\u52a8\u51fa\u5c4f\u5e55\u540e\u5220\u9664***<\/p>\n<p>\u654c\u673a\u88ab***\u51fb\u4e2d\u6548\u679c\u5904\u7406\uff08\u4e0b\u4e00\u8282\u5904\u7406\uff09<\/p>\n<p>\u793a\u4f8b\u4ee3\u7801<\/p>\n<pre>#1.&nbsp;\u751f\u6210***\uff0c\u9700\u8981\u63a7\u5236\u53d1\u5c04\u9891\u7387\r\n#&nbsp;\u9996\u5148\u5224\u65ad\u73a9\u5bb6\u98de\u673a\u6ca1\u6709\u88ab\u51fb\u4e2d\r\nif&nbsp;not&nbsp;player.is_hit:&nbsp;&nbsp;\r\n&nbsp;&nbsp;if&nbsp;shoot_frequency&nbsp;%&nbsp;15&nbsp;==&nbsp;0:\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;player.shoot(bullet_img)\r\n&nbsp;&nbsp;&nbsp;&nbsp;shoot_frequency&nbsp;+=&nbsp;1\r\n&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;shoot_frequency&nbsp;&amp;gt;=&nbsp;15:\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;shoot_frequency&nbsp;=&nbsp;0\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\r\nfor&nbsp;bullet&nbsp;in&nbsp;player.bullets:&nbsp;&nbsp;\r\n&nbsp;&nbsp;#2.&nbsp;\u4ee5\u56fa\u5b9a\u901f\u5ea6\u79fb\u52a8***\r\n&nbsp;&nbsp;&nbsp;&nbsp;bullet.move()&nbsp;&nbsp;\r\n&nbsp;&nbsp;#3.&nbsp;\u79fb\u52a8\u51fa\u5c4f\u5e55\u540e\u5220\u9664***\r\n&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;bullet.rect.bottom&nbsp;&lt;p&gt;4. \u654c\u673a\u5904\u7406&lt;br&gt;\u654c\u673a\u9700\u8981\u968f\u673a\u5728\u754c\u9762\u4e0a\u65b9\u4ea7\u751f\uff0c\u5e76\u4ee5\u4e00\u5b9a\u901f\u5ea6\u5411\u4e0b\u79fb\u52a8\u3002&lt;br&gt;\u8be6\u7ec6\u6b65\u9aa4&lt;br&gt;&lt;\/p&gt;&lt;p&gt;\u751f\u6210\u654c\u673a\uff0c\u9700\u8981\u63a7\u5236\u751f\u6210\u9891\u7387&lt;\/p&gt;&lt;p&gt;\u79fb\u52a8\u654c\u673a&lt;\/p&gt;&lt;p&gt;\u654c\u673a\u4e0e\u73a9\u5bb6\u98de\u673a\u78b0\u649e\u6548\u679c\u5904\u7406&lt;\/p&gt;&lt;p&gt;\u79fb\u52a8\u51fa\u5c4f\u5e55\u540e\u5220\u9664\u654c\u673a&lt;\/p&gt;&lt;p&gt;\u654c\u673a\u88ab***\u51fb\u4e2d\u6548\u679c\u5904\u7406&lt;br&gt;&lt;\/p&gt;&lt;p&gt;\u793a\u4f8b\u4ee3\u7801&lt;\/p&gt;&lt;pre class=\"brush:python;toolbar:false\"&gt;#1.&nbsp;\u751f\u6210\u654c\u673a\uff0c\u9700\u8981\u63a7\u5236\u751f\u6210\u9891\u7387\r\nif&nbsp;enemy_frequency&nbsp;%&nbsp;50&nbsp;==&nbsp;0:\r\n&nbsp;&nbsp;&nbsp;&nbsp;enemy1_pos&nbsp;=&nbsp;[random.randint(0,&nbsp;SCREEN_WIDTH&nbsp;-&nbsp;enemy1_rect.width),&nbsp;0]\r\n&nbsp;&nbsp;&nbsp;&nbsp;enemy1&nbsp;=&nbsp;Enemy(enemy1_img,&nbsp;enemy1_down_imgs,&nbsp;enemy1_pos)\r\n&nbsp;&nbsp;&nbsp;&nbsp;enemies1.add(enemy1)\r\nenemy_frequency&nbsp;+=&nbsp;1if&nbsp;enemy_frequency&nbsp;&amp;gt;=&nbsp;100:\r\n&nbsp;&nbsp;&nbsp;&nbsp;enemy_frequency&nbsp;=&nbsp;0\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\r\nfor&nbsp;enemy&nbsp;in&nbsp;enemies1:&nbsp;&nbsp;&nbsp;&nbsp;\r\n&nbsp;&nbsp;&nbsp;&nbsp;#2.&nbsp;\u79fb\u52a8\u654c\u673a\r\n&nbsp;&nbsp;&nbsp;&nbsp;enemy.move()&nbsp;&nbsp;\r\n&nbsp;&nbsp;&nbsp;&nbsp;#3.&nbsp;\u654c\u673a\u4e0e\u73a9\u5bb6\u98de\u673a\u78b0\u649e\u6548\u679c\u5904\u7406\r\n&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;pygame.sprite.collide_circle(enemy,&nbsp;player):\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;enemies_down.add(enemy)\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;enemies1.remove(enemy)\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;player.is_hit&nbsp;=&nbsp;True\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break\r\n&nbsp;&nbsp;&nbsp;&nbsp;#4.&nbsp;\u79fb\u52a8\u51fa\u5c4f\u5e55\u540e\u5220\u9664\u98de\u673a&nbsp;&nbsp;&nbsp;&nbsp;\r\n&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;enemy.rect.top&nbsp;&nbsp;7:\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;enemies_down.remove(enemy_down)\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;score&nbsp;+=&nbsp;1000\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;continue\r\n&nbsp;&nbsp;&nbsp;&nbsp;screen.blit(enemy_down.down_imgs[enemy_down.down_index&nbsp;\/&nbsp;2],&nbsp;enemy_down.rect)\r\n&nbsp;&nbsp;&nbsp;&nbsp;enemy_down.down_index&nbsp;+=&nbsp;1\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\r\n#&nbsp;\u663e\u793a\u654c\u673a\r\nenemies1.draw(screen)<\/pre>\n<p>  \u767b\u5f55\u540e\u590d\u5236   <\/p>\n<p>5. \u5f97\u5206\u663e\u793a<br \/>\u5728\u6e38\u620f\u754c\u9762\u56fa\u5b9a\u4f4d\u7f6e\u663e\u793a\u6d88\u706d\u4e86\u591a\u5c11\u76ee\u6807\u654c\u673a\u3002<br \/>\u793a\u4f8b\u4ee3\u7801<\/p>\n<pre>#&nbsp;\u7ed8\u5236\u5f97\u5206\r\nscore_font&nbsp;=&nbsp;pygame.font.Font(None,&nbsp;36)\r\nscore_text&nbsp;=&nbsp;score_font.render(str(score),&nbsp;True,&nbsp;(128,&nbsp;128,&nbsp;128))\r\ntext_rect&nbsp;=&nbsp;score_text.get_rect()\r\ntext_rect.topleft&nbsp;=&nbsp;[10,&nbsp;10]\r\nscreen.blit(score_text,&nbsp;text_rect)<\/pre>\n<p>  \u767b\u5f55\u540e\u590d\u5236   <\/p>\n<p>\u4ee5\u4e0a\u5c31\u662fpygame\u5f00\u53d1PC\u7aef\u5fae\u4fe1\u6253\u98de\u673a\u6e38\u620f\u5b9e\u4f8b\u4ecb\u7ecd\u7684\u8be6\u7ec6\u5185\u5bb9\uff0c\u66f4\u591a\u8bf7\u5173\u6ce8\u7c73\u4e91\u5176\u5b83\u76f8\u5173\u6587\u7ae0\uff01<\/p>\n","protected":false},"excerpt":{"rendered":"<p>pygame\u5f00\u53d1pc\u7aef\u5fae\u4fe1\u6253\u98de\u673a\u6e38\u620f \u4e00\u3001\u9879\u76ee\u7b80\u4ecb1. \u4ecb\u7ecd\u672c\u9879\u76ee\u7c7b\u4f3c\u66fe\u7ecf\u706b\u7206\u7684\u5fae\u4fe1\u6253\u98de\u673a\u6e38\u620f\u3002\u6e38\u620f\u5c06\u4f7f\u7528Python\u8bed\u8a00\u5f00\u53d1\uff0c\u4e3b\u8981\u7528\u5230pygame\u7684API\u3002\u6e38\u620f\u6700\u7ec8\u5c06\u4f1a\u4ee5python\u6e90\u6587\u4ef6game.py\u5f62\u5f0f\u5b8c\u6210\uff0c\u53ea\u9700\u8981\u8fd0\u884cpython game.py\u5c31\u53ef\u4ee5\u8fdb\u5165\u6e38\u620f\u3002\u6e38\u620f\u6700\u7ec8\u6548\u679c\u622a\u56fe\u5982\u4e0b\uff1a 2. \u77e5\u8bc6\u70b9\u672c\u5b9e\u9a8c\u4e2d\u5c06\u4ecb\u7ecd\u5728Linux\u684c\u9762\u73af\u5883\u4e0b\u4f7f\u7528Python\u53capygame\u5feb\u901f\u5f00\u53d1\u5c0f\u6e38\u620f\u7684\u65b9\u5f0f\u3002\u53ef\u4ee5\u901a\u8fc7\u8fd9\u4e2a\u6e38\u620f\u5165\u95e8pygame\u6e38\u620f\u5f00\u53d1\u30023. \u53c2\u8003\u6587\u6863 \u4ee3\u7801\u53c2\u8003 Kill-Console\u5199\u7684PythonShootGame \u6587\u6863\u53c2\u8003&nbsp;pygame\u6587\u6863 4. \u5b89\u88c5\u4f9d\u8d56\u5305\uff08\u4ee5\u4e0b\u5185\u5bb9\u9700\u8981\u5728\u5b9e\u9a8c\u697c\u5b98\u65b9\u7f51\u7ad9\u5b9e\u73b0\uff0c\u4e0d\u9700\u8981\u7684\u4e5f\u53ef\u4ee5\u76f4\u63a5\u8df3\u8fc7\uff09 \u9700\u8981\u5b89\u88c5pygame\u5e93\u6765\u652f\u6301\u672c\u5b9e\u9a8c\u6240\u9700\u7684\u4ee3\u7801\u8fd0\u884c\u3002\u5728\u5b9e\u9a8c\u73af\u5883\u4e2d\u6253\u5f00Xfce\u7ec8\u7aef\uff0c\u5e76\u8f93\u5165\u4ee5\u4e0b\u547d\u4ee4\u6765\u5b89\u88c5pygame\uff0c\u4f1a\u63d0\u793a\u8f93\u5165shiyanlou\u7684\u5bc6\u7801\uff0c\u5bc6\u7801\u4e5f\u662fshiyanlou\uff1a$ sudo apt-get update$ sudo apt-get install python-pygame\u4e8c\u3001\u6280\u672f\u8bbe\u8ba11. \u6e38\u620f\u89d2\u8272\u672c\u6e38\u620f\u4e2d\u6240\u9700\u7684\u89d2\u8272\u5305\u62ec\u73a9\u5bb6\u98de\u673a\u3001\u654c\u673a\u53ca***\u3002\u7528\u6237\u53ef\u4ee5\u901a\u8fc7\u952e\u76d8\u79fb\u52a8\u73a9\u5bb6\u98de\u673a\u5728\u5c4f\u5e55\u4e0a\u7684\u4f4d\u7f6e\u6765\u6253\u51fb\u4e0d\u540c\u4f4d\u7f6e\u7684\u654c\u673a\u3002\u56e0\u6b64\u8bbe\u8ba1\u4ee5\u4e0bPlayer\uff0cEnemy\u548cBullet\u4e09\u4e2a\u7c7b\u5bf9\u5e94\u4e09\u79cd\u6e38\u620f\u89d2\u8272\u3002\u5bf9\u4e8ePlayer\uff0c\u9700\u8981\u7684\u64cd\u4f5c\u6709\u5c04\u51fb\u548c\u79fb\u52a8\u4e24\u79cd\uff0c\u79fb\u52a8\u53c8\u5206\u4e3a\u4e0a\u4e0b\u5de6\u53f34\u79cd\u60c5\u51b5\u3002\u5bf9\u4e8eEnemy\uff0c\u5219\u6bd4\u8f83\u7b80\u5355\uff0c\u53ea\u9700\u8981\u79fb\u52a8\u5373\u53ef\uff0c\u4ece\u5c4f\u5e55\u4e0a\u65b9\u51fa\u73b0\u5e76\u79fb\u52a8\u5230\u5c4f\u5e55\u4e0b\u65b9\u3002\u5bf9\u4e8eBullet\uff0c\u4e0e\u98de\u673a\u76f8\u540c\uff0c\u4ec5\u9700\u8981\u4ee5\u4e00\u5b9a\u901f\u5ea6\u79fb\u52a8\u5373\u53ef\u30022. \u6e38\u620f\u529f\u80fd\u76f8\u4fe1\u73a9\u8fc7\u5fae\u4fe1\u6253\u98de\u673a\u7684\u670b\u53cb\u90fd\u719f\u6089\uff0c\u8fd9\u91cc\u5c06\u6e38\u620f\u505a\u4e86\u7b80\u5316\u3002\u98de\u673a\u7684\u901f\u5ea6\u56fa\u5b9a\uff0c***\u7684\u901f\u5ea6\u56fa\u5b9a\uff0c\u57fa\u672c\u64cd\u4f5c\u662f\u79fb\u52a8\u73a9\u5bb6\u98de\u673a\uff0c\u76ee\u6807\u98de\u673a\u968f\u673a\u4ece\u5c4f\u5e55\u4e0a\u65b9\u51fa\u73b0\u5e76\u5300\u901f\u843d\u5230\u4e0b\u65b9\uff0c***\u4ece\u73a9\u5bb6\u98de\u673a\u53d1\u51fa\uff0c\u78b0\u5230\u76ee\u6807\u98de\u673a\u4f1a\u51fb\u6bc1\uff0c\u5982\u679c\u76ee\u6807\u98de\u673a\u78b0\u5230\u73a9\u5bb6\u98de\u673a\uff0c\u5219Game Over\u5e76\u663e\u793a\u5206\u6570\u3002\u4e09\u3001\u4ee3\u7801\u5b9e\u73b01. \u754c\u9762\u663e\u793a\u4ee3\u7801\u5b9e\u73b0\u6240\u9700\u7684resources\u56fe\u7247\u6587\u4ef6\u90fd\u53ef\u4ee5\u901a\u8fc7\u4e0b\u8ff0\u547d\u4ee4\u83b7\u53d6\uff1a $git clone https:\/\/github.com\/shiyanlou\/PythonShootGame.git \u8be6\u7ec6\u6b65\u9aa4 \u521d\u59cb\u5316pygame \u8bbe\u7f6e\u6e38\u620f\u754c\u9762\u5927\u5c0f\u3001\u80cc\u666f\u56fe\u7247\u53ca\u6807\u9898 \u6e38\u620f\u4e3b\u5faa\u73af\u5185\u9700\u8981\u5904\u7406\u6e38\u620f\u754c\u9762\u7684\u521d\u59cb\u5316\u3001\u66f4\u65b0\u53ca\u9000\u51fa \u663e\u793a\u73a9\u5bb6\u98de\u673a\uff08\u4ee3\u7801\u4e2d\u4f7f\u7528\u7684resources\/image\/shoot.png\u56fe\u91cc\u5305\u542b\u591a\u79cd\u98de\u673a\uff0c\u53ea\u9700\u8981\u4f7f\u7528pygame.image\u7684subsurface API\u6839\u636e\u4f4d\u7f6e\u622a\u53d6shoot.png\u4e2d\u6240\u9700\u7684\u56fe\u7247\uff09 \u793a\u4f8b\u4ee3\u7801 #1.&nbsp;\u521d\u59cb\u5316pygame pygame.init() &nbsp; #2.&nbsp;\u8bbe\u7f6e\u6e38\u620f\u754c\u9762\u5927\u5c0f\u3001\u80cc\u666f\u56fe\u7247\u53ca\u6807\u9898 #&nbsp;\u6e38\u620f\u754c\u9762\u50cf\u7d20\u5927\u5c0f screen&nbsp;=&nbsp;pygame.display.set_mode((480,&nbsp;800)) &nbsp; #&nbsp;\u6e38\u620f\u754c\u9762\u6807\u9898 pygame.display.set_caption(&#8216;\u98de\u673a\u5927\u6218&#8217;) &nbsp; #&nbsp;\u80cc\u666f\u56fe background&nbsp;=&nbsp;pygame.image.load(&#8216;resources\/image\/background.png&#8217;).convert() &nbsp; #&nbsp;Game&nbsp;Over\u7684\u80cc\u666f\u56fe game_over&nbsp;=&nbsp;pygame.image.load(&#8216;resources\/image\/gameover.png&#8217;) &nbsp; #&nbsp;\u98de\u673a\u56fe\u7247 plane_img&nbsp;=&nbsp;pygame.image.load(&#8216;resources\/image\/shoot.png&#8217;) &nbsp; #&nbsp;\u622a\u53d6\u73a9\u5bb6\u98de\u673a\u56fe\u7247 player&nbsp;=&nbsp;plane_img.subsurface(pygame.Rect(0,&nbsp;99,&nbsp;102,&nbsp;126)) [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[19],"tags":[],"class_list":["post-29272","post","type-post","status-publish","format-standard","hentry","category-19"],"_links":{"self":[{"href":"https:\/\/fwq.ai\/blog\/wp-json\/wp\/v2\/posts\/29272","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fwq.ai\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fwq.ai\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fwq.ai\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fwq.ai\/blog\/wp-json\/wp\/v2\/comments?post=29272"}],"version-history":[{"count":0,"href":"https:\/\/fwq.ai\/blog\/wp-json\/wp\/v2\/posts\/29272\/revisions"}],"wp:attachment":[{"href":"https:\/\/fwq.ai\/blog\/wp-json\/wp\/v2\/media?parent=29272"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fwq.ai\/blog\/wp-json\/wp\/v2\/categories?post=29272"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fwq.ai\/blog\/wp-json\/wp\/v2\/tags?post=29272"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}