猿问

无法在pygame中移动捕手角色

试图制作一个让我的接球手接住棒球的游戏。如果棒球被接住,则会在屏幕顶部随机出现一个新棒球。做出更改后,我似乎无法移动捕手。该游戏是通过python和pygame制作的。


catch.py


import sys

import pygame

from pygame.sprite import Group

from settings import Settings

from catcher import Catcher

from baseball import Baseball

import game_functions as gf


def 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.py


import pygame

from pygame.sprite import Sprite


class 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.y

catcher.py


温温酱
浏览 103回答 1
1回答

慕哥6287543

问题是它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
随时随地看视频慕课网APP

相关分类

Python
我要回答