{"id":13902,"date":"2024-06-17T20:25:52","date_gmt":"2024-06-17T18:25:52","guid":{"rendered":"https:\/\/pythonprogramming.altervista.org\/?p=13902"},"modified":"2024-06-18T15:58:28","modified_gmt":"2024-06-18T13:58:28","slug":"simple-game-part-iii","status":"publish","type":"post","link":"https:\/\/pythonprogramming.altervista.org\/simple-game-part-iii\/","title":{"rendered":"Simple game (part III)"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/pythonprogramming.altervista.org\/simple-game\/\" data-type=\"post\" data-id=\"13884\">PART I<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/pythonprogramming.altervista.org\/simple-game-part-ii\/\" data-type=\"post\" data-id=\"13896\">PART II<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/github.com\/formazione\/game_falling_aliens\/tree\/main\">REPOSITORY<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">I think this could be the final version. I just could make the player fire the aliens.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Avoid the Falling Aliens: An Exciting Arcade Adventure<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Welcome to &#8220;Avoid the Falling Aliens,&#8221; an exhilarating arcade game where quick reflexes and strategic shooting are key to survival. In this game, you control a basket at the bottom of the screen, aiming to dodge and shoot colorful aliens that descend from the sky. Use the left and right arrow keys to move the basket horizontally and press the &#8220;x&#8221; key to fire bullets upwards, targeting the falling aliens.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">As time progresses, the game ramps up in difficulty. The aliens not only increase in speed but also in number, making your task increasingly challenging. When aliens collide with the basket, you lose a life, and if your lives drop to zero, the game is over. However, the fun doesn&#8217;t end there\u2014when the game is over, the screen displays your score along with a &#8220;Game Over&#8221; message and prompts you to press any key to restart the adventure.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The game&#8217;s vibrant graphics, featuring red, green, and blue aliens, create a visually engaging experience. The added mechanic of aliens bouncing off each other and generating new aliens upon collision adds an extra layer of complexity, ensuring no two games are ever the same.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">&#8220;Avoid the Falling Aliens&#8221; is not just about dodging; it&#8217;s about precision shooting, timely movements, and managing an ever-increasing onslaught of alien invaders. Whether you&#8217;re looking to beat your high score or simply enjoy a fun and dynamic gaming experience, &#8220;Avoid the Falling Aliens&#8221; offers endless entertainment. So, get ready, aim, and fire\u2014see how long you can survive the alien invasion!<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/pythonprogramming.altervista.org\/wp-content\/uploads\/2024\/06\/image-3.png\"><img loading=\"lazy\" decoding=\"async\" width=\"960\" height=\"960\" src=\"https:\/\/pythonprogramming.altervista.org\/wp-content\/uploads\/2024\/06\/image-3-960x960.png\" alt=\"\" class=\"wp-image-13904\" srcset=\"https:\/\/pythonprogramming.altervista.org\/wp-content\/uploads\/2024\/06\/image-3-960x960.png 960w, https:\/\/pythonprogramming.altervista.org\/wp-content\/uploads\/2024\/06\/image-3-320x320.png 320w, https:\/\/pythonprogramming.altervista.org\/wp-content\/uploads\/2024\/06\/image-3-150x150.png 150w, https:\/\/pythonprogramming.altervista.org\/wp-content\/uploads\/2024\/06\/image-3-768x768.png 768w, https:\/\/pythonprogramming.altervista.org\/wp-content\/uploads\/2024\/06\/image-3.png 1024w\" sizes=\"auto, (max-width: 960px) 100vw, 960px\" \/><\/a><\/figure>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">import pygame\nimport random\nimport time\n\n# Initialize Pygame\npygame.init()\n\n# Constants\nSCREEN_WIDTH = 800\nSCREEN_HEIGHT = 600\nFPS = 60\nMAX_ALIENS = 20  # Cap the maximum number of aliens\n\n# Colors\nWHITE = (255, 255, 255)\nBLACK = (0, 0, 0)\n\n# Set up the display\nscreen = pygame.display.set_mode((SCREEN_WIDTH, SCREEN_HEIGHT))\npygame.display.set_caption(\"Avoid the Falling Aliens\")\n\n# Clock for controlling the frame rate\nclock = pygame.time.Clock()\n\n# Basket properties\nbasket_width = 100\nbasket_height = 20\nbasket_x = (SCREEN_WIDTH - basket_width) \/\/ 2\nbasket_y = SCREEN_HEIGHT - basket_height - 10\nbasket_speed = 10\n\n# Load sprite sheet and split into individual images\ndef load_spritesheet(filename, sprite_width, sprite_height, num_sprites):\n    sheet = pygame.image.load(filename).convert_alpha()\n    sprites = []\n    for i in range(num_sprites):\n        rect = pygame.Rect(i * sprite_width, 0, sprite_width, sprite_height)\n        image = sheet.subsurface(rect)\n        sprites.append(image)\n    return sprites\n\n# Load alien images from sprite sheet\nalien_images = load_spritesheet('aliens_spritesheet2.png', 30, 30, 3)\nalien_width = alien_images[0].get_width()\nalien_height = alien_images[0].get_height()\n\n# Object properties\nbase_speed = 3\n\n# Create initial objects\nnum_objects = 5\nobjects = [{'x': random.randint(0, SCREEN_WIDTH - alien_width), \n            'y': -alien_height, \n            'image': random.choice(alien_images), \n            'speed_x': random.choice([-1, 0, 1]) * random.randint(1, 3), \n            'speed_y': random.randint(base_speed, base_speed + 3)} for _ in range(num_objects)]\n\n# Basket movement\ndef move_basket(keys, basket_x):\n    if keys[pygame.K_LEFT] and basket_x > 0:\n        basket_x -= basket_speed\n    if keys[pygame.K_RIGHT] and basket_x &lt; SCREEN_WIDTH - basket_width:\n        basket_x += basket_speed\n    return basket_x\n\n# Check for collision with basket\ndef check_collision(basket_x, basket_y, object_x, object_y):\n    if (object_x &lt; basket_x + basket_width and\n        object_x + alien_width > basket_x and\n        object_y &lt; basket_y + basket_height and\n        object_y + alien_height > basket_y):\n        return True\n    return False\n\n# Check for collision between two objects\ndef check_object_collision(obj1, obj2):\n    if (obj1['x'] &lt; obj2['x'] + alien_width and\n        obj1['x'] + alien_width > obj2['x'] and\n        obj1['y'] &lt; obj2['y'] + alien_height and\n        obj1['y'] + alien_height > obj2['y']):\n        return True\n    return False\n\n# Add a new alien\ndef add_new_alien():\n    if len(objects) &lt; MAX_ALIENS:  # Add a new alien only if under the cap\n        new_alien = {\n            'x': random.randint(0, SCREEN_WIDTH - alien_width),\n            'y': -alien_height,\n            'image': random.choice(alien_images),\n            'speed_x': random.choice([-1, 0, 1]) * random.randint(1, 3),\n            'speed_y': random.randint(base_speed, base_speed + 3)\n        }\n        objects.append(new_alien)\n\n# Main game loop\nrunning = True\nscore = 0\nlives = 3\nstart_time = time.time()\nwhile running:\n    for event in pygame.event.get():\n        if event.type == pygame.QUIT:\n            running = False\n\n    keys = pygame.key.get_pressed()\n    basket_x = move_basket(keys, basket_x)\n\n    # Move the objects\n    current_time = time.time()\n    time_elapsed = current_time - start_time\n\n    # Periodically add new aliens at a controlled rate\n    if int(time_elapsed) % 10 == 0 and len(objects) &lt; num_objects + int(time_elapsed \/ 10):\n        add_new_alien()\n\n    for obj in objects:\n        obj['x'] += obj['speed_x']\n        obj['y'] += obj['speed_y'] + time_elapsed * 0.01  # Increase speed over time\n        \n        if obj['x'] &lt; 0 or obj['x'] > SCREEN_WIDTH - alien_width:\n            obj['speed_x'] *= -1\n            if len(objects) &lt; MAX_ALIENS:  # Add new alien only if under the cap\n                add_new_alien()\n\n        if obj['y'] > SCREEN_HEIGHT:\n            obj['y'] = -alien_height\n            obj['x'] = random.randint(0, SCREEN_WIDTH - alien_width)\n            obj['image'] = random.choice(alien_images)\n            obj['speed_x'] = random.choice([-1, 0, 1]) * random.randint(1, 3)\n            obj['speed_y'] = random.randint(base_speed, base_speed + 3) + int(time_elapsed \/ 10)\n            score += 1  # Increase score when the object safely passes\n\n        # Check for collision with basket\n        if check_collision(basket_x, basket_y, obj['x'], obj['y']):\n            lives -= 1\n            obj['y'] = -alien_height\n            obj['x'] = random.randint(0, SCREEN_WIDTH - alien_width)\n            obj['image'] = random.choice(alien_images)\n            obj['speed_x'] = random.choice([-1, 0, 1]) * random.randint(1, 3)\n            obj['speed_y'] = random.randint(base_speed, base_speed + 3) + int(time_elapsed \/ 10)\n\n    # Check for collisions between objects\n    for i in range(len(objects)):\n        for j in range(i + 1, len(objects)):\n            if check_object_collision(objects[i], objects[j]):\n                objects[i]['speed_x'], objects[j]['speed_x'] = objects[j]['speed_x'], objects[i]['speed_x']\n                objects[i]['speed_y'], objects[j]['speed_y'] = objects[j]['speed_y'], objects[i]['speed_y']\n                if len(objects) &lt; MAX_ALIENS:  # Add new alien only if under the cap\n                    add_new_alien()\n\n    if lives &lt;= 0:\n        running = False\n\n    # Fill the screen with a color\n    screen.fill(WHITE)\n\n    # Draw the basket\n    pygame.draw.rect(screen, BLACK, (basket_x, basket_y, basket_width, basket_height))\n\n    # Draw the objects\n    for obj in objects:\n        screen.blit(obj['image'], (obj['x'], obj['y']))\n\n    # Display the score and lives\n    font = pygame.font.Font(None, 36)\n    score_text = font.render(f\"Score: {score}\", True, BLACK)\n    lives_text = font.render(f\"Lives: {lives}\", True, BLACK)\n    screen.blit(score_text, (10, 10))\n    screen.blit(lives_text, (10, 50))\n\n    # Update the display\n    pygame.display.flip()\n\n    # Control the frame rate\n    clock.tick(FPS)\n\npygame.quit()\n<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><!-- se vuoi mettere un testo scorrevole\r\n[hoops name=\"typeWriterGen\"]\r\n\r\npoi metti un id diverso per ogni testo nella stessa pagina\r\n\r\n<div id=\"div01\">\r\n<script>\r\n\r\ntypeWriterGen(\"div01\",\"Esempio di testo scorrevole\");\r\n<\/script>\r\n\r\n-->\r\n<style>\r\n.avatar {\r\n  vertical-align: middle;\r\n  width: 100px;\r\n  height: 100px;\r\n  border-radius: 50%;\r\n}\r\n<\/style>\r\n\r\n<hr>\r\n\r\n<!-- NEWSLETTER LINK -->\r\n<a href=\"https:\/\/docs.google.com\/forms\/d\/e\/1FAIpQLSf7TniIPCWHDzCSGh2dYZaCwDvi9yLKS5ovFdKuK1sdfOvwEg\/viewform\">\r\n<img decoding=\"async\" src=\"https:\/\/pythonprogramming.altervista.org\/wp-content\/uploads\/2023\/08\/image-13.png\" class=\"avatar\">\r\nSubscribe to the <b>newsletter<\/b> for updates<\/a><br>\r\n\r\n<!-- TKINTER TEMPLATE LINK -->\r\n<a href=\"https:\/\/pythonprogramming.altervista.org\/tkinter-templates\/\">\r\n<img decoding=\"async\" src=\"https:\/\/i0.wp.com\/pythonprogramming.altervista.org\/wp-content\/uploads\/2023\/07\/image-26.png\" class=\"avatar\">\r\nTkinter templates<\/a><br>\r\n\r\n<!-- MY AVATAR PUT A LINK TO YOUTUBE CHANNEL-->\r\n<iframe loading=\"lazy\" frameborder=\"0\" src=\"https:\/\/itch.io\/embed\/711828\" width=\"552\" height=\"167\"><a href=\"https:\/\/pythonprogrammi.itch.io\/pysnake\">PySnake by PythonProgrammi<\/a><\/iframe>\r\n<br>\r\n<style>\r\n.avatar {\r\n  vertical-align: middle;\r\n  width: 100px;\r\n  height: 100px;\r\n  border-radius: 50%;\r\n}\r\n<\/style>\r\n\r\n\r\n<a href=\"https:\/\/www.youtube.com\/channel\/UCzbxq5e9gLiY-je2-br1rvg\">\r\n\t<img decoding=\"async\" src=\"https:\/\/pythonprogramming.altervista.org\/wp-content\/uploads\/2020\/10\/avatar64x64.png\" alt=\"Avatar\" class=\"avatar\">\r\n\t My youtube channel<\/a><br>\r\n\r\n<br>\r\n\r\nTwitter: <a href=\"https:\/\/twitter.com\/pythonprogrammi\">@pythonprogrammi - python_pygame<\/a>\r\n<h3>Claude's Games<\/h3>\r\n<p><a href=\"https:\/\/pythonprogramming.altervista.org\/random-daily-game-1-arkanoid\/\">Arkanoid<\/a><br>\r\n<a href=\"https:\/\/pythonprogramming.altervista.org\/platform-2d-with-pygame-made-with-claude\/\">Platform 2d<\/a><\/p> <!-- videogames made with claude -->\r\n<a href=\"https:\/\/pythonprogramming.altervista.org\/artifacts-games-day-1-memory-game\/\">1. Memory game<\/a>\r\n<h4>Videos<\/h4>\r\n<a href=\"https:\/\/youtu.be\/ciLjWWw5pLY\">Speech recognition game<\/a>\r\n<h3>Pygame's Platform Game<\/h3>\r\n\r\n<a href=\"https:\/\/pythonprogramming.altervista.org\/pygame-platform-game-5-sounds-and-mixer\/\"><img decoding=\"async\" src=\"https:\/\/i1.wp.com\/pythonprogramming.altervista.org\/wp-content\/uploads\/2020\/01\/climbercover.png?w=557&ssl=1\"\/ width=\"50%\"><\/a>\r\n<script>\r\nvar title = \"Platform Pygame\";\r\n\t\tvar links = [\r\n[\"https:\/\/pythonprogramming.altervista.org\/pygame-animation-of-a-sprite-v-1-3\/\",\"Animation 1.3\"],\r\n[\"https:\/\/pythonprogramming.altervista.org\/pygame-sprite-animation-v-2-better-coding-test-it-checking-fps-on-the-screen\/\",\"Animation 1.2\"],\r\n[\"https:\/\/pythonprogramming.altervista.org\/pygame-how-to-display-the-frame-rate-fps-on-the-screen\/\",\"Display Frame rate\"],\r\n[\"https:\/\/pythonprogramming.altervista.org\/pygame-sprite-animation-update\/\",\"Animation 1.1\"],\r\n[\"https:\/\/pythonprogramming.altervista.org\/pygame-platformer-1\/\",\"Pygame Platform Game 1\"],\r\n[\"https:\/\/pythonprogramming.altervista.org\/python-platform-game-2\/\",\"Pygame Platform 2\"],\r\n[\"https:\/\/pythonprogramming.altervista.org\/pygame-platform-game-3-recap-cheatsheet\/\",\"Pygame PLatform 3 - recap and some Cheat Sheet\"],\r\n[\"https:\/\/pythonprogramming.altervista.org\/pygame-platform-game-4-background-and-stuffs\/\",\"Pygame Platform 4 - Background & organizing code\"],\r\n[\"https:\/\/pythonprogramming.altervista.org\/pygame-platform-game-5-sounds-and-mixer\/\",\"Pygame Platform 5 - Sounds\"],\r\n[\"https:\/\/pythonprogramming.altervista.org\/platform-game-in-detail-part-1\/\",\"Game in detail part 1\"],\r\n[\"https:\/\/pythonprogramming.altervista.org\/map-maker-1-2\/\", \"Map maker 1.2\"]\r\n\t\t];\r\n\t\t<\/script>\r\n<script>\r\n\t\r\nif (typeof next2 != \"undefined\"){let next2 = 0;}\r\n\t\r\nnext2 = 0;\r\n\thtml = \"\";\/\/<b style='color:coral;font-size:1.2em'>Other posts about \" + title + \"<\/b><br>\";\r\nfor (address of links) \r\n{\r\n\r\n\tif (next2 == 1){\r\n\t\thtml += \"<div style='background:coral'>\";\r\n\t\thtml += \"Next link => <a href='\" + address[0] + \"'>\" + address[1] + \"<\/a>\";\r\n\t\thtml += \"<\/div><br>\";\r\n\t\tnext2 = 0;\r\n\t}\r\n\tif (address[0] == document.URL) {\r\n\t\tnext2 = 1;\r\n\t}\r\n}\r\n\r\nif (typeof next != \"undefined\") {let next = 0;}\r\nif (typeof addressStart != \"undefined\") {let addressStart = \"\";}\r\nnext = 0;\r\naddressStart = \"<a href='\";\r\nfor (address of links) {\r\n\tif (next == 1){\r\n\t\thtml += \">>>\" + addressStart + address[0] + \"'>\" + address[1] + \"<\/a><br>\";\r\n\t\tnext = 0;\r\n\t}\r\n\telse if (addressStart + address[0] != document.URL)\r\n\t{\r\n\t\thtml += addressStart + address[0] + \"'>\" + address[1] + \"<\/a><br>\";\r\n\t}\r\n\telse\r\n\t{\r\n\t\tnext = 1;\r\n\t\tnext_address = address[0]\r\n\t\tnext_title = address[1]\r\n\t\thtml += \"<span style='color:gray'>\" + address[1] + \"<\/span><br>\";\r\n\t}\r\n\r\n}\r\n\r\n\thtml += `<span style=\"font-size:8px\">Powered by <a href=\"https:\/\/pythonprogramming.altervista.org\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-2673\" src=\"https:\/\/pythonprogramming.altervista.org\/wp-content\/uploads\/2019\/06\/altervista2.png\" alt=\"\" width=\"70\" height=\"25\" srcset=\"https:\/\/pythonprogramming.altervista.org\/wp-content\/uploads\/2019\/06\/altervista2.png 156w, https:\/\/pythonprogramming.altervista.org\/wp-content\/uploads\/2019\/06\/altervista2-150x56.png 150w\" sizes=\"auto, (max-width: 70px) 100vw, 70px\" \/>pythonprogramming.altervista.org<\/a><\/span>`\r\n\thtml = \"<div style='background:yellow'>\" + html + \"<\/div>\";\r\n\tdocument.write(html)\r\n<\/script>\r\n\r\n<h3>Other Pygame's posts<\/h3>\r\n\r\n<script>\r\nvar title = \"Pygame's Posts\"\r\nvar links = [\r\n[\"https:\/\/pythonprogramming.altervista.org\/pygame-platformer-1\/\",\"Platform game 1\"],\r\n[\"https:\/\/pythonprogramming.altervista.org\/make-a-platform-game-with-pygame-dafluffypotato\/\",\"DaFluffyPotato Platform Tutorials\"],\r\n[\"https:\/\/pythonprogramming.altervista.org\/python-and-classic-arcade-games-pong\/\",\"Pong Game Full\"],\r\n[\"https:\/\/pythonprogramming.altervista.org\/python-draws-in-colors-app-to-draw-with-pygame\/\",\"PyGameGIF 2\"],\r\n[\"https:\/\/pythonprogramming.altervista.org\/pygame-draw-app-with-animation\/\",\"PyGameGIF 1\"],\r\n[\"https:\/\/pythonprogramming.altervista.org\/pydraw-2-0-app-to-draw-gif\/\",\"PyDraw 2.0\"],\r\n[\"https:\/\/pythonprogramming.altervista.org\/pygame-drawing-2\/\",\"Draw with Pygame\"],\r\n[\"https:\/\/pythonprogramming.altervista.org\/animation-with-pygame\",\"Sprite animation 1\"],\r\n[\"https:\/\/pythonprogramming.altervista.org\/animation-on-pygame-2-free-characters-and-more-actions\/\",\"Sprite animation 2\"],\r\n[\"https:\/\/pythonprogramming.altervista.org\/starting-with-pygame\/\",\"Starting movements with Pygame\"],\r\n[\"https:\/\/pythonprogramming.altervista.org\/pygame-3-move-sprite\/\", \"Move a Sprite\"],\r\n[\"https:\/\/pythonprogramming.altervista.org\/pygame-4-fonts\/\",\"Text and Fonts\"],\r\n[\"https:\/\/pythonprogramming.altervista.org\/pygame-animate-a-sprite\/\", \"Animate a sprite\"],\r\n[\"https:\/\/pythonprogramming.altervista.org\/pygame-and-mouse-events\/\",\"Mouse events\"],\r\n[\"https:\/\/pythonprogramming.altervista.org\/pgp-aka-pygamepresentation-project\/\",\"Pygame presentation\"],\r\n\t[\"https:\/\/pythonprogramming.altervista.org\/moving-the-player-in-pygame-with-key-get_pressed\/\",\"How to use key.get_pressed()\"]\r\n]\r\n<\/script>\r\n\r\n\r\n<script>\r\n\t\r\nif (typeof next2 != \"undefined\"){let next2 = 0;}\r\n\t\r\nnext2 = 0;\r\n\thtml = \"\";\/\/<b style='color:coral;font-size:1.2em'>Other posts about \" + title + \"<\/b><br>\";\r\nfor (address of links) \r\n{\r\n\r\n\tif (next2 == 1){\r\n\t\thtml += \"<div style='background:coral'>\";\r\n\t\thtml += \"Next link => <a href='\" + address[0] + \"'>\" + address[1] + \"<\/a>\";\r\n\t\thtml += \"<\/div><br>\";\r\n\t\tnext2 = 0;\r\n\t}\r\n\tif (address[0] == document.URL) {\r\n\t\tnext2 = 1;\r\n\t}\r\n}\r\n\r\nif (typeof next != \"undefined\") {let next = 0;}\r\nif (typeof addressStart != \"undefined\") {let addressStart = \"\";}\r\nnext = 0;\r\naddressStart = \"<a href='\";\r\nfor (address of links) {\r\n\tif (next == 1){\r\n\t\thtml += \">>>\" + addressStart + address[0] + \"'>\" + address[1] + \"<\/a><br>\";\r\n\t\tnext = 0;\r\n\t}\r\n\telse if (addressStart + address[0] != document.URL)\r\n\t{\r\n\t\thtml += addressStart + address[0] + \"'>\" + address[1] + \"<\/a><br>\";\r\n\t}\r\n\telse\r\n\t{\r\n\t\tnext = 1;\r\n\t\tnext_address = address[0]\r\n\t\tnext_title = address[1]\r\n\t\thtml += \"<span style='color:gray'>\" + address[1] + \"<\/span><br>\";\r\n\t}\r\n\r\n}\r\n\r\n\thtml += `<span style=\"font-size:8px\">Powered by <a href=\"https:\/\/pythonprogramming.altervista.org\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-2673\" src=\"https:\/\/pythonprogramming.altervista.org\/wp-content\/uploads\/2019\/06\/altervista2.png\" alt=\"\" width=\"70\" height=\"25\" srcset=\"https:\/\/pythonprogramming.altervista.org\/wp-content\/uploads\/2019\/06\/altervista2.png 156w, https:\/\/pythonprogramming.altervista.org\/wp-content\/uploads\/2019\/06\/altervista2-150x56.png 150w\" sizes=\"auto, (max-width: 70px) 100vw, 70px\" \/>pythonprogramming.altervista.org<\/a><\/span>`\r\n\thtml = \"<div style='background:yellow'>\" + html + \"<\/div>\";\r\n\tdocument.write(html)\r\n<\/script><\/p>\n","protected":false},"excerpt":{"rendered":"PART I PART II REPOSITORY I think this could be the final version. I just could make the player fire the aliens. Avoid \n<a class=\"moretag\" href=\"https:\/\/pythonprogramming.altervista.org\/simple-game-part-iii\/\"> [...]<\/a>","protected":false},"author":1,"featured_media":13907,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_crdt_document":"","footnotes":""},"categories":[1],"tags":[],"class_list":["post-13902","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-examples"],"avopt_banners_inside_post":true,"avopt_banners_on_page":true,"av_copy_from":"","av_sharing_message":"","av_sharing_allowed":true,"av_sharing_on":{"fb":[],"tw":[]},"av_allow_affiliate_banner":false,"av_allow_affiliate_multi_banner":false,"av_show_affiliation_buy_button":false,"av_post_rating":true,"av_have_post_rating_value":false,"av_is_artificial_intelligence_content":false,"_links":{"self":[{"href":"https:\/\/pythonprogramming.altervista.org\/wp-json\/wp\/v2\/posts\/13902","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/pythonprogramming.altervista.org\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/pythonprogramming.altervista.org\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/pythonprogramming.altervista.org\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/pythonprogramming.altervista.org\/wp-json\/wp\/v2\/comments?post=13902"}],"version-history":[{"count":5,"href":"https:\/\/pythonprogramming.altervista.org\/wp-json\/wp\/v2\/posts\/13902\/revisions"}],"predecessor-version":[{"id":13910,"href":"https:\/\/pythonprogramming.altervista.org\/wp-json\/wp\/v2\/posts\/13902\/revisions\/13910"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/pythonprogramming.altervista.org\/wp-json\/wp\/v2\/media\/13907"}],"wp:attachment":[{"href":"https:\/\/pythonprogramming.altervista.org\/wp-json\/wp\/v2\/media?parent=13902"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/pythonprogramming.altervista.org\/wp-json\/wp\/v2\/categories?post=13902"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/pythonprogramming.altervista.org\/wp-json\/wp\/v2\/tags?post=13902"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}