Advertisement
Guest User

Untitled

a guest
Sep 20th, 2017
68
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 11.12 KB | None | 0 0
  1. import pygame.examples.stars, random,sys,time
  2. pygame.init()
  3. pygame.examples.stars.main()
  4. def eror():
  5. eror = pygame.init()
  6. if eror[1] == 0:
  7. print("Program work")
  8. else:
  9. print("Errors detected")
  10. sys.exit()
  11.  
  12.  
  13. t1 = time.time()
  14.  
  15. playSurface = pygame.display.set_mode((900, 700))
  16. pygame.display.set_caption("Змейка")
  17. position = [50, 50] # Координаты питончика
  18. body = [[80, 50], [70, 50], [60, 50]] # Структура тела питончика
  19. bait = [random.randrange(1, 80) * 10, random.randrange(1, 60) * 10]
  20. baitVisible = True #
  21. fpsController = pygame.time.Clock()
  22. direction = 'RIGHT'
  23. changeto = direction
  24. score = len(body) # Задание 2. Задаем первичное значение длины тела питона
  25.  
  26. # color = pygame.Color(r, g, b)
  27.  
  28. white = pygame.Color(255, 255, 255) # фон
  29. black = pygame.Color(0, 0, 0) # конец игры
  30. red = pygame.Color(255, 0, 0) # шрифт
  31. green = pygame.Color(0, 255, 0) # питончик
  32. blue = pygame.Color(0, 0, 255)
  33. lightslateblue = pygame.Color(0, 200, 255) # пища для питончика
  34.  
  35. def music():
  36. pygame.mixer.init()
  37. pygame.mixer.music.load('music.mp3')
  38. pygame.mixer.music.play(loops=-1) # Задание 6. Зацикливаем музыку
  39. def gameOver(): # Задание 4. Описание работы функции gameOver()
  40. gaOFont = pygame.font.SysFont('Garamond',48) # Создаем объект Font из системных шрифтов c параметрами имя = 'Garamond', размер = 48, жирный = False, курсив = False, и присваиваем ему имя gaoFont
  41. gaOSurface = gaOFont.render('Game over!Your score {}'.format(score),True,red) # Создаем новую поверхность с текстом 'Game over!', буквы которого будут сглажены и иметь красный цвет и прозрачный фон. Присваиваем новому объекту имя gaoSurface
  42. gaORectangular = gaOSurface.get_rect() # Преобразование поверхности gaOSurface в прямоугольную при помощи функции get_rect()
  43. gaORectangular.midtop = (400,25) # Выравнивание прямоугольной поверхности (объекта) gaORectangular по координатам X (left) и Y(top)(400, 25)
  44.  
  45. gaOtFont = pygame.font.SysFont ('Garamond',38)
  46. gaOtSurface = gaOtFont.render('Time in game:'+str(t1), True,red)
  47. gaotRectangular = gaOtSurface.get_rect()
  48. gaotRectangular.midtop = (400,40)
  49. playSurface.fill(black) # Задание 3. Очищаем игровое поле и заполняем его белым цветом RGB (white). В результате в конце игры на белом фоне видим текст "Game over!" и длину тела питона (счет)
  50. playSurface.blit(gaOSurface,gaORectangular,gaOtSurface,gaotRectangular) # Прорисовывает объекты gaOSurface и gaORectangular поверх имеющихся изображений
  51. # Отрабатывает функция showScore() с аргументом choice = 2
  52. pygame.display.flip() # Обновление содержимого всего экрана
  53. time.sleep(10) # Приостановка выполнения программы на 10 секунд
  54. pygame.quit() # Закрытие (выход, деинициализация) модюля pygame, программа продолжает работать
  55. sys.exit() # Выход из python
  56.  
  57.  
  58. def showScore(choice=1):
  59.  
  60. gaOFoNt = pygame.font.SysFont('Garamond', 14)
  61. gaoSurface = gaOFoNt.render('Правила игры:'
  62. , True, red)
  63. gaorectangular = gaoSurface.get_rect()
  64. gaorectangular.midtop = (800, 20)
  65. playSurface.blit(gaoSurface,
  66. gaorectangular)
  67.  
  68. gaO2FoNt = pygame.font.SysFont('Garamond', 14)
  69. gao2Surface = gaO2FoNt.render('esc - выход из игры,m - включить музыку'
  70. , True, red)
  71. gao2rectangular = gao2Surface.get_rect()
  72. gao2rectangular.midtop = (770, 45)
  73. playSurface.blit(gao2Surface,
  74. gao2rectangular)
  75. gaO3FoNt = pygame.font.SysFont('Garamond', 14)
  76. gao3Surface = gaO3FoNt.render('r - перезапуск игры,n - выключить музыку'
  77. , True, red)
  78. gao3rectangular = gao3Surface.get_rect()
  79. gao3rectangular.midtop = (770, 70)
  80. playSurface.blit(gao3Surface,
  81. gao3rectangular)
  82. gaO4FoNt = pygame.font.SysFont('Garamond', 14)
  83. gao4Surface = gaO4FoNt.render('W A S D или стики - управление,это всё,Удачи! '
  84. , True, red)
  85. gao4rectangular = gao4Surface.get_rect()
  86. gao4rectangular.midtop = (750, 95)
  87. playSurface.blit(gao4Surface,
  88. gao4rectangular)
  89. pygame.display.flip()
  90.  
  91.  
  92.  
  93.  
  94. score2Font = pygame.font.SysFont('Garamond', 18)
  95. score2Surface = score2Font.render('Длина питона:{0}'.format(score), True,
  96. red)
  97.  
  98. score2Rect = score2Surface.get_rect()
  99. scoreRectangular = score2Surface.get_rect()
  100.  
  101.  
  102.  
  103. scoreRectangular.midtop = (400, 25)
  104.  
  105. playSurface.blit(score2Surface,score2Rect)
  106. pygame.display.flip() # Обновление содержимого всего экрана
  107.  
  108. screen=pygame.display.set_mode()
  109. clock=pygame.time.Clock()
  110. bk = pygame.image.load("imgres.jpg").convert()
  111. bk = pygame.transform.scale(bk, (900, 700))
  112.  
  113. while True:
  114. screen.blit(bk, [0,0])
  115.  
  116. clock.tick(20)
  117. for event in pygame.event.get():
  118. if event.type == pygame.QUIT:
  119. pygame.quit()
  120. sys.exit()
  121. elif event.type == pygame.KEYDOWN:
  122. if event.key == pygame.K_RIGHT or event.key == ord('d'):
  123. changeto = 'RIGHT'
  124. if event.key == pygame.K_LEFT or event.key == ord('a'):
  125. changeto = 'LEFT'
  126. if event.key == pygame.K_UP or event.key == ord('w'):
  127. changeto = 'UP'
  128. if event.key == pygame.K_DOWN or event.key == ord('s'):
  129. changeto = 'DOWN'
  130.  
  131. # pygame.event.post(pygame.event.Event(pygame.QUIT)) # Задание 5. На экране выходило сообщение, что имя QUIT не определено, т.к. такой переменной мы не задавали. Если внутри функции Event() вписать pygame.QUIT- то все ок
  132. if event.key == pygame.K_ESCAPE:
  133.  
  134. gameOver()
  135.  
  136. time.sleep(10)
  137. pygame.quit()
  138. sys.exit()
  139.  
  140.  
  141. if event.key == ord('r'):
  142. gao228 = pygame.font.SysFont('Garamond',48)
  143. gaOurface = gao228.render('Игра перезагружаеться!', True,
  144. red, ) # Создаем новую поверхность с текстом 'Game over!', буквы которого будут сглажены и иметь красный цвет и прозрачный фон. Присваиваем новому объекту имя gaoSurface
  145. playSurface.fill(lightslateblue)
  146. gaORectangular2 = gaOurface.get_rect() # Преобразование поверхности gaOSurface в прямоугольную при помощи функции get_rect()
  147. gaORectangular2.midtop = (400,
  148. 25)
  149.  
  150. position = [50, 50]
  151. body = [[80, 50], [70, 50], [60, 50]]
  152. playSurface.blit(gaOurface,
  153. gaORectangular2)
  154. pygame.display.flip()
  155.  
  156. time.sleep(3)
  157.  
  158.  
  159.  
  160.  
  161.  
  162. if event.key == ord('m'):
  163. music()
  164. if event.key == ord('n'): # Задание 6. Задаем событие при нажатии клавиши "n"
  165. pygame.mixer.music.stop() # проигрывание музыки останавливается
  166.  
  167. # Работа с направлениями движения питончика
  168.  
  169.  
  170.  
  171.  
  172.  
  173.  
  174.  
  175.  
  176.  
  177. if direction != 'LEFT' and changeto == 'RIGHT':
  178. direction = 'RIGHT'
  179. if direction != 'RIGHT' and changeto == 'LEFT':
  180. direction = 'LEFT'
  181. if direction != 'DOWN' and changeto == 'UP':
  182. direction = 'UP'
  183. if direction != 'UP' and changeto == 'DOWN':
  184. direction = 'DOWN'
  185.  
  186. # Изменение позиций в зависимости от направления
  187. if direction == 'RIGHT':
  188. position[0] += 10
  189. if direction == 'LEFT':
  190. position[0] -= 10
  191. if direction == 'UP':
  192. position[1] -= 10
  193. if direction == 'DOWN':
  194. position[1] += 10
  195.  
  196. # Работа над длиной тела питончика, увеличение счета в случае поедания пищи
  197. body.insert(0, list(position))
  198. if position[0] == bait[0] and position[1] == bait[1]:
  199. baitVisible = False
  200. else:
  201. body.pop()
  202. score = len(body) # Задание 2. После съедания питоном пищи, присваиваем переменной score новое значение длины его тела
  203.  
  204. # Видимость пищи на карте
  205. if baitVisible == False:
  206. baitVisible = True
  207. bait = [random.randrange(1, 80) * 10, random.randrange(1, 60) * 10]
  208.  
  209.  
  210.  
  211. for element in body:
  212. pygame.draw.rect(playSurface, green, pygame.Rect(element[0], element[1], 10, 10))
  213.  
  214. # Прорисовываем пищу для питончика
  215. pygame.draw.rect(playSurface, lightslateblue, pygame.Rect(bait[0], bait[1], 10, 10))
  216.  
  217. # Запрещаем питончику покидать пределы игрового поля
  218. if position[0] > 790 or position[0] < 0:
  219. position[0] = 400
  220. if position[1] > 590 or position[1] < 0:
  221. position[1] = 300
  222.  
  223. # Лишаем питончика возможности кушать самого себя
  224.  
  225. for element in body[1:]:
  226. # Задание 1. Проход циклом for по элементам списка (координатам) тела питона, начиная со второй позиции(индекс[1], а можно и с пятой, т.к. ближе пятой позиции[4:] своего тела питон укусить не может)
  227. if position[0] == element[0] and position[1] == element[1]:
  228. # Задание 1. Проверка условия совпадения координат головы питона (X, Y или индексы [0], [1] элементов списка position) с соответствующими координатами элементов списка body
  229. position = [50, 50] # Координаты питончика
  230. body = [[80, 50], [70, 50], [60, 50]] # Структура тела питончика
  231.  
  232. showScore()
  233. pygame.display.flip()
  234. playSurface.fill (white)
  235. fpsController.tick(15 )
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement