~jtietema/subhunt/trunk

« back to all changes in this revision

Viewing changes to world.py

  • Committer: Jeroen Tietema
  • Date: 2009-03-22 11:04:39 UTC
  • Revision ID: jeroen@tietema.net-20090322110439-3vijy18dvwnq5roo
first working version with Rabbyt

TODO:
- update license texts
- update level info to new OpenGL coordinates

Show diffs side-by-side

added added

removed removed

Lines of Context:
17
17
'''
18
18
 
19
19
import pygame
 
20
import rabbyt
 
21
 
20
22
from submarine import *
21
23
 
22
24
class World(object):
23
25
    # TODO refactor this constructor, images and sounds should be wrapped in a objects
24
 
    def __init__(self, screen, hunter, submarineImg, mineImg, level, subExplosion, hunterExplosion):
 
26
    def __init__(self, screen, hunter, level, subExplosion, hunterExplosion):
25
27
        self.screen = screen
26
28
        self.level = level
27
29
        self.subExplosion = subExplosion
28
30
        self.hunterExplosion = hunterExplosion
 
31
        self.sea = rabbyt.sprites.Sprite('img/sea.png')
 
32
        self.sea.y = -50
29
33
        self.subs = []
30
34
        for configs in level.subs:
31
35
            sub = Submarine(configs)
32
36
            sub.setWorld(self)
33
 
            sub.image = submarineImg
34
 
            sub.mineImg = mineImg
35
37
            self.subs.append(sub)
36
38
        self.hunter = hunter
37
39
        self.bombs = []
38
40
        self.mines = []
39
41
    
40
42
    def render(self, surface):
41
 
        pygame.draw.rect(surface, (0,0,255), (0,100, 800, 600))
42
 
        pygame.draw.rect(surface, (255,255,255), (0,0, 800, 100))
 
43
        rabbyt.clear((1,1,1))
 
44
        self.sea.render()
43
45
        
44
46
        for sub in self.subs:
45
 
            sub.render(surface)
 
47
            sub.render()
46
48
        
47
49
        for bomb in self.bombs:
48
 
            bomb.render(surface)
 
50
            bomb.render()
49
51
        
50
52
        for mine in self.mines:
51
 
            mine.render(surface)
 
53
            mine.render()
52
54
        
53
 
        self.hunter.render(surface)
 
55
        self.hunter.render()
54
56
    
55
57
    def update(self, msecs):
56
58
        # update submarines
61
63
        for bomb in self.bombs:
62
64
            bomb.update(msecs)
63
65
            # remove bombs that are offscreen
64
 
            if bomb.y > 600:
 
66
            if bomb.y < -300:
65
67
                self.bombs.remove(bomb)
66
68
        
67
69
        # update mines
68
70
        for mine in self.mines:
69
71
            mine.update(msecs)
70
 
            if mine.y < 105:
 
72
            if mine.y > 208:
71
73
                if abs(mine.x - self.hunter.x) < 30:
72
74
                    self.hunter.destroyed = True
73
75
                    self.hunterExplosion.play()