Пример #1
0
class Game:
    def __init__(self):
        init()
        self.n = 0
        self.balls = []
        self.player = PLAYER()
        self.target = TARGET()
        self.target.new()
        display.set_caption('Ball Game')
        self.clock = time.Clock()
        self.Font = font.SysFont("arial", 40)

    def put_message(self):
        message = "Balls : %d" % (self.n)
        text = self.Font.render(message, True, (0, 0, 255))
        screen.blit(text, (100, int(.9 * screen.get_height())))
        display.update(
            [[0, int(screen.get_height() * .9)],
             [int(screen.get_width() / 2),
              int(screen.get_height() * .1)]])

    def check(self):
        if (abs(self.target.x - self.player.x) <
                self.target.width / 2 + self.player.width / 2) and (
                    abs(self.target.y - self.player.y) <
                    self.target.width / 2 + self.player.height / 2):
            self.balls.append(BALL())
            self.n += 1
            self.target.play_sound()
            self.target.new()
            self.put_message()
            self.draw()
        for ball in self.balls:
            if (self.player.x - self.player.width / 2 < ball.x <
                    self.player.x + self.player.width / 2) and (
                        self.player.y - self.player.height / 2 < ball.y <
                        self.player.y + self.player.height / 2):
                self.player.play_sound()
                self.stop = True

    def update(self):
        self.player.move()
        for ball in self.balls:
            ball.bounce()
            ball.move()

    def draw(self):
        screen.fill(color_black)
        draw.rect(
            screen, color_white,
            [[0, 0], [int(screen.get_width()),
                      int(screen.get_height() * .9)]])
        self.target.draw()
        self.player.draw()
        for ball in self.balls:
            ball.draw()
        display.update(
            [[0, 0], [int(screen.get_width()),
                      int(screen.get_height() * .9)]])

    def reset(self):
        self.n = 0
        self.balls = []
        self.player = PLAYER()

    def handle_events(self):
        keys = key.get_pressed()
        if keys[K_q] or keys[K_ESCAPE]:
            self.quit = True
        if keys[K_SPACE] and self.stop:
            self.reset()
            self.stop = False
        for evt in event.get():
            if evt.type == QUIT:
                self.quit = True
            if evt.type == MOUSEBUTTONDOWN:
                for ball in self.balls:
                    ball.reverse()

    def run(self):
        self.quit = False
        self.stop = False
        self.put_message()
        while not self.quit:

            self.handle_events()

            if not self.stop:
                self.update()
                self.draw()
                self.check()
            self.clock.tick(100)
Пример #2
0
class Game:
    def __init__(self):
        init()
        self.n = 0
        self.balls = []
        self.player = PLAYER()
        self.target = TARGET()
        self.target.new()
        display.set_caption('Ball Game')
        self.clock = time.Clock()
        self.Font = font.SysFont("arial", 40);
    
    def put_message(self):
        message = "Balls : %d"%(self.n)
        text = self.Font.render(message, True, (0, 0, 255))    
        screen.blit(text, (100,int(.9*screen.get_height())))
        display.update([[0,int(screen.get_height()*.9)],[int(screen.get_width()/2),int(screen.get_height()*.1)]])
        
    def check(self):
        if (abs(self.target.x-self.player.x) < self.target.width/2+self.player.width/2) and (abs(self.target.y-self.player.y) < self.target.width/2+self.player.height/2):
            self.balls.append(BALL())
            self.n+=1
            self.target.play_sound()
            self.target.new()
            self.put_message()
            self.draw()
        for ball in self.balls:
            if (self.player.x-self.player.width/2 < ball.x < self.player.x+self.player.width/2) and (self.player.y-self.player.height/2 < ball.y < self.player.y+self.player.height/2):
                self.player.play_sound()
                self.stop = True      
                
    def update(self):
        self.player.move()
        for ball in self.balls:
            ball.bounce()
            ball.move() 
            
    def draw(self):
        screen.fill(color_black)
        draw.rect(screen, color_white, [[0,0],[int(screen.get_width()),int(screen.get_height()*.9)]])
        self.target.draw()
        self.player.draw()
        for ball in self.balls:
            ball.draw()
        display.update([[0,0],[int(screen.get_width()),int(screen.get_height()*.9)]])
        
    
    def reset(self):
        self.n = 0
        self.balls = []
        self.player = PLAYER()
    
    def handle_events(self):
        keys = key.get_pressed()
        if keys[K_q] or keys[K_ESCAPE]:
            self.quit = True
        if keys[K_SPACE] and self.stop:
            self.reset()
            self.stop = False
        for evt in event.get():
            if evt.type == QUIT:
                self.quit = True
            if evt.type == MOUSEBUTTONDOWN:
                for ball in self.balls:
                    ball.reverse()
        
    def run(self):
        self.quit = False
        self.stop = False
        self.put_message()
        while not self.quit:
            
            self.handle_events()
            
            if not self.stop:
                self.update()
                self.draw()
                self.check()
            self.clock.tick(100)