2016-10-20 6 views
0

私は、クラス内にあるサークルを描こうとしています。これは、プレイヤーを対象としています。クラスの中にある円を描くにはどうすればいいですか?

しかし、私は描かれる円を得ることができません。

import pygame 
pygame.init() 

#Colors 
black = (0,0,0) 
white = (255,255,255) 
red = (255,0,0) 
green = (0,255,0) 
blue = (0,0,255) 

display_width, display_height = 800, 600 
screen = pygame.display.set_mode((display_width, display_height)) 
screen.fill(white) 

class Player(): 
    def __init__(self): 
     self.player_surface = screen 
     self.player_color = green 
     self.player_pos = ((display_height - self.player_radius * 3), (display_width/2)) 
     self.player_radius = 5 
     self.player_width = 0 

    def character(self): 
     self.player_character = pygame.draw.circle(self.player_surface, self.player_color, self.player_pos, self.player_radius, self.player_width) 

#Player Reference 
player = Player() 

running = True 
while running: 
    for event in pygame.event.get(): 
     if event.type == pygame.QUIT: 
      pygame.quit() 
      running = False 
    #Background 
    screen.fill(white) 

    #Draw everything in order, each drawn object will be drawn beneath the next drawn object. 

    # Draw the player ----------------------------- 
    player.character() 
    # Draw the player ----------------------------- 

    #Update 
    pygame.display.update() 
+0

クラスメソッドに含まれていないコードを使用して円を描くことはできますか?もしそうでなければ、あなたの質問は実際には 'pygame'を使ってサークルを描く方法に関して、クラスに関するものではありません。 –

+0

はい私はクラスの外でサークルを描くことができます。 – Markus121

答えて

2

ここでは、サークルを表示するようにコードを修正しました。

  1. あなたは
  2. pygame.draw.circleは、xを期待し、yはしかし、あなたの整数値であることが座標前の行でそれを使用し後self.radiusを定義した:

    import pygame 
    pygame.init() 
    
    #Colors 
    black = (0,0,0) 
    white = (255,255,255) 
    red = (255,0,0) 
    green = (0,255,0) 
    blue = (0,0,255) 
    
    display_width, display_height = 800, 600 
    screen = pygame.display.set_mode((display_width, display_height)) 
    screen.fill(white) 
    
    class Player(): 
        def __init__(self): 
         self.player_surface = screen 
         self.player_color = green 
         self.player_radius = 25   
         self.player_pos = (int(display_height - self.player_radius * 3), int(display_width/2)) 
         self.player_width = 0 
    
        def character(self): 
         self.player_character = pygame.draw.circle(self.player_surface, self.player_color, self.player_pos, self.player_radius, self.player_width) 
    
    #Player Reference 
    player = Player() 
    
    running = True 
    while running: 
        for event in pygame.event.get(): 
         if event.type == pygame.QUIT: 
          pygame.quit() 
          running = False 
        #Background 
        screen.fill(white) 
    
        #Draw everything in order, each drawn object will be drawn beneath the next drawn object. 
    
        # Draw the player ----------------------------- 
        player.character() 
        # Draw the player ----------------------------- 
    
        #Update 
        pygame.display.update() 
    

    これらは、あなたのコードで問題でしたをdisplay_widthに2で割って計算したところ、floatという値になった。明示的に値をintに変換し、プレーヤー(円)が画面に表示されます

+1

ああ、作品...ありがとう! :) – Markus121

関連する問題