微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在与声明变量不同的文件中编辑变量?

如何解决如何在与声明变量不同的文件中编辑变量?

我目前正在从事《 Python崩溃课程》一书中的Alien Invasion项目。问题是,每当我按向右箭头键(我暂时删除了向左箭头键的代码)时,我的船的图像都没有动。

我知道我的用于检查按键事件的函数可以正常工作,因为无论何时按下按键或不按下按键,它都会打印出期望值。

按下时,标志movingRight从其认状态false更改为true。然后应该发生的是,通过向变量“中心”添加预定的运动因子来更改变量,然后使用该变量将船图像打印到新位置。

但是,当我在movingRight文件中打印ship.py的状态时,它表明movingRight仍然是False,即使在KEY_DOWN事件期间也是如此。

这是处理事件并更改飞船状态的循环。该文件位于名为alien_invasion.py的主文件中:

#Create a new Ship
ship = Ship(aiSettings,screen)

#start the main loop for the game
while True:

    #Check for events that affect the ship
    gf.checkEvents(ship)

    #Update the status of the ship based upon checkEvents()
    ship.update()

    #Update the screen after pulling data from ship.update()
    gf.updateScreen(aiSettings,screen,ship)

下面是名为checkEvents()的单独文件中的game_functions.py函数

for event in pygame.event.get():

    if event.type == pygame.QUIT:
        sys.exit()

    elif event.type == pygame.KEYDOWN:

        if event.key == pygame.K_RIGHT:

            print("Moving Right")
            ship.moveRight = True

    elif event.type == pygame.KEYUP:

        if event.key == pygame.K_RIGHT:

            print("Done moving right")
            ship.moveRight = False

最后,下面是编辑飞船位置的代码。这是在ship.py内:

def update(self):

    print("movingRight state is: " + self.movingRight) #movingRight is false during KEY_DOWN event

    #Check for a right move
    if self.movingRight:

        #Update the ship's center to the right x amount of pixels
        self.center += self.aiSettings.shipSpeedFactor


    self.rect.centerx = self.center

我知道这本书已经有几年历史了,难道我使用的方法已经过时了吗?

解决方法

根据我在代码中看到的内容,看起来您正在为右移变量使用不同的名称。在第二个代码片段中,将ship.moveRight设置为True,但是在第三个代码片段中,您正在检查self.movi​​ngRight是否为True。尝试更改它,以便都使用.movi​​ngRight或都使用.moveRight

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。