Beispiel #1
0
    def generate(self, space_game, ship):
        # def create_enemy_star(self):
        self.enemies = []

        self.x = randint(100, CANVAS_WIDTH - 100)
        self.y = randint(100, CANVAS_HEIGHT - 100)

        while vector_len(self.x - self.ship.x, self.y - self.ship.y) < 200:
            self.x = randint(100, CANVAS_WIDTH - 100)
            self.y = randint(100, CANVAS_HEIGHT - 100)

        for d in range(18):
            self.dx, self.dy = direction_to_dxdy(d * 20)
            self.enemy = Enemy(self, self.x, self.y,
                               self.dx * ENEMY_BASE_SPEED,
                               self.dy * ENEMY_BASE_SPEED)
            self.enemies.append(self.enemy)

        return self.enemies

        # def create_enemy_from_edges(self):
        self.x, self.y = random_edge_position()
        self.vx, self.vy = normalize_vector(self.ship.x - self.x,
                                            self.ship.y - self.y)

        self.vx *= ENEMY_BASE_SPEED
        self.vy *= ENEMY_BASE_SPEED

        self.enemy = Enemy(self, self.x, self.y, self.vx, self.vy)
        return [self.enemy]
Beispiel #2
0
    def generate(self, space_game, ship):
        x, y = random_edge_position()
        vx, vy = normalize_vector(ship.x - x, ship.y - y)

        vx *= ENEMY_BASE_SPEED
        vy *= ENEMY_BASE_SPEED
        enemy = Enemy(space_game, x, y, vx, vy)
        return [enemy]
Beispiel #3
0
    def create_enemy_from_edges(self):
        x, y = random_edge_position()
        vx, vy = normalize_vector(self.ship.x - x, self.ship.y - y)

        vx *= ENEMY_BASE_SPEED
        vy *= ENEMY_BASE_SPEED

        enemy = Enemy(self, x, y, vx, vy)
        return [enemy]
Beispiel #4
0
    def generate(self, space_game,
                 ship):  # TODO: extracted from method create_enemy_from_edge
        x, y = random_edge_position()
        vx, vy = normalize_vector(ship.x - x, ship.y - y)

        vx *= ENEMY_BASE_SPEED
        vy *= ENEMY_BASE_SPEED

        enemy = Enemy(space_game, x, y, vx, vy)
        return [enemy]
Beispiel #5
0
    def generate(self, space_game, ship):
        self.x, self.y = random_edge_position()
        self.vx, self.vy = normalize_vector(self.ship.x - self.x,
                                            self.ship.y - self.y)

        self.vx *= ENEMY_BASE_SPEED
        self.vy *= ENEMY_BASE_SPEED

        self.enemy = Enemy(self, self.x, self.y, self.vx, self.vy)
        return [self.enemy]
Beispiel #6
0
 def __init__(self):
     super(SquashGame, self).__init__('Game', SquashGame.BLACK)
     self.ball = Ball(radius=10,
                      color=SquashGame.GREEN,
                      pos=(self.window_size[0]/2,
                           self.window_size[1]/2),
                      speed=(1.5,5))
     self.player = Player(pos=(250,460),
                          color=SquashGame.BLUE)
     self.walls = [Walls(pos=(50,225),color=SquashGame.PINK)]
     self.enemy = Enemy(pos=(250,0),
                         color=SquashGame.RED)
     self.score = 0
     self.score1 = 0
Beispiel #7
0
    def generate(self, space_game, ship):
        enemies = []
        x = randint(100, CANVAS_WIDTH - 100)
        y = randint(100, CANVAS_HEIGHT - 100)

        while vector_len(x - ship.x, y - ship.y) < 200:
            x = randint(100, CANVAS_WIDTH - 100)
            y = randint(100, CANVAS_HEIGHT - 100)

        for d in range(18):
            dx, dy = direction_to_dxdy(d * 20)
            enemy = Enemy(space_game, x, y, dx * ENEMY_BASE_SPEED, dy * ENEMY_BASE_SPEED)
            enemies.append(enemy)
        return enemies
Beispiel #8
0
    def create_enemy_star(self):
        enemies = []

        x = randint(100, CANVAS_WIDTH - 100)
        y = randint(100, CANVAS_HEIGHT - 100)

        while vector_len(x - self.ship.x, y - self.ship.y) < 200:
            x = randint(100, CANVAS_WIDTH - 100)
            y = randint(100, CANVAS_HEIGHT - 100)

        for d in range(18):
            dx, dy = direction_to_dxdy(d * 20)
            enemy = Enemy(self, x, y, dx * ENEMY_BASE_SPEED, dy * ENEMY_BASE_SPEED)
            enemies.append(enemy)

        return enemies
Beispiel #9
0
    def generate(self, space_game, ship):
        self.enemies = []

        self.x = randint(100, CANVAS_WIDTH - 100)
        self.y = randint(100, CANVAS_HEIGHT - 100)

        while vector_len(self.x - self.ship.x, self.y - self.ship.y) < 200:
            self.x = randint(100, CANVAS_WIDTH - 100)
            self.y = randint(100, CANVAS_HEIGHT - 100)

        for d in range(18):
            self.dx, self.dy = direction_to_dxdy(d * 20)
            self.enemy = Enemy(self, self.x, self.y,
                               self.dx * ENEMY_BASE_SPEED,
                               self.dy * ENEMY_BASE_SPEED)
            self.enemies.append(self.enemy)

        return self.enemies
Beispiel #10
0
    def generate(self, space_game, ship):
        ## ##
        # TODO: extracted from method create_enemy_star
        self.ship = ship
        enemies = []

        x = randint(100, CANVAS_WIDTH - 100)
        y = randint(100, CANVAS_HEIGHT - 100)

        while vector_len(x - self.ship.x, y - self.ship.y) < 200:
            x = randint(100, CANVAS_WIDTH - 100)
            y = randint(100, CANVAS_HEIGHT - 100)

        for d in range(18):
            dx, dy = direction_to_dxdy(d * 20)
            enemy = Enemy(self.ship, x, y, dx * ENEMY_BASE_SPEED, dy * ENEMY_BASE_SPEED)
            enemies.append(enemy)

        return enemies
Beispiel #11
0
class SquashGame(gamelib.SimpleGame):
    BLACK = pygame.Color('black')
    GREEN = pygame.Color('green')
    RED = pygame.Color('red')
    YELLOW = pygame.Color('yellow')
    WHITE = pygame.Color('white')
    BLUE = pygame.Color('blue')
    PINK = pygame.Color('pink')
    
    def __init__(self):
        super(SquashGame, self).__init__('Game', SquashGame.BLACK)
        self.ball = Ball(radius=10,
                         color=SquashGame.GREEN,
                         pos=(self.window_size[0]/2,
                              self.window_size[1]/2),
                         speed=(1.5,5))
        self.player = Player(pos=(250,460),
                             color=SquashGame.BLUE)
        self.walls = [Walls(pos=(50,225),color=SquashGame.PINK)]
        self.enemy = Enemy(pos=(250,0),
                            color=SquashGame.RED)
        self.score = 0
        self.score1 = 0


    def init(self):
        super(SquashGame, self).init()
        self.render_score()
        self.EtoP=False
        for num in range(5):
            newWall = Walls(pos=(100+(num*100),225),color=SquashGame.PINK)
            self.walls.append(newWall)

    def update(self):
            self.ball.move(1./self.fps, self.surface, self.player)
            self.EnemyToPlayer()
            self.PlayerMove()
            #self.player.move(self.ball)
            if self.EtoP==False:
                self.enemy.move(self.ball)
            else:
                    self.EnemyMove()

            for i in range(5):
                if self.walls[i].Hit(self.ball,pos=(100+(i*100),225)):
                    self.ball.bounce_walls(self.walls[i])

            if self.enemy.can_hit(self.ball):
                self.ball.bounce_enemy(self.enemy)

            if self.player.can_hit(self.ball):
                self.ball.bounce_player(self.player)

            if self.ball.score():
                self.score1+=1
                self.render_score()
                self.ball = Ball(radius=10,
                                color=SquashGame.YELLOW,
                                pos=(self.window_size[0]/2,
                                450),
                                speed=(1.5,-5))
            elif self.ball.score()==False:
                self.score+=1
                self.render_score()
                self.ball = Ball(radius=10,
                                color=SquashGame.WHITE,
                                pos=(self.window_size[0]/2,
                                50),
                                speed=(-1.5,5))

            
    def render_score(self):
        self.score_image = self.font.render("Score = %d" % self.score, 0, SquashGame.WHITE)
        self.score_image1 = self.font.render("Score = %d" % self.score1, 0, SquashGame.WHITE)


    def EnemyToPlayer(self):
        if self.is_key_pressed(K_SPACE):
            self.EtoP=True
        if self.is_key_pressed(K_5):   
            self.EtoP=False

    def PlayerMove(self):
        if self.is_key_pressed(K_LEFT):
                self.player.move_left()
        if self.is_key_pressed(K_RIGHT):
                self.player.move_right()

    def EnemyMove(self):
        if self.is_key_pressed(K_1):
                self.enemy.move_left()
        if self.is_key_pressed(K_2):
                self.enemy.move_right()

    def render(self, surface):
        self.init_render(surface)
        for num in range(5):
            self.walls[num].draw(surface,num)
        surface.blit(self.score_image, (10,10))
        surface.blit(self.score_image1, (10,460))

    def init_render(self,surface):
        self.ball.render(surface)
        self.player.render(surface)
        self.enemy.render(surface)
Beispiel #12
0
    def init_objects(self):
        self.steps = 0
        for enemy in self.enemies:
            self.enemies.remove(enemy)

        for food in self.foods:
            self.foods.remove(food)

        for i in range(self.nFoods):
            while True:
                flag = False
                size = int(self.width * Food.sizeF)
                x = random.uniform(
                    int(size / 2.0) + 1, self.width - int(size / 2.0) + 1)
                y = random.uniform(
                    int(size / 2.0) + 1, self.width - int(size / 2.0) + 1)
                for n in self.foods:
                    if abs(x - n.posX) < size + 1 and abs(y -
                                                          n.posY) < size + 1:
                        flag = True
                if not flag:
                    break

            self.foods.extend([Food(x, y, self.width)])

        for j in range(self.nEnemies):
            while True:
                flag = False
                size = int(self.width * Enemy.sizeF)
                x = random.uniform(
                    int(size / 2.0) + 1, self.width - int(size / 2.0) + 1)
                y = random.uniform(
                    int(size / 2.0) + 1, self.width - int(size / 2.0) + 1)

                for n in self.enemies:
                    if abs(x - n.posX) < size + 1 and abs(y -
                                                          n.posY) < size + 1:
                        flag = True
                for n in self.foods:
                    if abs(x - n.posX) < size + 1 and abs(y -
                                                          n.posY) < size + 1:
                        flag = True
                if not flag:
                    break

            self.enemies.extend([Enemy(x, y, self.width)])

        while True:
            flag = False
            # size = random.randint(0, 0.1)
            size = int(self.width * Player.sizeF)
            x = random.uniform(
                int(size / 2.0) + 1, self.width - int(size / 2.0) + 1)
            y = random.uniform(
                int(size / 2.0) + 1, self.width - int(size / 2.0) + 1)
            for n in self.foods:
                if abs(x - n.posX) < size + 1 and abs(y - n.posY) < size + 1:
                    flag = True
            for n in self.enemies:
                if abs(x - n.posX) < size + 1 and abs(y - n.posY) < size + 1:
                    flag = True
            if not flag:
                break

        self.player = Player(x, y, self.width)