Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/sharepoint/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python __init_;()只接受3个参数(给定1个)?_Python_Arguments_Init - Fatal编程技术网

Python __init_;()只接受3个参数(给定1个)?

Python __init_;()只接受3个参数(给定1个)?,python,arguments,init,Python,Arguments,Init,它要求3个论点,我给了它一个。我该怎么再给它两次,你能解释一下怎么做吗?谢谢 import pygame, random, collisionObjects pygame.init() screen = pygame.display.set_mode((640,480)) class Pirate(pygame.sprite.Sprite): EAST = 0 def __init__(self, screen, dx): self.screen = sc

它要求3个论点,我给了它一个。我该怎么再给它两次,你能解释一下怎么做吗?谢谢

import pygame, random, collisionObjects
pygame.init()

screen = pygame.display.set_mode((640,480))

class Pirate(pygame.sprite.Sprite):

    EAST = 0

    def __init__(self, screen, dx):
        self.screen = screen
        pygame.sprite.Sprite.__init__(self)
        self.image = pygame.image.load("king_pirate/running e0000.bmp")
        self.image = self.image.convert()
        tranColor = self.image.get_at((1, 1))
        self.image.set_colorkey(tranColor)
        self.rect = self.image.get_rect()
        self.rect.inflate_ip(-50, -30)
        self.rect.center = (0, random.randrange(30,450))
        self.img = []

        self.loadPics()
        self.frame = 0
        self.delay = 4
        self.pause = self.delay
        self.dx = dx


    def update(self):
        #set delay
        self.pause -= 1
        if self.pause <= 0:
            self.pause = self.delay

            self.frame += 1
            if self.frame > 7:
                self.frame = 0

            self.image = self.img[self.frame]

            self.rect.centerx += self.dx
            if self.rect.centerx > self.screen.get_width():
                self.rect.centerx = 0
                self.rect.centery = random.randrange(30,450)

    #load pictures
    def loadPics(self):
        for i in range(8):
            imgName = "king_pirate/running e000%d.bmp" % i
            tmpImg = pygame.image.load(imgName)
            tmpImg.convert()
            tranColor = tmpImg.get_at((0, 0))
            tmpImg.set_colorkey(tranColor)
            self.img.append(tmpImg)

class Pirate2(pygame.sprite.Sprite):

    WEST = 0

    def __init__(self, screen, dx):
        self.screen = screen
        pygame.sprite.Sprite.__init__(self)
        self.image = pygame.image.load("pirate/running w0000.bmp")
        self.image = self.image.convert()
        tranColor = self.image.get_at((1, 1))
        self.image.set_colorkey(tranColor)
        self.rect = self.image.get_rect()
        self.rect.inflate_ip(-50, -30)
        self.rect.center = (640, random.randrange(20,460))
        self.img = []

        self.loadPics()
        self.frame = 0
        self.delay = 4
        self.pause = self.delay
        self.dx = dx       


    def update(self):
        #set delay
        self.pause -= 1
        if self.pause <= 0:
            self.pause = self.delay

            self.frame += 1
            if self.frame > 7:
                self.frame = 0

            self.image = self.img[self.frame]

            self.rect.centerx -= self.dx
            if self.rect.centerx < 0:
                self.rect.centerx = self.screen.get_width()
                self.rect.centery = random.randrange(20,460)

    #load pictures
    def loadPics(self):
        for i in range(8):
            imgName = "pirate/running w000%d.bmp" % i
            tmpImg = pygame.image.load(imgName)
            tmpImg.convert()
            tranColor = tmpImg.get_at((0, 0))
            tmpImg.set_colorkey(tranColor)
            self.img.append(tmpImg)

#set up class for gold object,
class Gold(pygame.sprite.Sprite):          
    def __init__(self, screen, imageFile):
        pygame.sprite.Sprite.__init__(self)
        self.image = pygame.image.load(imageFile)
        self.image = self.image.convert()
        self.rect = self.image.get_rect()
        self.rect.centerx = random.randrange(0, screen.get_width())
        self.rect.centery = random.randrange(0, screen.get_height())

#main character class
class Thief(pygame.sprite.Sprite):
    def __init__(self):
        pygame.sprite.Sprite.__init__(self)
        self.image = pygame.image.load("thief2.gif")
        self.image = self.image.convert()
        tranColor = self.image.get_at((1, 1))
        self.image.set_colorkey(tranColor)
        self.rect = self.image.get_rect()
        self.rect.inflate_ip(-15, -10)
        self.rect.center = (30, (screen.get_height()-40))
        self.dx = 30
        self.dy = 30

        if not pygame.mixer:
            print("problem with sound")
        else:
            pygame.mixer.init()
            self.collectcoin = pygame.mixer.Sound("collectcoin.wav")
            self.hit = pygame.mixer.Sound("hit.ogg")


    def update(self):
        if self.rect.bottom > screen.get_height():
            self.rect.centery = (screen.get_height()-40)         
        elif self.rect.top < 0:
            self.rect.centery = 40
        elif self.rect.right > screen.get_width():
            self.rect.centerx = (screen.get_width()-30)         
        elif self.rect.left < 0:
            self.rect.centerx = 30

    #define movements
    def moveUp(self):
        self.rect.centery -= self.dy

    def moveDown(self):
        self.rect.centery += self.dy

    def moveLeft(self):
        self.rect.centerx -= self.dx

    def moveRight(self):
        self.rect.centerx += self.dx

    def reset(self):
        self.rect.center = (30, (screen.get_height()-40))

#set up a scoreboard        
class Scoreboard(pygame.sprite.Sprite):
    def __init__(self):
        pygame.sprite.Sprite.__init__(self)
        self.lives = 0
        self.score = 0
        self.font = pygame.font.SysFont("None", 40)
        self.number = 0

    #with a self updating label
    def update(self):
        self.text = "Damage: %d %%  Gold Taken: %d" % (self.lives, self.score)
        self.image = self.font.render(self.text, 1, (199,237,241))
        self.rect = self.image.get_rect()

