0

私のプログラムでは、画像がマウスカーソルをたどることができますが、Attackメソッドで円を描くことができません。これsuface.fillは、move メソッドで行う必要があるためです (move メソッドはfollowMeLittleBoy)移動中、それはただの大麦です。これは私のインポートなど以外の私の完全なコードです

class Hero ():

    def __init__(self):
        self.dead = False
        pygame.mouse.set_visible(False)
        self.X_MOVE_AMT = 5
        self.Y_MOVE_AMT = 5
        self.space = pygame.image.load ("hero_sprite.jpg")
        self.spaceRect = self.space.get_rect()
        self.spaceRect.topleft = (100,100)
        surface.blit (self.space, self.spaceRect)
        pygame.display.update()

    def followMeLittleBoy (self):
        amntTuple = pygame.mouse.get_pos()
        self.X_MOVE_AMT = math.ceil((amntTuple[0] - self.spaceRect.left)*0.2)
        self.Y_MOVE_AMT = math.ceil((amntTuple[1] - self.spaceRect.top)*0.2)
        self.spaceRect.left += self.X_MOVE_AMT
        self.spaceRect.top += self.Y_MOVE_AMT
        surface.blit (self.space, self.spaceRect)
        pygame.display.update()


    def Attack (self):
        surface.fill ((255,255,255))
        amntTuple = pygame.mouse.get_pos()
        pygame.draw.circle(surface, pygame.Color(0,0,255), amntTuple, 20, 2)
        surface.blit (self.space, self.spaceRect)





var = Hero ()

while True:
    surface.fill((255,255,255))
    for event in pygame.event.get():
        var.followMeLittleBoy ()
        if event.type == QUIT:
            pygame.quit()
            sys.exit()
        if event.type == KEYDOWN:
            if event.key == K_SPACE:
                var.Attack()
4

2 に答える 2

0

修正が必要な点がいくつかあります。

  1. var.followMeLittleBoy()イベントごとではなく、ループごとに 1 回呼び出す必要があります。

  2. Hero クラスで描画するための別のメソッドが必要です。

  3. ループごとに pygame.display.update() を 1 回だけ呼び出します。

何を達成しようとしているのかわかりませんが、描画する円のリストを作成できます。スペースバーを押すと、円がリストに追加されます。

次に、サークルリストをループして、消えることなくそれぞれを描くことができます。

于 2013-06-10T18:08:06.867 に答える