2011-08-08 4 views
1

これはpygameの質問です。リストは基本的にユーザーのいる位置を保持しますが、長さが「x」のスネークではなく、ユーザーがどこからでも移動します。list.pop()メソッドを使用してリストの最後の項目を切り捨てると、インスタンスが「ポップ」しないのはなぜですか?

以下のコードを見つけてください。私はこの問題は主にポップが置かれている場所だと思いますが、私は確信が持てません。あなたがそう思うなら、単にCTRL + F「ポップ」

import pygame  
running = 1 
screen = pygame.display.set_mode((640,480)) 
clock = pygame.time.Clock() 

UP = (0,-1) 
DOWN = (0,1) 
LEFT = (-1,0) 
RIGHT = (1,0) 
#Creating a worm 
class WormFromTheFuture: 
    def __init__(self,initial_x,initial_y,wormlength): 
     self.x = initial_x 
     self.y = initial_y 
     self.length = wormlength 
     self.body = [] 
     self.dirx = 1 
     self.diry = 1 
    def worm_assignment (self, arbtry): 
     self.dirx, self.diry = arbtry 
    def worm_moves (self): 
     self.x += self.dirx 
     self.y += self.diry 
    def worm_draw (self, surface): 
     self.body.insert(0, (self.x,self.y)) 
     if len(self.body) > self.length: 
      self.body.pop() 
     for x,y in self.body: 
      surface.set_at((x,y), (255,255,255)) 

wormy = WormFromTheFuture (320,240,10) 
while running: 
    wormy.worm_draw(screen) 
    for event in pygame.event.get(): 
     if event.type == pygame.QUIT: 
      running = 0 
      pygame.quit() 
     elif event.type == pygame.KEYDOWN: 
      if event.key == pygame.K_UP: wormy.worm_assignment (UP) 
      if event.key == pygame.K_DOWN: wormy.worm_assignment(DOWN) 
      if event.key == pygame.K_RIGHT: wormy.worm_assignment(RIGHT) 
      if event.key == pygame.K_LEFT: wormy.worm_assignment (LEFT) 
    wormy.worm_moves() 

    clock.tick(100) 
    pygame.display.flip() 

答えて

3

あなたが好きな機能を使用して黒で画面をクリアすることができます。

def clear(self, screen): 
    screen.fill((0,0,0)) 

そして、ちょうど、他の描画が発生する前にいることを呼び出します。

wormy.clear(screen) 
wormy.worm_draw(screen) 
2

は、私はあなたがポップされていますワームの一部をundraw忘れすることができると思います。

+0

あなたは私がポップをundraw勧めしますどのように、ありがとうワームの一部? – Louis93

+0

元々あったものはすべて再描画できます。 – MRAB

関連する問題