{"id":3037,"date":"2024-11-23T11:37:11","date_gmt":"2024-11-23T03:37:11","guid":{"rendered":"https:\/\/saludpcb.com\/zh\/?p=3037"},"modified":"2025-09-26T06:16:04","modified_gmt":"2025-09-25T22:16:04","slug":"designing-a-python-animation-with-ascii-art","status":"publish","type":"post","link":"https:\/\/saludpcb.com\/zh\/designing-a-python-animation-with-ascii-art\/","title":{"rendered":"\u87a2\u5e55\u4e0a\u7684\u61f7\u820a\u8207\u8907\u53e4 | \u7528 Python Animation \u8a2d\u8a08 ASCII \u52d5\u756b"},"content":{"rendered":"\n<hr class=\"wp-block-separator alignwide has-text-color has-palette-color-1-color has-alpha-channel-opacity has-palette-color-1-background-color has-background is-style-wide\"\/>\n\n\n\n<p>\u96a8\u8457\u79d1\u6280\u65e5\u65b0\u6708\u7570\uff0c\u4eba\u5011\u5c0d\u904e\u53bb\u7684\u7d14\u6a38\u8207\u7f8e\u597d\u6108\u767c\u61f7\u5ff5\u3002\u9019\u7a2e\u61f7\u820a\u7684\u60c5\u611f\uff0c\u4e0d\u50c5\u9ad4\u73fe\u5728\u6642\u5c1a\u3001\u97f3\u6a02\u7b49\u9818\u57df\uff0c\u4e5f\u9010\u6f38\u6ef2\u900f\u5230\u7a0b\u5f0f\u8a2d\u8a08\u7684 <strong>Python Animation<\/strong> \u4e16\u754c\u3002\u6211\u5011\u53ef\u4ee5\u5275\u9020\u51fa\u5145\u6eff\u5fa9\u53e4\u60c5\u61f7\u7684\u52d5\u756b\uff0c\u5c07\u61f7\u820a\u60c5\u612b\u8207\u73fe\u4ee3\u79d1\u6280\u5de7\u5999\u5730\u7d50\u5408\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"2048\" height=\"2048\" src=\"https:\/\/saludpcb.com\/zh\/wp-content\/uploads\/2024\/11\/Nostalgia-and-Retro-Designing-a-Python-Animation-with-ASCII-Art-2.jpg\" alt=\"Python Animation\" class=\"wp-image-3067\" title=\"\" srcset=\"https:\/\/saludpcb.com\/zh\/wp-content\/uploads\/2024\/11\/Nostalgia-and-Retro-Designing-a-Python-Animation-with-ASCII-Art-2.jpg 2048w, https:\/\/saludpcb.com\/zh\/wp-content\/uploads\/2024\/11\/Nostalgia-and-Retro-Designing-a-Python-Animation-with-ASCII-Art-2-768x768.jpg 768w, https:\/\/saludpcb.com\/zh\/wp-content\/uploads\/2024\/11\/Nostalgia-and-Retro-Designing-a-Python-Animation-with-ASCII-Art-2-1536x1536.jpg 1536w\" sizes=\"auto, (max-width: 2048px) 100vw, 2048px\" \/><\/figure>\n\n\n\n<div class=\"wp-block-rank-math-toc-block\" id=\"rank-math-toc\"><h2>\u5167\u5bb9<\/h2><nav><ul><li class=\"\"><a href=\"#\u7c21\u4ecb\">\u7c21\u4ecb<\/a><\/li><li class=\"\"><a href=\"#\u4ec0\u9ebc\u662f-ascii-art\uff1f\">\u4ec0\u9ebc\u662f ASCII Art\uff1f<\/a><\/li><li class=\"\"><a href=\"#-1\">\u8a2d\u5b9a\u74b0\u5883<\/a><\/li><li class=\"\"><a href=\"#\u7a0b\">Python Animation \u7a0b\u5f0f\u78bc<\/a><\/li><li class=\"\"><a href=\"#\u7a0b\u5f0f\u7d30\u7bc0\u89e3\u6790\">\u7a0b\u5f0f\u7d30\u7bc0\u89e3\u6790<\/a><\/li><li class=\"\"><a href=\"#\u57f7\u884c\u6548\u679c\">\u57f7\u884c\u6548\u679c<\/a><\/li><li class=\"\"><a href=\"#\u7d50\u8ad6\">\u7d50\u8ad6<\/a><\/li><\/ul><\/nav><\/div>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"\u7c21\u4ecb\">\u7c21\u4ecb<\/h2>\n\n\n\n<p>\u5728\u7576\u4eca\u9ad8\u89e3\u6790\u5ea6\u5716\u5f62\u548c\u5148\u9032\u52d5\u756b\u76db\u884c\u7684\u6578\u4f4d\u6642\u4ee3\uff0cASCII Art \u7684\u7c21\u6f54\u7f8e\u5b78\u4f9d\u7136\u5177\u6709\u7368\u7279\u7684\u9b45\u529b\u548c\u5438\u5f15\u529b\u3002\u9019\u7a2e\u61f7\u820a\u7684\u5fa9\u53e4\u98a8\u683c\u53ef\u4ee5\u6210\u70ba\u8a2d\u8a08\u5275\u610f\u9805\u76ee\u7684\u5f37\u5927\u5de5\u5177\u3002\u9019\u7bc7\u6587\u7ae0\u5c07\u5f15\u5c0e\u4f60\u4f7f\u7528 Python \u5275\u5efa\u4e00\u500b\u7528 ASCII \u85dd\u8853\u88fd\u4f5c\u7684\u52d5\u756b\uff0c\u5c55\u793a\u4e00\u8f1b\u8eca\u5728\u8def\u4e0a\u79fb\u52d5\u7684\u904e\u7a0b\u3002\u6e96\u5099\u597d\u56de\u5230\u7de8\u7a0b\u7684\u7d14\u771f\u6642\u4ee3\u4e86\u55ce\uff1f<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"\u4ec0\u9ebc\u662f-ascii-art\uff1f\">\u4ec0\u9ebc\u662f ASCII Art\uff1f<\/h2>\n\n\n\n<p>ASCII Art \u662f\u4e00\u7a2e\u4f7f\u7528 ASCII\uff08\u7f8e\u570b\u4fe1\u606f\u4ea4\u63db\u6a19\u6e96\u78bc\uff09\u5b57\u7b26\u5275\u5efa\u5716\u50cf\u548c\u8a2d\u8a08\u7684\u5716\u5f62\u6280\u8853\u3002\u5b83\u56de\u6eaf\u5230\u8a08\u7b97\u6a5f\u65e9\u671f\u6642\u4ee3\uff0c\u90a3\u6642\u6587\u672c\u5716\u5f62\u662f\u6a19\u6e96\u3002\u5118\u7ba1\u7c21\u55ae\uff0cASCII Art \u53ef\u4ee5\u6975\u5177\u7d30\u7bc0\u548c\u8868\u73fe\u529b\uff0c\u7528\u6587\u672c\u5b57\u7b26\u5275\u4f5c\u85dd\u8853\u4f5c\u54c1\u80fd\u6fc0\u767c\u5275\u9020\u529b\u548c\u554f\u984c\u89e3\u6c7a\u80fd\u529b\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"-1\">\u8a2d\u5b9a\u74b0\u5883<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong><a href=\"https:\/\/saludpcb.com\/zh\/python-3-x-quick-install-start\/\">\u5b89\u88dd Python 3.x or \u66f4\u9ad8<\/a>\u3002<\/strong><\/li>\n\n\n\n<li><strong>\u7d42\u7aef\u6216\u547d\u4ee4\u884c\u5de5\u5177\u4e26\u53ef\u57f7\u884c Python \u8173\u672c\u3002<\/strong><\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"\u7a0b\">Python Animation \u7a0b\u5f0f\u78bc<\/h2>\n\n\n\n<p>\u76ee\u6a19\u662f\u5275\u5efa\u4e00\u8f1b\u8eca\u5b50\uff0c\u5b83\u53ef\u4ee5\u5728\u756b\u5e03\u4e0a\u5de6\u53f3\u79fb\u52d5\uff0c\u4e26\u6839\u64da\u79fb\u52d5\u65b9\u5411\u5207\u63db\u4e0d\u540c\u7684\u8eca\u5b50\u5f62\u72c0\u3002\u4ee5\u4e0b\u662f\u5b8c\u6574\u7684 Python \u7a0b\u5f0f\u78bc\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"python\" class=\"language-python\">import os\nimport time\n\ndef clear_screen():\n    # Windows uses 'cls', Unix\/Linux\/MacOS uses 'clear'\n    os.system('cls' if os.name == 'nt' else 'clear')\n\ndef draw_car(position, direction=\"right\"):\n    # Create a blank canvas\n    road = [' ' * 60 for _ in range(6)]\n    \n    # ASCII art for the car (facing right)\n    car_right = [\n        '       ______',\n        '      \/|_||_\\\\`.__',\n        '     (   _    _ _\\\\',\n        '      `-(_)--(_)-\\'']\n    \n    # ASCII art for the car (facing left, horizontally flipped)\n    car_left = [\n        '       ______',\n        '  __.\\'\/_||_||\\\\',\n        ' \/_ _    _   )',\n        ' \\'-(_)--(_)-\\'']\n    \n    # Choose car art based on the direction\n    car = car_left if direction == \"left\" else car_right\n    \n    # Insert the car at the given position\n    for i, line in enumerate(car):\n        if position &lt; len(road[i]):\n            road[i] = ' ' * position + line + ' ' * (60 - len(line) - position)\n    \n    # Add the road\n    road[-1] = '_' * 60\n    \n    # Return the full scene as a single string\n    return '\\n'.join(road)\n\ndef animate_car():\n    try:\n        # Move the car from left to right\n        for position in range(40):\n            clear_screen()\n            print(draw_car(position, direction=\"right\"))\n            time.sleep(0.1)  # Pause for 0.1 seconds\n        \n        # Move the car from right to left\n        for position in range(40, -1, -1):\n            clear_screen()\n            print(draw_car(position, direction=\"left\"))\n            time.sleep(0.1)\n            \n    except KeyboardInterrupt:\n        print(\"\\nAnimation ended!\")\n\nif __name__ == \"__main__\":\n    print(\"Press Ctrl+C to stop the animation\")\n    animate_car()\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"\u7a0b\u5f0f\u7d30\u7bc0\u89e3\u6790\">\u7a0b\u5f0f\u7d30\u7bc0\u89e3\u6790<\/h2>\n\n\n\n<p><strong>\u5f15\u5165\u5fc5\u8981\u7684\u6a21\u7d44<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"python\" class=\"language-python\">import os\nimport time<\/code><\/pre>\n\n\n\n<p><strong><code>os<\/code><\/strong>: \u7528\u4f86\u57f7\u884c\u8de8\u5e73\u53f0\u7684\u6307\u4ee4\uff0c\u9019\u88e1\u4e3b\u8981\u7528\u65bc\u6e05\u9664\u756b\u9762\u3002<strong><code>time<\/code><\/strong>: \u7528\u4f86\u5728\u6bcf\u500b\u756b\u9762\u4e4b\u9593\u6dfb\u52a0\u5ef6\u9072\uff0c\u5275\u9020\u6d41\u66a2\u7684\u52d5\u756b\u6548\u679c\u3002<\/p>\n\n\n\n<p><strong>\u6e05\u9664\u87a2\u5e55<\/strong> <\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"python\" class=\"language-python\">def clear_screen():\n    os.system('cls' if os.name == 'nt' else 'clear')<\/code><\/pre>\n\n\n\n<p>\u6bcf\u4e00\u5e40\u52d5\u756b\u9700\u8981\u6e05\u7a7a\u7d42\u7aef\u756b\u9762\uff0c\u5426\u5247\u756b\u9762\u6703\u758a\u52a0\uff0c\u5f71\u97ff\u89c0\u770b\u6548\u679c\u3002\u4e26\u6839\u64da\u4f5c\u696d\u7cfb\u7d71\u9078\u64c7\u5c0d\u61c9\u7684\u6e05\u5c4f\u6307\u4ee4\u3002<strong>Windows<\/strong>: \u4f7f\u7528\u00a0<code>cls<\/code> \u800c <strong>Unix\/Linux\/MacOS<\/strong>: \u4f7f\u7528\u00a0<code>clear<\/code>\u3002<\/p>\n\n\n\n<p><strong>\u7e6a\u88fd\u8eca\u5b50\u8207\u9053\u8def<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"python\" class=\"language-python\">def draw_car(position, direction=\"right\"):\n    ...<\/code><\/pre>\n\n\n\n<p>\u756b\u5e03\u7531 6 \u884c\u5bec\u5ea6 60 \u7684\u5b57\u5143\u7d44\u6210\uff0c\u6700\u5e95\u5c64\u70ba\u5e95\u7dda\u8def\u9762\uff0c\u8eca\u5b50\u7684 ASCII \u85dd\u8853\u6839\u64da\u65b9\u5411\u5207\u63db\uff0c\u4e26\u6309\u7167\u6307\u5b9a\u7684\u00a0<code>position<\/code>\u63d2\u5165\u756b\u5e03\uff0c\u78ba\u4fdd\u4e0d\u8d85\u51fa\u908a\u754c\u3002<\/p>\n\n\n\n<p><strong>ASCII \u52d5\u756b<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"python\" class=\"language-python\">car_right = [\n    '       ______',\n    '      \/|_||_\\\\`.__',\n    '     (   _    _ _\\\\',\n    '      `-(_)--(_)-\\'']\n\ncar_left = [\n    '       ______',\n    '  __.\\'\/_||_||\\\\',\n    ' \/_ _    _   )',\n    ' \\'-(_)--(_)-\\'']<\/code><\/pre>\n\n\n\n<p>\u52d5\u756b\u908f\u8f2f\u900f\u904e\u5f9e\u5de6\u5230\u53f3\u53ca\u53f3\u5230\u5de6\u7684\u5faa\u74b0\u63a7\u5236\u8eca\u5b50\u4f4d\u7f6e\uff0c\u6bcf\u5e40\u66f4\u65b0\u756b\u9762\u4e26\u8abf\u7528\u00a0<code>draw_car<\/code>\u00a0\u7e6a\u88fd\uff0c\u4e26\u4f7f\u7528\u00a0<code>try-except<\/code>\u6355\u6349\u9375\u76e4\u4e2d\u65b7 (Ctrl+C) \u5b89\u5168\u7d50\u675f\u52d5\u756b\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"\u57f7\u884c\u6548\u679c\">\u57f7\u884c\u6548\u679c<\/h2>\n\n\n\n<p>\u57f7\u884c\u7a0b\u5f0f\u5f8c\uff0c\u756b\u9762\u4e0a\u6703\u986f\u793a\u4e00\u8f1b\u5c0f\u8eca\u4ee5\u6d41\u66a2\u7684\u52d5\u756b\u5f62\u5f0f\u4f86\u56de\u79fb\u52d5\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"python\" class=\"language-python\">         ______\n        \/|_||_\\`.__\n       (   _    _ _\\\n        `-(_)--(_)-'\n________________________________________________________<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"\u7d50\u8ad6\">\u7d50\u8ad6<\/h2>\n\n\n\n<p>\u5229\u7528 <a href=\"https:\/\/www.python.org\" target=\"_blank\" rel=\"noopener\">Python<\/a> \u5275\u5efa ASCII \u52d5\u756b\uff0c\u662f\u4e00\u500b\u7d50\u5408\u7a0b\u5f0f\u908f\u8f2f\u8207\u5275\u610f\u8868\u73fe\u7684\u6709\u8da3\u5c08\u6848\u3002\u5728\u9019\u7bc7\u6559\u5b78\u4e2d\uff0c\u6211\u5011\u5f9e\u57fa\u672c\u756b\u5e03\u958b\u59cb\uff0c\u642d\u914d\u5faa\u74b0\u63a7\u5236\u548c ASCII \u85dd\u8853\uff0c\u88fd\u4f5c\u51fa\u4e00\u500b\u8eca\u5b50\u5de6\u53f3\u79fb\u52d5\u7684\u52d5\u614b\u6548\u679c\u3002\u901a\u904e\u6e05\u7406\u756b\u9762\u3001\u66f4\u65b0\u4f4d\u7f6e\u548c\u8655\u7406\u65b9\u5411\uff0c\u52d5\u756b\u8b8a\u5f97\u6d41\u66a2\u81ea\u7136\u3002\u6b64\u5916\uff0c\u6211\u5011\u9084\u5b78\u7fd2\u4e86\u4f7f\u7528\u00a0<code>try-except<\/code>\u00a0\u6355\u6349\u9375\u76e4\u4e2d\u65b7 (Ctrl+C)\uff0c\u8b93\u7a0b\u5f0f\u80fd\u5b89\u5168\u5730\u7d50\u675f\u3002\u9019\u6a23\u7684\u9805\u76ee\u4e0d\u50c5\u8b93\u4eba\u56de\u5473 ASCII \u85dd\u8853\u7684\u61f7\u820a\u9b45\u529b\uff0c\u9084\u63d0\u4f9b\u4e86\u5f88\u5927\u7684\u64f4\u5c55\u6027\uff0c\u7121\u8ad6\u662f\u6dfb\u52a0\u80cc\u666f\u5143\u7d20\u3001\u5be6\u73fe\u591a\u8eca\u4e92\u52d5\uff0c\u751a\u81f3\u5275\u9020\u5b8c\u5168\u81ea\u5b9a\u7fa9\u7684\u5834\u666f\uff0c\u90fd\u80fd\u6fc0\u767c\u4f60\u7684\u5275\u610f\u3002\u73fe\u5728\u5c31\u52d5\u624b\u8a66\u8a66\uff0c\u63a2\u7d22 ASCII \u52d5\u756b\u7684\u7121\u9650\u53ef\u80fd\u5427\uff01<\/p>\n\n\n\n<hr class=\"wp-block-separator alignwide has-text-color has-palette-color-1-color has-alpha-channel-opacity has-palette-color-1-background-color has-background is-style-wide\"\/>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u96a8\u8457\u79d1\u6280\u65e5\u65b0\u6708\u7570\uff0c\u4eba\u5011\u5c0d\u904e\u53bb\u7684\u7d14\u6a38\u8207\u7f8e\u597d\u6108\u767c\u61f7\u5ff5\u3002\u9019\u7a2e\u61f7\u820a\u7684\u60c5\u611f\uff0c\u4e0d\u50c5\u9ad4\u73fe\u5728\u6642\u5c1a\u3001\u97f3\u6a02\u7b49\u9818\u57df\uff0c\u4e5f\u9010\u6f38\u6ef2\u900f\u5230\u7a0b\u5f0f [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":3068,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3],"tags":[61,27,63,20,60,10,64,11,62],"class_list":["post-3037","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-python","tag-bluetooth","tag-c","tag-firmware","tag-hardware","tag-iot","tag-mcu","tag-module","tag-tutorial","tag-wifi"],"blocksy_meta":[],"_links":{"self":[{"href":"https:\/\/saludpcb.com\/zh\/wp-json\/wp\/v2\/posts\/3037","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/saludpcb.com\/zh\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/saludpcb.com\/zh\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/saludpcb.com\/zh\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/saludpcb.com\/zh\/wp-json\/wp\/v2\/comments?post=3037"}],"version-history":[{"count":19,"href":"https:\/\/saludpcb.com\/zh\/wp-json\/wp\/v2\/posts\/3037\/revisions"}],"predecessor-version":[{"id":3071,"href":"https:\/\/saludpcb.com\/zh\/wp-json\/wp\/v2\/posts\/3037\/revisions\/3071"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/saludpcb.com\/zh\/wp-json\/wp\/v2\/media\/3068"}],"wp:attachment":[{"href":"https:\/\/saludpcb.com\/zh\/wp-json\/wp\/v2\/media?parent=3037"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/saludpcb.com\/zh\/wp-json\/wp\/v2\/categories?post=3037"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/saludpcb.com\/zh\/wp-json\/wp\/v2\/tags?post=3037"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}