首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在构建空间入侵者游戏时在屏幕上创建多行外星人?

如何在构建空间入侵者游戏时在屏幕上创建多行外星人?
EN

Stack Overflow用户
提问于 2022-08-01 14:04:04
回答 1查看 50关注 0票数 1

我在太空入侵者游戏中成功地创造了一排外星人。但是,在编写了这些行的几列来填充我的屏幕并运行代码之后,我仍然没有正确地理解它。

代码语言:javascript
运行
复制
game_function.py
import pygame
import sys
from bullet import Bullet
from alien import Alien
def update_screen(ai_settings, screen, ship, aliens, bullets):
    # redraw the screen during each pass through the loop
    screen.fill(ai_settings.bg_color)
    ship.blitme()
    aliens.draw(screen)
    # make the most recently drawn screen visible

    """Update images on the screen and flip to the new screen."""
    # redraw all bullets behind ship and aliens
    for bullet in bullets.sprites():
        bullet.draw_bullet()
    pygame.display.flip()

def get_number_rows(ai_settings, ship_height, alien_height):
    """Determine the number of rows of aliens that fit into the screen"""
    available_space_y = (ai_settings.screen_height - (3 * alien_height) - ship_height)
    number_rows = int(available_space_y / (2 * alien_height))
    return number_rows


def create_alien(ai_settings, screen, aliens, alien_number, row_number):
    """create an alien and place it in a row"""
    alien = Alien(ai_settings, screen)
    alien_width = alien.rect.width
    alien.x = alien_width + 2 * alien_width * alien_number
    alien.rect.x = alien.x
    alien.rect.y = alien.rect.height + 2 * alien.rect.height * row_number
    aliens.add(alien)


def get_number_aliens_x(ai_settings, alien_width):
    """Determine the number of aliens that fit in a row"""
    available_space_x = ai_settings.screen_width - 2 * alien_width
    number_aliens_x = int(available_space_x / (2 * alien_width))
    return number_aliens_x


def create_fleet(ai_settings, screen, ship, aliens):
    """Create a full fleet of aliens"""
    # create an alien and find the number of aliens in a row
    # spacing between each alien is equal to one alien width
    alien = Alien(ai_settings, screen)
    number_aliens_x = get_number_aliens_x(ai_settings, alien.rect.width)
    number_rows = get_number_rows(ai_settings, ship.rect.height,
                                  alien.rect.height)
    # create the first row of aliens
    for row_number in range(number_rows):
        for alien_number in range(number_aliens_x):
            # create an alien and place it in a row
            create_alien(ai_settings, screen, aliens, alien_number, row_number)
代码语言:javascript
运行
复制
main.py
import pygame
import sys
from settings import Settings
from ship import Ship
import game_functions as gf
from pygame.sprite import Group
from alien import Alien


def run_game():
    # initialize
    # pygame, settings
    # and screen
    # object

    pygame.init()
    ai_settings = Settings()

    screen = pygame.display.set_mode((ai_settings.screen_width, ai_settings.screen_height))
    pygame.display.set_caption("Alien Invasion")
    # make a ship
    ship = Ship(screen, ai_settings)
    # group to store bullets
    bullets = pygame.sprite.Group()
    # make an alien
    alien = Alien(ai_settings, screen)
    # a group to store aliens
    aliens = pygame.sprite.Group()
    # create a fleet of aliens
    gf.create_fleet(ai_settings, screen, ship, aliens)

    # main loop for the game
    while True:
        # watch
        # for keyboard and mouse events
        gf.check_events(ship, ai_settings, screen, bullets)
        ship.update()
        gf.update_bullets(bullets)

        gf.update_screen(ai_settings, screen, ship, aliens, bullets)


run_game()

所以,本质上,我的问题是,我如何才能把这一行外星人变成一列外星人来填充我的屏幕。根据我的代码,它应该会生成一支外星人舰队,但它不是。

EN

回答 1

Stack Overflow用户

发布于 2022-08-01 16:36:32

我无法运行这段代码,因为有些文件丢失了。修复它的方法是首先查看像get_number_aliens_x和get_number_rows这样的函数是否返回正确的值。如果这些是正确的,下一步将是核实外星人确实是在正确的地方创造的,并留在正确的地方。我看不出create_alien中有什么特别的错误,但是在外星类中是否有代码在创建之后会扰乱他们的位置呢?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73194934

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档