2016-12-25 1 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) 

(代わりにint型のインスタンスを得た)最初の引数としてPlayerインスタンスで呼び出されなければならない私は少し周りを見てきたが、私はなぜこのタイプの答えを見つけるように見えることはできませんエラーはTypeError:バインドされていないメソッドのplayer_initは()

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

は、クラスを作成するたびにポップアップを維持します。

+0

'player_init()'だけ単一の引数 'self'をとります。 'Player(500-38、350-49).player_init()'を試してみてください。 – elethan

+0

注:コードがハングして永遠にループしないようにしない限り、 'while 1'を削除してください。 –

答えて

0

player_initself引数を必要とし、__init__で指定された変数も使用するため、Player(x, y).player_init()を実行する必要があります。引数が2つのplayer_initも呼び出していますが、1つしか受け付けません。 (while前)

0

まず期待される引数

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

し、後でそれを使用する(ただし、引数なし)

player.player_init() 

でクラスPlayerのインスタンスを作成します。しかし、私のためにあなたのコードが見えるはずですこのように

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

関連する問題