Файл: Мини игра змейка.docx

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 22.11.2023

Просмотров: 26

Скачиваний: 2

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

Негосударственное образовательное частное учреждение высшего образования «Московский финансово-промышленный университет «Синергия»
Институт информационных систем и технологий
Департамент Цифровой экономики

Дисциплина «Python»

Тема «Мини игра змейка»

Выполнил Студент Атакшиев Ш.О.

группа Номер ДБИ-102РСОБ

Приняла Терехова Л.А.

Москва 2023

import pygame # импротируем библиотеку для создания игр
from random import randrange # генератор диапозона случайных чисал

RES = 800 # размер рабочего окна
SIZE = 50 # размер змейки


# начальное положение змейки и яблока
x, y = randrange(0, RES, SIZE), randrange(0, RES, SIZE)
apple = randrange(0, RES, SIZE), randrange(0, RES, SIZE)
dirs = {'W': True, 'S': True, 'A': True, 'D': True, }
lenght = 1 # длина змейки
snake = [(x,y)]
dx, dy = 0, 0 # направление движения
score = 0
fps = 5 # скорость змейки

pygame.init() # инициализируем модули pygame
sc = pygame.display.set_mode([RES, RES])
clock = pygame.time.Clock() # объект класса для регулирования змейки
font_score = pygame.font.SysFont('TimesNewRoman', 26, bold=True) #Укажем название шрифта и его размер для показания счета
font_end = pygame.font.SysFont('TimesNewRoman', 66, bold=True) #Укажем название шрифта и его размер для надписи по окончанию игры

while True:
sc.fill(pygame.Color('black')) # закрашиваем поверхность в черный цвет
# отображение змейки и яблока
[(pygame.draw.rect(sc, pygame.Color('green'), (i, j, SIZE - 2, SIZE - 2))) for i, j in snake]
pygame.draw.rect(sc, pygame.Color('red'), (*apple, SIZE, SIZE))
# показ результата
render_score = font_score.render(f'SCORE: {score}', 1, pygame.Color('green'))
sc.blit(render_score, (5,5))
# движение змеи
x += dx * SIZE
y += dy * SIZE
snake.append((x, y))
snake = snake[-lenght:] # чтобы змейка не была бесконечной
# поедание яблока
if snake[-1] == apple:
apple = randrange(0, RES, SIZE), randrange(0, RES, SIZE)
# длина и скорость змейки при поедании увеличиваются на 1 единицу
lenght += 1
score += 1
fps += 1
# конец игры
if x < 0 or x > RES - SIZE or y < 0 or y > RES - SIZE or len(snake) != len(set(snake)): #определяем крайнее положение для x,y
while True:
render_end = font_end.render('Game Over', 1, pygame.Color('green'))
sc.blit(render_end, (RES // 2 - 200, RES // 3))
pygame.display.flip()
for event in pygame.event.get():
if event.type == pygame.QUIT:
exit()


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

# включаем проверку событий для закрытия приложения
for event in pygame.event.get():

if event.type == pygame.QUIT:
exit()

#управление
key = pygame.key.get_pressed()
if key[pygame.K_w] and dirs['W']: # задаем клавиши для управления
dx, dy = 0, -1 # направление движения змейки
dirs = {'W': True, 'S': False, 'A': True, 'D': True, } #чтобы змейка не проходила через саму себя
if key[pygame.K_s] and dirs['S']: # задаем клавиши для управления

dx, dy = 0, 1 # направление движения змейки
dirs = {'W': False, 'S': True, 'A': True, 'D': True, } #чтобы змейка не проходила через саму себя
if key[pygame.K_a] and dirs['A']: # задаем клавиши для управления

dx, dy = -1, 0 # направление движения змейки
dirs = {'W': True, 'S': True, 'A': True, 'D': False, } #чтобы змейка не проходила через саму себя
if key[pygame.K_d] and dirs['D']: # задаем клавиши для управления

dx, dy = 1, 0 # направление движения змейки
dirs = {'W': True, 'S': True, 'A': False, 'D': True, } #чтобы змейка не проходила через саму себя

Сама игра