为了账号安全,请及时绑定邮箱和手机立即绑定

无法在pygame中移动捕手角色

无法在pygame中移动捕手角色

温温酱 2022-07-05 15:18:51
试图制作一个让我的接球手接住棒球的游戏。如果棒球被接住,则会在屏幕顶部随机出现一个新棒球。做出更改后,我似乎无法移动捕手。该游戏是通过python和pygame制作的。catch.pyimport sysimport pygamefrom pygame.sprite import Groupfrom settings import Settingsfrom catcher import Catcherfrom baseball import Baseballimport game_functions as gfdef run_game():    """Initializes the game, screen, and settings."""    pygame.init()    ai_settings = Settings()    screen = pygame.display.set_mode((ai_settings.screen_width, ai_settings.screen_height))    pygame.display.set_caption("Catch")    catcher = Group()    baseball = Group()    while True:        gf.check_events(catcher)        gf.update_catcher(ai_settings, screen, catcher)        gf.update_baseball(ai_settings, screen, catcher, baseball)        gf.update_screen(ai_settings, screen, catcher, baseball)run_game()baseball.pyimport pygamefrom pygame.sprite import Spriteclass Baseball(Sprite):    """A class to represent a baseball."""    def __init__(self, ai_settings, screen):        super().__init__()        self.screen = screen        self.ai_settings = ai_settings        # Load the baseball image and set its rect attribute.        self.image = pygame.image.load('images/baseball.bmp')        self.rect = self.image.get_rect()        # Start each new baseball at a random position at the top of the screen.        self.rect.x = self.rect.width        self.rect.y = self.rect.height         # Store the alien's exact position.        self.x = float(self.rect.x)        self.y = float(self.rect.y)    def blitme(self):        """Draw the baseball at tis current location."""        self.screen.blit(self.image, self.rect)    def update(self):        """Dropping the baseball."""        self.y += self.ai_settings.baseball_drop_speed        self.rect.y = self.ycatcher.py
查看完整描述

1 回答

?
慕哥6287543

TA贡献1831条经验 获得超10个赞

问题是它catcher是Group而不是的一个实例Catcher(Sprite):


catcher = Group()


while True:

   check_events(catcher)

这导致属性moving_right和分别moving_left设置为Group对象。check_keydown_eventscheck_keyup_events


您必须更改以下对象的属性Group:


def check_keydown_events(event, catcher):

    """Respond to keypresses."""

    if event.key == pygame.K_RIGHT:

        for c in catcher:

            c.moving_right = True

    elif event.key == pygame.K_LEFT:

        for c in catcher:

            c.moving_left = True

    elif event.key == pygame.K_q:

        sys.exit()


def check_keyup_events(event, catcher):

    """Respond to key releases."""

    if event.key == pygame.K_RIGHT:

        for c in catcher:

            c.moving_right = False

    elif event.key == pygame.K_LEFT:

        for c in catcher:

            c.moving_left = False


查看完整回答
反对 回复 2022-07-05
  • 1 回答
  • 0 关注
  • 102 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号