鱼C论坛

 找回密码
 立即注册
查看: 2219|回复: 5

[已解决]AttributeError: 'MyPlane' object has no attribute 'MoveLeft'

[复制链接]
发表于 2019-12-30 00:17:56 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
大家好,我在编写 打飞机 游戏的时候,出现以下错误,请教各位:

AttributeError: 'MyPlane' object has no attribute 'MoveLeft'

代码如下:

import pygame

class MyPlane(pygame.sprite.Sprite): # inherit sprite from pygame
    def __init__(self, bg_size):
        pygame.sprite.Sprite.__init__(self)
        
        self.image = pygame.image.load('Images/me1.png').convert_alpha()
        
        self.rect = self.image.get_rect()
        
        self.width, self.height = bg_size[0], bg_size[1]
        
        self.rect.left, self.rect.top = (self.width - self.rect.width) // 2, self.height - self.rect.height - 60 # -60: we need this space to show something
        
        self.speed = 10
        

        # up
        def MoveUp(self):
            if self.rect.top > 0:  # top is 0, bottom is 'height'
                self.rect.top = self.rect.top - self.speed # if not, move up
            else:
                self.rect.top = 0 # can only be 0, not smaller than 0
        
        # down
        def MoveDown(self):
            if self.rect.bottom < self.height - 60:  # top is 0, bottom is 'height'
                self.rect.bottom = self.rect.bottom + self.speed # if not, move down
            else:
                self.rect.bottom = self.height - 60 # -60: we need this space to show something
        
        # left
        def MoveLeft(self):
            if self.rect.left > 0:  # top is 0, bottom is 'height'
                self.rect.left = self.rect.left - self.speed # if not, move left
            else:
                self.rect.left = 0   
        
        # right
        def MoveRight(self):
            if self.rect.right < self.width:  # top is 0, bottom is 'height'
                self.rect.right = self.rect.right + self.speed # if not, move right
            else:
                self.rect.left = self.width
最佳答案
2019-12-30 11:11:18
要和__init__方法处在同一个缩进
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-12-30 11:09:47 | 显示全部楼层
是在main.py里面出错吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-12-30 11:10:38 | 显示全部楼层
你不要把所有方法全写到__init__方法里
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-12-30 11:11:18 | 显示全部楼层    本楼为最佳答案   
要和__init__方法处在同一个缩进
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-12-30 13:30:39 From FishC Mobile | 显示全部楼层
move和init是同级缩进
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-12-30 19:52:53 | 显示全部楼层
缩进错误,试试这样:
import pygame


class MyPlane(pygame.sprite.Sprite):  # inherit sprite from pygame
    def __init__(self, bg_size):
        pygame.sprite.Sprite.__init__(self)

        self.image = pygame.image.load('Images/me1.png').convert_alpha()

        self.rect = self.image.get_rect()

        self.width, self.height = bg_size[0], bg_size[1]

        self.rect.left, self.rect.top = (
                                                    self.width - self.rect.width) // 2, self.height - self.rect.height - 60  # -60: we need this space to show something

        self.speed = 10

        # up
    def MoveUp(self):
        if self.rect.top > 0:  # top is 0, bottom is 'height'
            self.rect.top = self.rect.top - self.speed  # if not, move up
        else:
            self.rect.top = 0  # can only be 0, not smaller than 0

    # down
    def MoveDown(self):
        if self.rect.bottom < self.height - 60:  # top is 0, bottom is 'height'
            self.rect.bottom = self.rect.bottom + self.speed  # if not, move down
        else:
            self.rect.bottom = self.height - 60  # -60: we need this space to show something

    # left
    def MoveLeft(self):
        if self.rect.left > 0:  # top is 0, bottom is 'height'
            self.rect.left = self.rect.left - self.speed  # if not, move left
        else:
            self.rect.left = 0

            # right

    def MoveRight(self):
        if self.rect.right < self.width:  # top is 0, bottom is 'height'
            self.rect.right = self.rect.right + self.speed  # if not, move right
        else:
            self.rect.left = self.width
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-22 15:20

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表