Пишем игру Питон на Python ;). Часть 2
В предыдущей части, мы научили питона двигаться. Теперь чуть усложним задачу: раскидаем по игровому полю еду, и в том случае если питон её съедает, то питон растёт. В результате получится что-то вроде:

Что делаем сначала? А сначала инициируем массив с едой, где будет храниться координаты еды, и её тип. В зависимости от типа еды, ёё цвет будет разным. Так-же определим массив с доступными цветами еды, и количество еды доступной на поле одномоментно:
.
foods=[] # массив координат с едой
max_foods=3 # сколько еды может быть одновременно на поле
color_food=[(100,200,150),(200,100,150),(140,20,150)]
Далее напишем функцию, которая генерирует распределение еды на поле случайным образом. При генерации проверяется, совпадение координат с телом питона — нужно не допустить генерацию «внутри» питона. Сюда же поместим и отрисовку сгенерированной еды:
# Генерируем и отрисовываем еду для питона
def Draw_foods(screen):
for i in range(max_foods-len(foods)): # массив с едой всегда должен быть "полон"
while True: # цикл генерации еды. Генерируем до тех пор пока сгенерированные координаты не устроят нас
x=random.randint(0,size_x)+1
y=random.randint(0,size_y)+1
food_type = random.randint(0, len(color_food) - 1)
if [x,y] not in python_body:
break;
foods.insert(0,[x,y,food_type])
print(f"Нагенерировали еды: {foods}, теперь её нарисуем");
for element in foods:
coors=[element[0]*step_x-step_x/2,element[1]*step_y-step_y/2]
pygame.draw.circle(screen,color_food[element[2]],coors,radius/2)
Далее чуть изменим функцию отрисовки движения питона Draw_python. А именно добавим проверку совпадения координат головы питона с координатами еды. Если совпадение есть — то еду удаляем, а хвост удлиняем (т.е. фактически не удаляем при движении)
#проверяем: если голова совпадает с какойто едой, то еду удаляем, а жопу не удяляем
del_tail = True
for element in foods:
if [element[0],element[1]] == head_coor:
del_tail=False
foods.remove(element)
if del_tail==True:
# зарисовываю черным жопу
element=python_body[len(python_body) - 1]
coors=[element[0]*step_x-step_x/2,element[1]*step_y-step_y/2]
pygame.draw.circle(screen,(0,0,0),coors,radius)
# удаляю последний элемент хвоста
python_body.pop(-1)
print(f"удалили жопу:{python_body}")
Код результат, можно скачать здесь