2016-12-25 56 views
0
import pygame 
pygame.init() 

width, height = 1000, 700 
window = pygame.display.set_mode((width, height)) 

class Player: 
    def __init__(self, x, y): 
     self.pos_x = x 
     self.pos_y = y 
     self.width, height = 1000, 700 
     self.window = pygame.display.set_mode((width, height)) 

    def player_init(self): 
     sprite = pygame.image.load("Character Sprite.png") 
     self.window.blit(sprite, (self.pos_x, self.pos_y)) 

while 1: 
    Player.player_init(500-38, 350-49) 

我一直在四處尋找一點點,但我似乎無法找到答案,爲什麼這種類型錯誤類型錯誤:不受約束的方法player_init()必須與Player實例被稱爲第一個參數(代替了INT實例)

TypeError: unbound method player_init() must be called with Player instance as first argument (got int instance instead)

不管彈出什麼時候我創建一個類。

+0

'player_init()'只需要一個參數'self'。嘗試'播放器(500-38,350-49).player_init()'。 – elethan

+0

注意:除非你想讓你的代碼永久掛起並循環,否則刪除'while 1'。 –

回答

0

您需要做Player(x, y).player_init(),因爲player_init也需要self參數,它也使用__init__中指定的變量。您還使用2個參數調用player_init,但它只接受一個參數。

0

優先(while之前)創建Player類的實例預計參數

player = Player(500-38, 350-49) 

,並在以後使用它(但不帶參數)

player.player_init() 

但對我來說你的代碼看起來應該這樣

import pygame 

# --- constants --- (UPPER_CASE names) 

WIDTH = 1000 
HEIGHT = 700 

# --- classes --- (CamelCase names) 

class Player: 
       # <- empty line to make code more readable 
    def __init__(self, x, y): 
     self.image = pygame.image.load("Character Sprite.png") 
     self.rect = self.image.get_rect() 
     self.rect.x = x 
     self.rect.y = y 

    def draw(self, surface): 
     surface.blit(self.image, self.rect) 

# --- functions --- (lower_case names) 

# empty 

# --- main --- 

# - init - 

pygame.init() 
window = pygame.display.set_mode((WIDTH, HEIGHT)) 

# - objects - 

player = Player(500-38, 350-49) 

# - mainloop - 

while True: 

    # other code 

    player.draw(window) 

self.rect是非常有用的設置位置即。 self.rect.center,它有檢查衝突的功能。 player.rect.collidrect(enemy.rect)player.rect.collidpoint(mouse_pos)

有用類pygame.spripte.Group()預計self.rectself.image自動繪製所有的精靈。

0

import pygame 
 

 
# --- constants --- (UPPER_CASE names) 
 

 
WIDTH = 1000 
 
HEIGHT = 700 
 

 
# --- classes --- (CamelCase names) 
 

 
class Player: 
 

 
    def __init__(self, x, y): 
 
     self.image = pygame.image.load("Character Sprite.png") 
 
     self.rect = self.image.get_rect() 
 
     self.rect.x = x 
 
     self.rect.y = y 
 

 
    def draw(self, surface): 
 
     surface.blit(self.image, self.rect) 
 

 
# --- functions --- (lower_case names) 
 

 
# empty 
 

 
# --- main --- 
 

 
# - init - 
 

 
pygame.init() 
 

 
# - objects - 
 

 
player = Player(500-38, 350-49) 
 
player.draw(pygame.display.set_mode((WIDTH, HEIGHT))) 
 

 
# - mainloop - 
 

 

 
while True: 
 
    # other code 
 
    pygame.display.flip() # add to out image from display

相關問題