#define the game function
def game():
    #set up background
    background = pygame.Surface(screen.get_size())
    background = pygame.image.load("sand.jpg")
    background = pygame.transform.scale(background, screen.get_size())
    screen.blit(background, (0, 0))

    #initialize pirates & scoreboard sprites
    pirate = Pirate()
    scoreboard = Scoreboard()

    #create two arrays for multiple gold object occurances
    #two arrays are used for better distribution on screen
    gold1 = []
    numberofGold = 16
    for i in range(numberofgolds):
        oneGold = golds(screen,"gold1.png")
        golds1.append(onegold)
    for gold in golds1:
        gold.rect.centerx = random.randrange(20,620)
        gold.rect.centery = random.randrange(20,240)
        gold.rect.inflate_ip(-5, -5)
    gold2 = []
    for i in range(numberofgolds):
        onegold = golds(screen,"gold1.png")
        golds2.append(onegold)
    for gold in golds2:
        gold.rect.centerx = random.randrange(20,620)
        gold.rect.centery = random.randrange(250,460)
        gold.rect.inflate_ip(-5, -5)
    totalgolds = ((len(golds1)-1)+(len(golds2)-1))
    #initialize gold sprites
    goldSprites = pygame.sprite.Group(golds1, 
    #initialize pirate sprites & instances
    pirate1 = pirate1(screen,13)
    pirate2 = pirate2(screen,13)
    pirate3 = pirate1(screen,11)
    pirate4 = pirate2(screen,11)
    pirate5 = pirate1(screen,13)
    pirateSprites = pygame.sprite.Group(pirate1, pirate2, pirate3, pirate4, pirate5)

    #use ordered updates to keep clean appearance
    allSprites =  pygame.sprite.OrderedUpdates(goldSprites, thief, pirateSprites, scoreboard)

    #set up clock & loop
    clock = pygame.time.Clock()
    keepGoing = True
    while keepGoing:
        clock.tick(30)
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                keepGoing = False
            elif event.type == pygame.KEYDOWN:
                if event.key == pygame.K_UP:
                    thief.moveUp()
                elif event.key == pygame.K_DOWN:
                    thief.moveDown()
                elif event.key == pygame.K_LEFT:
                    thief.moveLeft()
                elif event.key == pygame.K_RIGHT:
                    thief.moveRight()
                elif event.key == pygame.K_ESCAPE:
                    keepGoing = False

        #check collisions here
        hitpirates = pygame.sprite.spritecollide(thief, pirateSprites, False)
        hitgold = pygame.sprite.spritecollide(thief, goldSprites, True)

        if hitpirates:
            thief.hit.play()
            scoreboard.lives += 1
            if scoreboard.lives >= 100:
                keepGoing = False
                number = 0


        if hitgolds:
            thief.collectcoin.play()
            scoreboard.score += 1
            totalgolds -= 1
            if totalgolds <= 0:
                keepGoing = False
                number = 1


        #draw sprites
        allSprites.clear(screen, background)
        allSprites.update()
        allSprites.draw(screen)

        pygame.display.flip()

    return scoreboard.score
    return scoreboard.number

def instructions(score, number):
    pygame.display.set_caption("Hunt for Gold!")

    background = pygame.Surface(screen.get_size())
    background = pygame.image.load("sand.jpg")
    background = pygame.transform.scale(background, screen.get_size())
    screen.blit(background, (0, 0))
    if number == 0:
        message = "Sorry try again..."
    elif number == 1:
        message = "The theif escapes!"
    else:
        message = "Onto the hunt for gold!"

    insFont = pygame.font.SysFont("Calibri", 25)
    insLabels = []
    instructions = (
        "Last score: %d" % score ,
        "%s" % message,
        "",
        "GOLD!",
        "Get all the gold before you are "
        "obliterated!",
        "Use arrow keys to move the thief.",
        "Space to start, Esc to quit."
        )

    for line in instructions:
        tempLabel = insFont.render(line, 1 , (0,0,0))
        insLabels.append(tempLabel)

    #set up homescreen loop
    keepGoing = True
    clock = pygame.time.Clock()
    while keepGoing:
        clock.tick(30)
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                keepGoing = False
                donePlaying = True
            if event.type == pygame.KEYDOWN:
                if event.key == pygame.K_SPACE:
                    keepGoing = False
                    donePlaying = False
                if event.key == pygame.K_ESCAPE:
                    keepGoing = False
                    donePlaying = True

        for i in range(len(insLabels)):
            screen.blit(insLabels[i], (50, 30*i))

        pygame.display.flip()

    return donePlaying

#define main function
def main():
    donePlaying = False
    score = 0
    message = ""
    while not donePlaying:
        donePlaying = instructions(score, message)
        if not donePlaying:
            score = game()
        else:
            pygame.quit()


if __name__ == "__main__":
    main()
导入pygame、随机、碰撞对象
pygame.init()
screen=pygame.display.set_模式((640480))
海盗类(pygame.sprite.sprite):
东=0
定义初始化(自身、屏幕、dx):
self.screen=屏幕
pygame.sprite.sprite.\uuuuu init\uuuuuuu(自我)
self.image=pygame.image.load(“king_pirate/running e0000.bmp”)
self.image=self.image.convert()
tranColor=self.image.get_at((1,1))
self.image.set_colorkey(tranColor)
self.rect=self.image.get_rect()
自校正充气(ip(-50,-30)
self.rect.center=(0,random.randrange(30450))
self.img=[]
self.loadPics()
self.frame=0
self.delay=4
self.pause=self.delay
self.dx=dx
def更新(自我):
#设置延迟
self.pause-=1
如果self.7:
self.frame=0
self.image=self.img[self.frame]
self.rect.centerx+=self.dx
如果self.rect.centerx>self.screen.get_width():
self.rect.centerx=0
self.rect.centery=random.randrange(30450)
#加载图片
def loadPics(自):
对于范围(8)中的i:
imgName=“king_pirate/running e000%d.bmp”%i
tmpImg=pygame.image.load(imgName)
tmpImg.convert()
tranColor=tmpImg.get_at((0,0))
tmpImg.set_颜色键(tranColor)
self.img.append(tmpImg)
类别2(pygame.sprite.sprite):
西=0
定义初始化(自身、屏幕、dx):
self.screen=屏幕
pygame.sprite.sprite.\uuuuu init\uuuuuuu(自我)
self.image=pygame.image.load(“海盗/running w0000.bmp”)
self.image=self.image.convert()
tranColor=self.image.get_at((1,1))
self.image.set_colorkey(tranColor)
self.rect=self.image.get_rect()
自校正充气(ip(-50,-30)
self.rect.center=(640,random.randrange(20460))
self.img=[]
self.loadPics()
self.frame=0
self.delay=4
self.pause=self.delay
self.dx=dx
def更新(自我):
#设置延迟
self.pause-=1
如果self.7:
self.frame=0
self.image=self.img[self.frame]
self.rect.centerx-=self.dx
如果self.rect.centerx<0:
self.rect.centerx=self.screen.get_width()
self.rect.centery=random.randrange(20460)
#加载图片
def loadPics(自):
对于范围(8)中的i:
imgName=“盗版/运行w000%d.bmp”%i
tmpImg=pygame.image.load(imgName)
tmpImg.convert()
tranColor=tmpImg.get_at((0,0))
tmpImg.set_颜色键(tranColor)
self.img.append(tmpImg)
#为黄金对象设置类,
类别金牌(pygame.sprite.sprite):
def _;初始化_;(自身、屏幕、图像文件):
pygame.sprite.sprite.\uuuuu init\uuuuuuu(自我)
self.image=pygame.image.load(imageFile)
self.image=self.image.convert()
self.rect=self.image.get_rect()
self.rect.centerx=random.randrange(0,screen.get_width())
self.rect.centery=random.randrange(0,screen.get_height())
#主角类
类小偷(pygame.sprite.sprite):
定义初始化(自):
pygame.sprite.sprite.\uuuuu init\uuuuuuu(自我)
self.image=pygame.image.load(“thief2.gif”)
self.image=self.image.convert()
tranColor=self.image.get_at((1,1))
self.image.set_colorkey(tranColor)
self.rect=self.image.get_rect()
自校正充气仪表板(-15,-10)
self.rect.center=(30,(screen.get_height()-40))
self.dx=30
self.dy=30
如果不是pygame.mixer:
打印(“声音问题”)
其他:
pygame.mixer.init()
self.collectcoin=pygame.mixer.Sound(“collectcoin.wav”)
self.hit=pygame.mixer.Sound(“hit.ogg”)
def更新(自我):
如果self.rect.bottom>screen.get_height():
self.rect.centery=(screen.get_height()-40)
elif self.rect.top<0:
self.rect.centery=40
elif self.rect.right>screen.get_width():
self.rect.centerx=(screen.get_width()-30)
elif self.rect.left<0:
self.rect.centerx=30
#定义运动
def移动(自):
self.rect.centery-=self.dy
def向下移动(自):
self.rect.centery+=self.dy
def左移(自):
self.rect.centerx-=self.dx
def右移动(自身):
self.rect.centerx+=self.dx
def重置(自):
self.rect.center=(30,(screen.get_height()-40))
#设立记分牌
班级记分板(pygame.sprite.sprite):
定义初始化(自):
pygame.sprite.sprite.\uuuuu init\uuuuuuu(自我)
self.lifes=0
self.score=0
self.font=pygame.font.SysFont(“无”,40)
self.number=0
#具有自我更新标签
def更新(自我):
self.text=“伤害:%d%%金币获得:%d%%(self.lifes,self.score)
self.image=self.font.render(self.text,1,(199237241))
self.rect=self.image.get_rect()
#定义游戏功能
def game():
#设置背景
background=pygame.Surface(screen.get_size())
background=pygame.image.load(“sand.jpg”)
background=pygame.transform.scale(背景、屏幕、获取大小())
屏幕光点(背景,(0,0))
#初始化海盗和记分牌精灵
海盗
记分牌
#为多个黄金对象事件创建两个数组
#两个阵列用于更好地在屏幕上分布
gold1=[]
numberofGold=16
对于范围内的i(黄金数量):
oneGold=golds(屏幕,“gold1.png”)
golds1.追加(onegold)
pirate = Pirate()
pirate = Pirate(pygame.display.get_surface(), 60)