Advertisement
Guest User

Untitled

a guest
Nov 23rd, 2017
104
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.33 KB | None | 0 0
  1. import pygame
  2. import time
  3. import random
  4.  
  5. pygame.init()
  6.  
  7. white = (255, 255, 255)
  8. black = (0, 0, 0)
  9. red = (255, 0, 0)
  10. green = (0, 155, 0)
  11. blue = (0, 0, 255)
  12.  
  13. display_width = 1440
  14. display_height = 900
  15.  
  16. gameDisplay = pygame.display.set_mode((display_width, display_height))
  17. pygame.display.set_caption('Slither')
  18.  
  19. icon = pygame.image.load("icon.png")
  20. pygame.display.set_icon(icon)
  21.  
  22. img = pygame.image.load("snakehead.png")
  23. appleimg = pygame.image.load("apple.png")
  24.  
  25. clock = pygame.time.Clock()
  26.  
  27. block_size = 20
  28. FPS = 17
  29.  
  30. direction = "right"
  31. smallfont = pygame.font.SysFont ("arial", 25)
  32. medfont = pygame.font.SysFont ("arial", 50)
  33. largefont = pygame.font.SysFont ("arial", 80)
  34.  
  35.  
  36. def game_intro():
  37.  
  38. intro = True
  39.  
  40. while intro:
  41.  
  42. for event in pygame.event.get():
  43. if event.type == pygame.QUIT:
  44. pygame.quit()
  45. quit()
  46.  
  47. if event.type == pygame.KEYDOWN:
  48. if event.key == pygame.K_c:
  49. intro = False
  50. if event.key == pygame.K_q:
  51. pygame.quit()
  52. quit()
  53.  
  54.  
  55. gameDisplay.fill(white)
  56. message_to_screen("Welcome to the Snake Game!",
  57. green,
  58. -100,
  59. size="large")
  60. message_to_screen("The goal of the game is to eat the red apples",
  61. black,
  62. -30)
  63. message_to_screen("You get longer each time you eat an apple",
  64. black,
  65. 10)
  66. message_to_screen("If you run into yourself, or the edge of the map, you die.",
  67. black,
  68. 50)
  69. message_to_screen("Press C to play or Q to quit",
  70. black,
  71. 180)
  72.  
  73. pygame.display.update()
  74. clock.tick(17)
  75.  
  76.  
  77.  
  78. font = pygame.font.SysFont(None, 25)
  79.  
  80. def snake(block_size, snakeList):
  81.  
  82. if direction == "right":
  83. head = pygame.transform.rotate(img, 270)
  84. if direction == "left":
  85. head = pygame.transform.rotate(img, 90)
  86. if direction == "up":
  87. head = img
  88. if direction == "down":
  89. head = pygame.transform.rotate(img, 180)
  90.  
  91. gameDisplay.blit(head, (snakeList[-1][0], snakeList[-1][1]))
  92.  
  93. for XnY in snakeList[:-1]:
  94. pygame.draw.rect(gameDisplay, green, [XnY[0], XnY[1], block_size, block_size])
  95.  
  96. def text_objects(text, color, size):
  97. if size == "small":
  98. textSurface = smallfont.render(text,True, color)
  99. elif size == "medium":
  100. textSurface = medfont.render(text,True, color)
  101. elif size == "large":
  102. textSurface = largefont.render(text,True, color)
  103. textSurface = font.render(text, True, color)
  104. return textSurface, textSurface.get_rect()
  105.  
  106. def message_to_screen(msg,color, y_displace=0, size = "small"):
  107. textSurf, textRect = text_objects(msg, color, size)
  108. textRect.center = (display_width / 2), (display_height / 2) +y_displace
  109. gameDisplay.blit(textSurf, textRect)
  110.  
  111. ## def score_to_screen(msg,color):
  112. ## textSurf, textRect = text_objects(msg, color)
  113. ## textRect.center = (display_width / 8), (display_height / 8)
  114. ## gameDisplay.blit(textSurf, textRect)
  115.  
  116.  
  117.  
  118.  
  119. def gameLoop():
  120. global direction
  121.  
  122. direction = "right"
  123. snakeLength = 1
  124. gameExit = False
  125. gameOver = False
  126.  
  127. lead_x = display_width / 2
  128. lead_y = display_height / 2
  129.  
  130. lead_x_change = 0
  131. lead_y_change = 0
  132.  
  133. snakeList = []
  134. snakeLength = 1
  135.  
  136.  
  137.  
  138.  
  139. while not gameExit:
  140.  
  141. while gameOver == True:
  142. gameDisplay.fill(white)
  143. message_to_screen("Game over",
  144. red,
  145. -50,
  146. size = "large")
  147. message_to_screen("Press C to play again or Q to quit",
  148. black,
  149. 50,
  150. size = "medium")
  151. pygame.display.update()
  152.  
  153. for event in pygame.event.get():
  154. if event.type == pygame.QUIT:
  155. gameExit = True
  156. gameOver = False
  157. if event.type == pygame.KEYDOWN:
  158. if event.key == pygame.K_q:
  159. gameExit = True
  160. gameOver = False
  161. if event.key == pygame.K_c:
  162. gameLoop()
  163.  
  164.  
  165. for event in pygame.event.get():
  166. if event.type == pygame.QUIT:
  167. gameExit = True
  168. if event.type == pygame.KEYDOWN:
  169. if event.key == pygame.K_LEFT:
  170. direction = "left"
  171. lead_x_change = -block_size
  172. lead_y_change = 0
  173. elif event.key == pygame.K_RIGHT:
  174. direction = "right"
  175. lead_x_change = block_size
  176. lead_y_change = 0
  177.  
  178. elif event.key == pygame.K_UP:
  179. direction = "up"
  180. lead_y_change = -block_size
  181. lead_x_change = 0
  182. elif event.key == pygame.K_DOWN:
  183. direction = "down"
  184. lead_y_change = block_size
  185. lead_x_change = 0
  186.  
  187. if lead_x >= display_width or lead_x < 0 or lead_y >= display_height or lead_y < 0:
  188. gameOver = True
  189.  
  190. lead_x += lead_x_change
  191. lead_y += lead_y_change
  192.  
  193.  
  194. gameDisplay.fill(black)
  195.  
  196. AppleThickness = 30
  197. #pygame.draw.rect(gameDisplay, red, [randAppleX, randAppleY, AppleThickness, AppleThickness])
  198.  
  199.  
  200.  
  201. snakeHead = []
  202. snakeHead.append(lead_x)
  203. snakeHead.append(lead_y)
  204. snakeList.append(snakeHead)
  205.  
  206. if len(snakeList) > snakeLength:
  207. del snakeList[0]
  208.  
  209. for eachSegment in snakeList[:-1]:
  210. if eachSegment == snakeHead:
  211. gameOver = True
  212.  
  213. ## score_to_screen("Score: " + str(snakeLength - 1), blue)
  214. ## snake(block_size, snakeList)
  215.  
  216. snake(block_size, snakeList)
  217. pygame.display.update()
  218. snakeLength += 1
  219. clock.tick(FPS)
  220.  
  221.  
  222. pygame.quit()
  223. quit()
  224. game_intro()
  225. gameLoop()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement