Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import pygame.examples.stars, random,sys,time
- pygame.init()
- pygame.examples.stars.main()
- def eror():
- eror = pygame.init()
- if eror[1] == 0:
- print("Program work")
- else:
- print("Errors detected")
- sys.exit()
- t1 = time.time()
- playSurface = pygame.display.set_mode((900, 700))
- pygame.display.set_caption("Змейка")
- position = [50, 50] # Координаты питончика
- body = [[80, 50], [70, 50], [60, 50]] # Структура тела питончика
- bait = [random.randrange(1, 80) * 10, random.randrange(1, 60) * 10]
- baitVisible = True #
- fpsController = pygame.time.Clock()
- direction = 'RIGHT'
- changeto = direction
- score = len(body) # Задание 2. Задаем первичное значение длины тела питона
- # color = pygame.Color(r, g, b)
- white = pygame.Color(255, 255, 255) # фон
- black = pygame.Color(0, 0, 0) # конец игры
- red = pygame.Color(255, 0, 0) # шрифт
- green = pygame.Color(0, 255, 0) # питончик
- blue = pygame.Color(0, 0, 255)
- lightslateblue = pygame.Color(0, 200, 255) # пища для питончика
- def music():
- pygame.mixer.init()
- pygame.mixer.music.load('music.mp3')
- pygame.mixer.music.play(loops=-1) # Задание 6. Зацикливаем музыку
- def gameOver(): # Задание 4. Описание работы функции gameOver()
- gaOFont = pygame.font.SysFont('Garamond',48) # Создаем объект Font из системных шрифтов c параметрами имя = 'Garamond', размер = 48, жирный = False, курсив = False, и присваиваем ему имя gaoFont
- gaOSurface = gaOFont.render('Game over!Your score {}'.format(score),True,red) # Создаем новую поверхность с текстом 'Game over!', буквы которого будут сглажены и иметь красный цвет и прозрачный фон. Присваиваем новому объекту имя gaoSurface
- gaORectangular = gaOSurface.get_rect() # Преобразование поверхности gaOSurface в прямоугольную при помощи функции get_rect()
- gaORectangular.midtop = (400,25) # Выравнивание прямоугольной поверхности (объекта) gaORectangular по координатам X (left) и Y(top)(400, 25)
- gaOtFont = pygame.font.SysFont ('Garamond',38)
- gaOtSurface = gaOtFont.render('Time in game:'+str(t1), True,red)
- gaotRectangular = gaOtSurface.get_rect()
- gaotRectangular.midtop = (400,40)
- playSurface.fill(black) # Задание 3. Очищаем игровое поле и заполняем его белым цветом RGB (white). В результате в конце игры на белом фоне видим текст "Game over!" и длину тела питона (счет)
- playSurface.blit(gaOSurface,gaORectangular,gaOtSurface,gaotRectangular) # Прорисовывает объекты gaOSurface и gaORectangular поверх имеющихся изображений
- # Отрабатывает функция showScore() с аргументом choice = 2
- pygame.display.flip() # Обновление содержимого всего экрана
- time.sleep(10) # Приостановка выполнения программы на 10 секунд
- pygame.quit() # Закрытие (выход, деинициализация) модюля pygame, программа продолжает работать
- sys.exit() # Выход из python
- def showScore(choice=1):
- gaOFoNt = pygame.font.SysFont('Garamond', 14)
- gaoSurface = gaOFoNt.render('Правила игры:'
- , True, red)
- gaorectangular = gaoSurface.get_rect()
- gaorectangular.midtop = (800, 20)
- playSurface.blit(gaoSurface,
- gaorectangular)
- gaO2FoNt = pygame.font.SysFont('Garamond', 14)
- gao2Surface = gaO2FoNt.render('esc - выход из игры,m - включить музыку'
- , True, red)
- gao2rectangular = gao2Surface.get_rect()
- gao2rectangular.midtop = (770, 45)
- playSurface.blit(gao2Surface,
- gao2rectangular)
- gaO3FoNt = pygame.font.SysFont('Garamond', 14)
- gao3Surface = gaO3FoNt.render('r - перезапуск игры,n - выключить музыку'
- , True, red)
- gao3rectangular = gao3Surface.get_rect()
- gao3rectangular.midtop = (770, 70)
- playSurface.blit(gao3Surface,
- gao3rectangular)
- gaO4FoNt = pygame.font.SysFont('Garamond', 14)
- gao4Surface = gaO4FoNt.render('W A S D или стики - управление,это всё,Удачи! '
- , True, red)
- gao4rectangular = gao4Surface.get_rect()
- gao4rectangular.midtop = (750, 95)
- playSurface.blit(gao4Surface,
- gao4rectangular)
- pygame.display.flip()
- score2Font = pygame.font.SysFont('Garamond', 18)
- score2Surface = score2Font.render('Длина питона:{0}'.format(score), True,
- red)
- score2Rect = score2Surface.get_rect()
- scoreRectangular = score2Surface.get_rect()
- scoreRectangular.midtop = (400, 25)
- playSurface.blit(score2Surface,score2Rect)
- pygame.display.flip() # Обновление содержимого всего экрана
- screen=pygame.display.set_mode()
- clock=pygame.time.Clock()
- bk = pygame.image.load("imgres.jpg").convert()
- bk = pygame.transform.scale(bk, (900, 700))
- while True:
- screen.blit(bk, [0,0])
- clock.tick(20)
- for event in pygame.event.get():
- if event.type == pygame.QUIT:
- pygame.quit()
- sys.exit()
- elif event.type == pygame.KEYDOWN:
- if event.key == pygame.K_RIGHT or event.key == ord('d'):
- changeto = 'RIGHT'
- if event.key == pygame.K_LEFT or event.key == ord('a'):
- changeto = 'LEFT'
- if event.key == pygame.K_UP or event.key == ord('w'):
- changeto = 'UP'
- if event.key == pygame.K_DOWN or event.key == ord('s'):
- changeto = 'DOWN'
- # pygame.event.post(pygame.event.Event(pygame.QUIT)) # Задание 5. На экране выходило сообщение, что имя QUIT не определено, т.к. такой переменной мы не задавали. Если внутри функции Event() вписать pygame.QUIT- то все ок
- if event.key == pygame.K_ESCAPE:
- gameOver()
- time.sleep(10)
- pygame.quit()
- sys.exit()
- if event.key == ord('r'):
- gao228 = pygame.font.SysFont('Garamond',48)
- gaOurface = gao228.render('Игра перезагружаеться!', True,
- red, ) # Создаем новую поверхность с текстом 'Game over!', буквы которого будут сглажены и иметь красный цвет и прозрачный фон. Присваиваем новому объекту имя gaoSurface
- playSurface.fill(lightslateblue)
- gaORectangular2 = gaOurface.get_rect() # Преобразование поверхности gaOSurface в прямоугольную при помощи функции get_rect()
- gaORectangular2.midtop = (400,
- 25)
- position = [50, 50]
- body = [[80, 50], [70, 50], [60, 50]]
- playSurface.blit(gaOurface,
- gaORectangular2)
- pygame.display.flip()
- time.sleep(3)
- if event.key == ord('m'):
- music()
- if event.key == ord('n'): # Задание 6. Задаем событие при нажатии клавиши "n"
- pygame.mixer.music.stop() # проигрывание музыки останавливается
- # Работа с направлениями движения питончика
- if direction != 'LEFT' and changeto == 'RIGHT':
- direction = 'RIGHT'
- if direction != 'RIGHT' and changeto == 'LEFT':
- direction = 'LEFT'
- if direction != 'DOWN' and changeto == 'UP':
- direction = 'UP'
- if direction != 'UP' and changeto == 'DOWN':
- direction = 'DOWN'
- # Изменение позиций в зависимости от направления
- if direction == 'RIGHT':
- position[0] += 10
- if direction == 'LEFT':
- position[0] -= 10
- if direction == 'UP':
- position[1] -= 10
- if direction == 'DOWN':
- position[1] += 10
- # Работа над длиной тела питончика, увеличение счета в случае поедания пищи
- body.insert(0, list(position))
- if position[0] == bait[0] and position[1] == bait[1]:
- baitVisible = False
- else:
- body.pop()
- score = len(body) # Задание 2. После съедания питоном пищи, присваиваем переменной score новое значение длины его тела
- # Видимость пищи на карте
- if baitVisible == False:
- baitVisible = True
- bait = [random.randrange(1, 80) * 10, random.randrange(1, 60) * 10]
- for element in body:
- pygame.draw.rect(playSurface, green, pygame.Rect(element[0], element[1], 10, 10))
- # Прорисовываем пищу для питончика
- pygame.draw.rect(playSurface, lightslateblue, pygame.Rect(bait[0], bait[1], 10, 10))
- # Запрещаем питончику покидать пределы игрового поля
- if position[0] > 790 or position[0] < 0:
- position[0] = 400
- if position[1] > 590 or position[1] < 0:
- position[1] = 300
- # Лишаем питончика возможности кушать самого себя
- for element in body[1:]:
- # Задание 1. Проход циклом for по элементам списка (координатам) тела питона, начиная со второй позиции(индекс[1], а можно и с пятой, т.к. ближе пятой позиции[4:] своего тела питон укусить не может)
- if position[0] == element[0] and position[1] == element[1]:
- # Задание 1. Проверка условия совпадения координат головы питона (X, Y или индексы [0], [1] элементов списка position) с соответствующими координатами элементов списка body
- position = [50, 50] # Координаты питончика
- body = [[80, 50], [70, 50], [60, 50]] # Структура тела питончика
- showScore()
- pygame.display.flip()
- playSurface.fill (white)
- fpsController.tick(15 )
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement