Почему мой экземпляр не «выталкивается», когда я использую метод list.pop (), чтобы вырезать последний элемент в списке? - PullRequest
1 голос
/ 09 августа 2011

Это вопрос о пигмеях, и список в основном содержит позиции, в которых находился пользователь. Однако вместо того, чтобы быть змеей длины "x", он просто продолжается и продолжается с того места, где пользователь начинает.

Найдите код, размещенный ниже, я думаю, что проблема в основном в том, где размещается поп, но я не уверен. Если вы так думаете, просто нажмите CTRL + F "pop"

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()

Ответы [ 2 ]

3 голосов
/ 09 августа 2011

Вы можете очистить экран с черным, используя такую ​​функцию, как:

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

И просто позвоните, прежде чем произойдет любой другой рисунок:

wormy.clear(screen)
wormy.worm_draw(screen)
2 голосов
/ 09 августа 2011

Я думаю, что вы можете забыть выловить ту часть червя, которая выскочила.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...