Как написать Змейку на Python за 5 минут? | Уроки Pygame для новичков
Всем привет! В этом видео мы с нуля напишем полноценную игру «Змейка» на Python с помощью библиотеки Pygame. И всё это займет у нас всего 25 строк кода! Я подробно и по шагам объясню каждую строчку кода, так что ролик идеально подойдет даже для самых начинающих программистов. Пишите в комментариях, какую игру вы хотите написать в следующем видео! Ставьте лайки и подписывайтесь на мой канал на RuTube, чтобы не пропустить новые видео! 💻 ПОЛНЫЙ КОД ИЗ ВИДЕО: import pygame as pg, random as r # Инициализируем графику, создаём окно 600 на 600 пикселей и настраиваем таймер скорости pg.init(); screen = pg.display.set_mode((600, 600)); clock = pg.time.Clock() # Задаём размер одной клетки, создаём тело змейки и направляем её вправо S, snake, dx, dy = 20, [100, 100], [80, 100], [60, 100]], 20, 0 # Пишем короткую функцию, которая будет генерировать яблоко случайно по сетке экрана def new_food(): return [r.randint(0, 29) * S, r.randint(0, 29) * S] # Создаём самое первое яблоко на карте food = new_food() # Запускаем главный игровой цикл while True: # Проверяем нажатие клавиш-стрелок и блокируем разворот змейки в саму себя for e in pg.event.get(): if e.type == pg.QUIT: pg.quit(); exit() if e.type == pg.KEYDOWN: if e.key == pg.K_UP and dy==0: dx, dy = 0, -S elif e.key == pg.K_DOWN and dy==0: dx, dy = 0, S elif e.key == pg.K_LEFT and dx==0: dx, dy = -S, 0 elif e.key == pg.K_RIGHT and dx==0: dx, dy = S, 0 # Движение змейки: вычисляем координаты новой головы и добавляем её в начало списка snake.insert(0, [snake[0][0] + dx, snake[0][1] + dy]) # Если голова змейки оказалась на еде — спавним новое яблоко if snake[0] == food: food = new_food() # Иначе просто удаляем кусочек хвоста, чтобы змейка двигалась вперёд else: snake.pop() # Проверяем, врезалась ли змейка в стены или укусила свой хвост — если да, то закрываем игру if (snake[0][0] ﹤ 0 or snake[0][0] ﹥= 600 or snake[0][1] ﹤ 0 or snake[0][1] ﹥= 600 or snake[0] in snake[1:]): print("Конец игры! Ставьте лайк!"); pg.quit(); exit() # Очищаем экран от старых кадров, заливая его тёмным цветом screen.fill((20, 20, 20)) # Рисуем красную еду и в цикле перерисовываем всю змейку зелёными квадратами pg.draw.rect(screen, (255, 50, 50), (food[0], food[1], S-2, S-2)) for b in snake: pg.draw.rect(screen, (50, 220, 50), (b[0], b[1], S-2, S-2)) # Обновляем кадр на экране и задаем скорость — игра автоматически вызывается каждые 100 миллисекунд (10 FPS) pg.display.flip(); clock.tick(10)
Всем привет! В этом видео мы с нуля напишем полноценную игру «Змейка» на Python с помощью библиотеки Pygame. И всё это займет у нас всего 25 строк кода! Я подробно и по шагам объясню каждую строчку кода, так что ролик идеально подойдет даже для самых начинающих программистов. Пишите в комментариях, какую игру вы хотите написать в следующем видео! Ставьте лайки и подписывайтесь на мой канал на RuTube, чтобы не пропустить новые видео! 💻 ПОЛНЫЙ КОД ИЗ ВИДЕО: import pygame as pg, random as r # Инициализируем графику, создаём окно 600 на 600 пикселей и настраиваем таймер скорости pg.init(); screen = pg.display.set_mode((600, 600)); clock = pg.time.Clock() # Задаём размер одной клетки, создаём тело змейки и направляем её вправо S, snake, dx, dy = 20, [100, 100], [80, 100], [60, 100]], 20, 0 # Пишем короткую функцию, которая будет генерировать яблоко случайно по сетке экрана def new_food(): return [r.randint(0, 29) * S, r.randint(0, 29) * S] # Создаём самое первое яблоко на карте food = new_food() # Запускаем главный игровой цикл while True: # Проверяем нажатие клавиш-стрелок и блокируем разворот змейки в саму себя for e in pg.event.get(): if e.type == pg.QUIT: pg.quit(); exit() if e.type == pg.KEYDOWN: if e.key == pg.K_UP and dy==0: dx, dy = 0, -S elif e.key == pg.K_DOWN and dy==0: dx, dy = 0, S elif e.key == pg.K_LEFT and dx==0: dx, dy = -S, 0 elif e.key == pg.K_RIGHT and dx==0: dx, dy = S, 0 # Движение змейки: вычисляем координаты новой головы и добавляем её в начало списка snake.insert(0, [snake[0][0] + dx, snake[0][1] + dy]) # Если голова змейки оказалась на еде — спавним новое яблоко if snake[0] == food: food = new_food() # Иначе просто удаляем кусочек хвоста, чтобы змейка двигалась вперёд else: snake.pop() # Проверяем, врезалась ли змейка в стены или укусила свой хвост — если да, то закрываем игру if (snake[0][0] ﹤ 0 or snake[0][0] ﹥= 600 or snake[0][1] ﹤ 0 or snake[0][1] ﹥= 600 or snake[0] in snake[1:]): print("Конец игры! Ставьте лайк!"); pg.quit(); exit() # Очищаем экран от старых кадров, заливая его тёмным цветом screen.fill((20, 20, 20)) # Рисуем красную еду и в цикле перерисовываем всю змейку зелёными квадратами pg.draw.rect(screen, (255, 50, 50), (food[0], food[1], S-2, S-2)) for b in snake: pg.draw.rect(screen, (50, 220, 50), (b[0], b[1], S-2, S-2)) # Обновляем кадр на экране и задаем скорость — игра автоматически вызывается каждые 100 миллисекунд (10 FPS) pg.display.flip(); clock.tick(10)




