Advertisement
bluesplay106

Ice Adventure - game.py

Dec 6th, 2011
44
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.33 KB | None | 0 0
  1. mport pygame,os,sys
  2. import pygame.mixer
  3. import block
  4. import character, setting, level
  5.  
  6. class Game(object):
  7. def __init__(self, w, h, b):
  8. self.screen = pygame.display.set_mode((w,h),0,b)
  9. pygame.display.set_caption("Ice Adventure")
  10.  
  11. #initialize bg, character
  12. self.setting = setting.Setting("ice.jpg")
  13. self.character = character.Character((240,360),self.setting)
  14.  
  15. #block
  16. self.block = pygame.image.load(os.path.join("images", "Block.jpg"))
  17. self.block_rect = self.block.get_rect()
  18. #start
  19. self.start = pygame.image.load(os.path.join("images", "starting_point.png"))
  20. #finish
  21. self.finish = pygame.image.load(os.path.join("images", "ending_point.png"))
  22. self.finish_rect = self.finish.get_rect()
  23.  
  24. self.width = w
  25. self.height = h
  26.  
  27. #levels
  28. self.level = level.Level()
  29. self.levels = {
  30. 1 : self.level.level_one(),
  31. 2 : self.level.level_two(),
  32. 3 : self.level.level_three(),
  33. 4 : self.level.level_four(),
  34. 5 : self.level.level_five()
  35. }
  36.  
  37. self.clock = pygame.time.Clock()
  38. def startScreen(self,text,font, surface, x,y):
  39. textobj = font.render(text, 1,(255,255,255))
  40. textrect = textobj.get_rect()
  41. textrect.center = (x,y)
  42. surface.blit(textobj, textrect)
  43.  
  44. def redrawAll(self):
  45. self.screen.blit(self.setting.image,(0,0))
  46. self.screen.blit(self.character.image, self.character.rect,
  47. self.character.area)
  48.  
  49. def currentLevel(self):
  50. if not self.character.rect.colliderect(self.finish_rect):
  51. for pos in self.levels[self.character.level_i][0]:
  52. self.screen.blit(self.block,pos)
  53. self.screen.blit(self.start,self.levels[self.character.level_i][1])
  54. if self.character.level_i == 3 or self.character.level_i == 4 or self.character.level_i == 5:
  55. rotate = pygame.transform.rotate(self.finish,90)
  56. self.screen.blit(rotate,
  57. self.levels[self.character.level_i][2])
  58. else:
  59. self.screen.blit(self.finish,
  60. self.levels[self.character.level_i][2])
  61. else:
  62. self.character.level_i += 1
  63.  
  64. def run(self):
  65. pygame.font.init()
  66. font = pygame.font.SysFont(None, 32)
  67. #start screen
  68. self.startScreen("Ice Adventure",font,self.screen,
  69. (self.width/2), (self.height/2)-50)
  70. self.startScreen("Press 's' to start.",font,self.screen,
  71. (self.width/2),(self.height/2)+50)
  72. pygame.display.update()
  73.  
  74. starting = True
  75. while starting:
  76. for event in pygame.event.get():
  77. if event.type == pygame.QUIT:
  78. pygame.quit()
  79. sys.exit()
  80. if event.type == pygame.KEYDOWN:
  81. if event.key == pygame.K_s:
  82. starting = False
  83.  
  84. #plays music
  85. pygame.mixer.init(frequency=22050,size=-16,channels=2,buffer=4096)
  86. sound = os.path.join("music", "hit_sound.wav")
  87. hitSound = pygame.mixer.Sound(sound)
  88. music = os.path.join("music", "main_music.mid")
  89. pygame.mixer.music.load(music)
  90. pygame.mixer.music.play(-1, 0.0)
  91. isPlaying = True
  92.  
  93. running = True
  94. while running:
  95. for event in pygame.event.get():
  96. if event.type == pygame.QUIT:
  97. running = False
  98. if event.type == pygame.KEYDOWN:
  99. if event.key == pygame.K_q:
  100. running = False
  101.  
  102. self.character.handle_event(event)
  103. self.character.handle_animation()
  104. self.redrawAll()
  105. self.currentLevel()
  106. #play sound when char hits block
  107.  
  108. if self.character.rect.colliderect(self.block_rect):
  109. self.character.skate_speed = 0
  110. if isPlaying:
  111. hitSound.play()
  112.  
  113. pygame.display.flip()
  114.  
  115. self.clock.tick(15)
  116.  
  117. myGame = Game(480,360,32)
  118. myGame.run()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement