2016-11-20 2 views
0

Я хотел бы просто дать общее объяснение того, как использовать класс и подкласс в pygame?Как работает super() ._ init_ в pygame?

+0

держать змей в виде списка его сегментов/элементов - каждый элемент сохраняет свое положение - первый элемент - змея. Когда змея движется, вы добавляете новое положение головы в начало списка, и вы удаляете последний элемент, а змея/список имеют одинаковую длину. Когда змея ест что-то, то когда вы не удалите последний элемент из списка. Таким образом, змея длиннее. – furas

ответ

0

Держите змею как список ее сегментов/элементов. Каждый элемент сохраняет позицию сегмента (x,y). Первый элемент - змеиная головка. то есть.

snake = [(10,10), (11,10), (12,10)] 

Когда змея двигается, то вы добавить новое положение головы в начале списка и удалить последний элемент - и змеи/список имеет одинаковую длину.

# new head position 
snake.insert(0, (9,10)) 

# remove tail  
snake.pop() 

Когда змея что-то ест, вы не удаляете последний элемент из списка. Таким образом, змея длиннее.

# init data 
make_longer = False 

... 

# snake eat sothing 
make_longer = True 

... 

# new head position 
snake.insert(0, (9,10)) 

# remove tail  
if make_longer: 
    # skip removing last element once 
    make_longer = False 
else: 
    snake.pop() 

Если вы хотите сделать больше, чем один элемент, то не удаляйте последний элемент более одного раза.

# init data 
make_longer = 0 

... 

# snake eat sothing 
# make_longer = 3 
make_longer += 3 # better when snake eats more apples in short time 

... 

# new head position 
snake.insert(0, (9,10)) 

# remove tail  
if make_longer > 0: 
    make_longer -= 1 
else: 
    snake.pop() 
Смежные вопросы