Advertisement
Guest User

Untitled

a guest
Apr 26th, 2017
440
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.88 KB | None | 0 0
  1. import pygame
  2. import time
  3. import math
  4. import random
  5. from enum import Enum, auto
  6. #GET LIVEWIRES IN THIS
  7. pygame.init()
  8. gameDisplay = pygame.display.set_mode((800, 600))
  9. pygame.display.set_caption("SpaceMiner")
  10. windowWidth, windowHeight = pygame.display.get_surface().get_size()
  11. gameTime = time.time()
  12. clock = pygame.time.Clock()
  13. gameExit = False
  14. paused = False
  15.  
  16. white = (255, 255, 255) #Colors
  17. black = (0, 0, 0)
  18. red = (255, 0, 0)
  19. green = (0, 255, 0)
  20. blue = (0, 0, 255)
  21. yellow = (255, 255, 0)
  22. pink = (255, 0, 255)
  23. lightBlue = (0, 255, 255)
  24. gray = (100, 100, 100)
  25.  
  26. def msgScreen(text, font, size, color, x, y, bold, italic, centered):
  27. font = pygame.font.SysFont(font, size, bold, italic)
  28. label = font.render(text, 1, color)
  29. if centered:
  30. gameDisplay.blit(label, (x - label.get_width() /2, y - label.get_height() / 2))
  31. else:
  32. gameDisplay.blit(label, (x, y))
  33. def checkOverRect(x, y, rectX, rectY, rectWidth, rectHeight):
  34. if rectX < x and rectX + rectWidth > x and rectY < y and rectY + rectHeight > mouseY:
  35. return True
  36. else:
  37. return False
  38. def rotate(gameObject, angle):
  39. rotations = {}
  40. r = rotations.get(gameObject, 0) + angle
  41. rotations[gameObject] = r
  42. return pygame.transform.rotate(gameObject, r)
  43.  
  44. #Button functions
  45.  
  46. def startGame():
  47. global gameMode
  48. global player
  49. global playerBullets
  50. global bulletImage
  51. global playerImage
  52. global playerHealthMax
  53. gameMode = "Game"
  54. player = Player(basicPlayerImage, windowWidth / 2, windowHeight - 100, 0, 0, playerHealthMax)
  55. playerBullets = []
  56.  
  57. class Button:
  58. def __init__(self, x, y, width, height, color, text, textColor, textSize, textFont, action):
  59. self.x = x
  60. self.y = y
  61. self.width = width
  62. self.height = height
  63. self.color = color
  64. self.text = text
  65. self.textColor = textColor
  66. self.textSize = textSize
  67. self.textFont = textFont
  68. self.action = action
  69. self.big = False
  70. self.oldW = None
  71. self.oldH = None
  72. def draw(self):
  73. pygame.draw.rect(gameDisplay, self.color, [self.x, self.y, self.width, self.height])
  74. msgScreen(self.text, self.textFont, self.textSize, self.textColor, self.x + self.width / 2, self.y + self.height / 2, False, False, True)
  75. def act(self):
  76. return self.action()
  77. class Player(pygame.sprite.Sprite):
  78. def __init__(self, image, x, y, xSpeed, ySpeed, health):
  79. self.image = image
  80. self.imageRect = self.image.get_rect()
  81. self.x = x
  82. self.y = y
  83. self.xSpeed = xSpeed
  84. self.ySpeed = ySpeed
  85. self.health = health
  86. self.moveDir = [False, False, False, False]
  87. self.rotateTimer = gameTime
  88. self.angle = 0
  89. def draw(self):
  90. gameDisplay.blit(pygame.transform.rotate(self.image, self.angle), (self.x - self.image.get_width() / 2, self.y - self.image.get_height() / 2))
  91. def move(self):
  92. global gameTime
  93. self.x += self.xSpeed
  94. self.y += self.ySpeed
  95. if self.moveDir[0]:
  96. self.ySpeed = -2.5
  97. elif self.moveDir[1]:
  98. self.ySpeed = 2.5
  99. else:
  100. self.ySpeed = 0
  101. if self.moveDir[2]:
  102. #self.xSpeed = 2.5
  103. self.angle = (self.angle + 10) % 360
  104. self.rotateTimer = gameTime
  105. elif self.moveDir[3]:
  106. #self.xSpeed = -2.5
  107. self.angle = (self.angle - 10) % 360
  108. self.rotateTimer = gameTime
  109. else:
  110. self.xSpeed = 0
  111. class Bullet(pygame.sprite.Sprite):
  112. def __init__(self, image, x, y, xSpeed, ySpeed, damage):
  113. self.image = image
  114. self.x = x
  115. self.y = y
  116. self.xSpeed = xSpeed
  117. self.ySpeed = ySpeed
  118. self.damage = damage
  119. def draw(self):
  120. gameDisplay.blit(self.image, (self.x - self.image.get_width() / 2, self.y - self.image.get_height() / 2))
  121. def move(self):
  122. self.x += self.xSpeed
  123. self.y += self.ySpeed
  124.  
  125. class state():
  126. MENU = auto()
  127.  
  128. def readFromFile(file):
  129. result = []
  130. with open(file, "r") as file:
  131. text = file.readline()
  132. while text:
  133. text.replace("\n", "")
  134. result.append(text)
  135. text = file.readline()
  136. return result
  137. def clamp(var, minimum, maximum):
  138. if var > maximum:
  139. return maximum
  140. elif var < minimum:
  141. return minimum
  142. else:
  143. return var
  144.  
  145. gameMode = "Menu"
  146.  
  147. menuButtons = []
  148.  
  149. menuButtons.append(Button(windowWidth / 2 - 50, windowHeight / 2 - 37.5, 100, 75, green, "Start", black, 25, "monospace", startGame))
  150.  
  151. playerBullets = []
  152. bulletImage = pygame.image.load("bullet.png")
  153.  
  154. playerHealthMax = int(readFromFile("playerStats.txt")[0])
  155. basicPlayerImage = pygame.image.load("playerBasic.png")
  156. player = Player(basicPlayerImage, windowWidth / 2, windowHeight - 100, 0, 0, playerHealthMax)
  157.  
  158. while not gameExit:
  159. if gameMode is "Menu":
  160. gameDisplay.fill(black)
  161. for event in pygame.event.get():
  162. if event.type is pygame.QUIT:
  163. gameExit = True
  164. if event.type is pygame.MOUSEBUTTONDOWN:
  165. mouseX, mouseY = pygame.mouse.get_pos()
  166. for button in menuButtons:
  167. if checkOverRect(mouseX, mouseY, button.x, button.y, button.width, button.height):
  168. if not button.big:
  169. button.act()
  170. button.big = True
  171. button.oldW = button.width
  172. button.oldH = button.height
  173. button.width *= 1.1
  174. button.height *= 1.1
  175. button.x -= (button.width - button.oldW) / 2
  176. button.y -= (button.height - button.oldH) / 2
  177. if event.type is pygame.MOUSEBUTTONUP:
  178. for button in menuButtons:
  179. if button.big:
  180. button.big = False
  181. button.x += (button.width - button.oldW) / 2
  182. button.y += (button.height - button.oldH) / 2
  183. button.width /= 1.1
  184. button.height /= 1.1
  185. for button in menuButtons:
  186. button.draw()
  187. elif gameMode is "Game":
  188. gameTime = time.time()
  189. gameDisplay.fill(black)
  190. for event in pygame.event.get():
  191. if event.type is pygame.QUIT:
  192. gameExit = True
  193. if event.type is pygame.KEYDOWN:
  194. if not paused:
  195. if event.key == pygame.K_UP or event.key == pygame.K_w:
  196. player.moveDir[0] = True
  197. if event.key == pygame.K_DOWN or event.key == pygame.K_s:
  198. player.moveDir[1] = True
  199. if event.key == pygame.K_RIGHT or event.key == pygame.K_d:
  200. player.moveDir[2] = True
  201. if event.key == pygame.K_LEFT or event.key == pygame.K_a:
  202. player.moveDir[3] = True
  203. if event.key == pygame.K_SPACE:
  204. playerBullets.append(Bullet(bulletImage, player.x, player.y, player.xSpeed, player.ySpeed - 5, 5))
  205. if event.key == pygame.K_p:
  206. if paused is True:
  207. paused = False
  208. else:
  209. paused = True
  210. if event.type is pygame.KEYUP:
  211. if not paused:
  212. if event.key == pygame.K_UP or event.key == pygame.K_w:
  213. player.moveDir[0] = False
  214. if event.key == pygame.K_DOWN or event.key == pygame.K_s:
  215. player.moveDir[1] = False
  216. if event.key == pygame.K_RIGHT or event.key == pygame.K_d:
  217. player.moveDir[2] = False
  218. if event.key == pygame.K_LEFT or event.key == pygame.K_a:
  219. player.moveDir[3] = False
  220. if not paused:
  221. for i, bullet in enumerate(playerBullets):
  222. bullet.draw()
  223. bullet.move()
  224. if bullet.x < 0 or bullet.x > windowWidth or bullet.y < 0 or bullet.y > windowHeight:
  225. del(playerBullets[i])
  226. player.draw()
  227. player.move()
  228. pygame.draw.rect(gameDisplay, gray, [10, 10, 100, 25], 5) #Drawing the health bar
  229. pygame.draw.rect(gameDisplay, red, [10, 10, player.health / playerHealthMax * 100, 25])
  230. if paused:
  231. for bullet in playerBullets:
  232. bullet.draw()
  233. player.draw()
  234. msgScreen("PAUSED", "monospace", 25, white, windowWidth / 2, windowHeight / 2, True, True, True)
  235. pygame.display.update()
  236. clock.tick(60)
  237.  
  238. pygame.quit()
  239. quit()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement