Создаем игру Змейка на python pygame Часть 6 Движение змейки Snake game Python

preview_player
Показать описание
🔥🔥🔥 Курс на степике по Pygame🔥🔥🔥

Степик с меня берет комиссию поэтому
1) Лучший способ приобрести курс - личный банковский перевод в РФ или покупку тарифа на boosty. Я добавлю вас вручную на курс по вашему ид.
2) оплачивать напрямую на степике по реферальной ссылке
так с меня возьмут меньше комиссии

В курсе вы получите доступ ко всем закрытым видео, к закрытому чату в телеграмме и к практическим задачам
Доступ к курсу бессрочный

🚀🚀🚀 Доступ к закрытым видео на один месяц вы можете получить, став спонсором канала

👉👉👉Телеграмм канал моего проекта

👉👉👉Группа в вк

🔥🔥🔥 Курс по основам Python 🔥🔥🔥

🔥🔥🔥 Курс по ООП на Python 🔥🔥🔥

🔥🔥🔥 Курс по Django 🔥🔥🔥
Рекомендации по теме
Комментарии
Автор

🔥 Полный доступ ко всем материалам и видео по pygame вы получите на курсе

🛒📉 Приобрести доступ за 650р можно через
или сделав донат в бусти

egoroffchannel
Автор

Годно, быстрей бы ее уже доделать =)))

danafanasyev
Автор

Ну вот ещё 12 часов, а так хотелось уже сегодня

Haralld
Автор

Долго не мог понять, почему head.x + d_row, head.y + d_col, хотя наоборот х зависит от колонки, у - от ряда. (Но при этом все работает правильно)
Причина видимо в порядке передачи аргументов в def draw_block(color, row, column) - надо сначала column, потом row.

slavalebedev
Автор

Я оч надеюсь, что ты будешь развивать контент как-то по-своему, потому что спам-просьбы обзора чего-то специфического начинает меня пугать, нужно самому придумать что-то и форсить для баланса))

tarassavchenko
Автор

Пожалуйста скажите что делать выдаёт TypeError: unsupported operand type (s) for +: ' int ' and ' tuple '

GoRb
Автор

Чел, сделай уроки по PyQt5. Пж. Сейчас нету годных вещей, а только у те реальеая годнота. Тема ща актуальна. Думаю многие захочут иоже про pyqt5

who-
Автор

Скиньте пожалуйста код при котором у вас все работает.
Буду благодарен

qilnkoe
Автор

Подскажи пожалуйста в чем проблема?У меня змейка при нажатии на Мышь, не Переходит на лево или право, двигается просто Прямо и выходит за рамки))

WBA
Автор

А как настроить PyCharm так, чтобы всякие функции подсвечивались в зелёный?(В 26 уроке ты про это не говорил)

hlkibwt
Автор

есть странный баг, при котором сначала между клетками змеи есть расстояние в один блок, а потом третий блок исчезает, буду рад вашим вариантам решения проблемы, а пока ищу сам

ShootiCSgo
Автор

Что делать у меня змейка может идти только вверх?

rztdcot
Автор

x, y = block
TypeError: cannot unpack non-iterable SnakeBl object
Почему такая ошибка?

justDmitriy
Автор

Подскажите, пожалуйста что делать с ошибкой:
AttributeError: ‘tuple’ object has no attribute ‘append’?
Буду благодарен

qilnkoe
Автор

Привет я нашел баг, если быстро нажать вверх и вправо, или лево, змейка по той же оси пойдет в другую сторону

bogdanmrzk
Автор

движение, но проще (оч коряво)
import time
from random import randrange
import pygame

class Snake(pygame.sprite.Sprite):
def __init__(self):

self.image = pygame.Surface((20, 20))
self.image.fill( pygame.Color("green"))
self.rect = self.image.get_rect()

self.rect.x = 10
self.rect.y = 120
self.speedx = 0
self.x = self.rect.x
self.y = self.rect.y
self.x_1 = self.rect.x
self.y_1 = self.rect.y
self.color_1 = WHITE


def update(self):
self.speedx = 0


self.key = pygame.key.get_pressed()
if self.key[pygame.K_RIGHT]:
self.rect.x += 22
self.x = self.rect.x
self.x_1 = self.rect.x
self.x_1 -= 10
if self.x_1 %44 == 0 :
self.color_1 = WHITE
print(coulumn)

else:
self.x_1 = self.rect.x
self.x_1 -= 32
if self.x_1 %44 == 0:
self.color_1 = BLUE
self.x -= 22
pygame.draw.rect(screen, self.color_1, [self.x, self.y, block_SIZE, block_SIZE])
self.x = self.rect.x
self.x_1 = self.rect.x

if self.key[pygame.K_LEFT]:
self.rect.x -= 22
self.x = self.rect.x
self.x_1 = self.rect.x
self.x_1 -= 10
if self.x_1 % 44 == 0:
self.color_1 = WHITE
print(coulumn)

else:
self.x_1 = self.rect.x
self.x_1 -= 32
if self.x_1 % 44 == 0:
self.color_1 = BLUE
self.x += 22
pygame.draw.rect(screen, self.color_1, [self.x, self.y, block_SIZE, block_SIZE])
self.x = self.rect.x
self.x_1 = self.rect.x

if self.key[pygame.K_DOWN]:
self.rect.y += 22
self.y = self.rect.y
self.x_1 = self.rect.x
self.x_1 -= 10
if self.x_1 % 44 == 0:
self.color_1 = BLUE
print(coulumn)

else:
self.x_1 = self.rect.x
self.x_1 -= 32
if self.x_1 % 44 == 0:
self.color_1 = WHITE
self.y -= 22
pygame.draw.rect(screen, self.color_1, [self.x, self.y, block_SIZE, block_SIZE])
self.y = self.rect.y
self.y_1 = self.rect.y

if self.key[pygame.K_UP]:
self.rect.y -= 22
self.y = self.rect.y
self.x_1 = self.rect.x
self.x_1 -= 10
if self.x_1 % 44 == 0:
self.color_1 = BLUE
print(coulumn)

else:
self.x_1 = self.rect.x
self.x_1 -= 32
if self.x_1 % 44 == 0:
self.color_1 = WHITE
self.y += 22
pygame.draw.rect(screen, self.color_1, [self.x, self.y, block_SIZE, block_SIZE])
self.y = self.rect.y
self.y_1 = self.rect.y



class Apple(pygame.sprite.Sprite):
def __init__(self):

self.image = pygame.Surface((20, 20))

self.rect = self.image.get_rect()

self.rect.x = randrange(10, 490, 22)
self.rect.y = randrange(120, 580, 22)








size = [500, 600]
block_SIZE = 20
apple_size = 50

pygame.init()
green = pygame.Color("green")
red = pygame.Color("red")
FRAME_COLOR = (0, 255, 204)
WHITE = (255, 255, 255)
BLUE = (204, 255, 255)
HEADER_COLOR = (0, 204, 153)
screen =
clock = pygame.time.Clock()
fps = 5
x = 10
y = 120
x_2 =0
y_2 = 0
COUNT_BLOCKS = 20
COUNT_BLOCKS2 = 20
all_sprites = pygame.sprite.Group()
snake = Snake()
apple = Apple()
all_sprites.add(snake)
all_sprites.add(apple)
screen.fill(FRAME_COLOR)

while True:

#база
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
exit()

#игрвое поле
for row in range(COUNT_BLOCKS):
for coulumn in range(COUNT_BLOCKS):
if x >= 484:
y += 22
x = 10
if y >= 580:
break


if coulumn %2 == 0:
color = BLUE
else:
color = WHITE
print(coulumn)
pygame.draw.rect(screen, color, [x, y, block_SIZE, block_SIZE])
x += 22

for k in range(COUNT_BLOCKS2):
for p in range(COUNT_BLOCKS2):
for coulumn2 in range(COUNT_BLOCKS2):
if x_2 > 590:
y_2 += 20
x_2 = 0
if y_2 == 100:
break
pygame.draw.rect(screen, HEADER_COLOR, [x_2, y_2, block_SIZE, block_SIZE])
x_2 += 20


#обработка столкновений змеи и яблок
if (apple.rect.x, apple.rect.y) == (snake.rect.x, snake.rect.y):
apple.rect.x = randrange(10, 490, 22)
apple.rect.y = randrange(120, 580, 22)

apple.kill()
pygame.draw.rect(screen, pygame.Color("red"), [ apple.rect.x, apple.rect.y, block_SIZE, block_SIZE])




#база
all_sprites.update()

all_sprites.draw(screen)

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


pygame.quit()

peexwme
Автор

Егор привет, пишу полностью с твоего видео код, но выдает ошибку( head = zombie_blocks(-1)
TypeError: 'tuple' object is not callable) помоги пожалуйста

OLEGAROS
Автор

Привет. У меня тут появился баг. После добавления фичи о движении головы змейка все тело змейки у меня теперь располагается через 1 блок, а не слитно. Все проверил, координаты и значения d_row и d_col правильные... Как вот это можно исправить и с чем вообще может быть связано?

tommyhilfiger
Автор

Помогите пожалуйста, как исправить ошибку
NameError: name 'timer' is not defined

wqrmk
Автор

Если SIZE_BLOCK>20, змейка не заканчивает игру, ударяясь о правую и нижнюю стенку

pziktbs