Пример #1
0
 def testMove(self):
     map = Game(1, 13)
     bullet = Bullet(0, 0, map, 2, 2, "right")
     x, y = bullet.currPos
     self.assertEqual([x, y], [2, 2])
     bullet.move()
     x, y = bullet.currPos
     self.assertEqual([x, y], [3, 2])
Пример #2
0
    def test_bullet_collision_with_brick(self):
        terrain = BrickTerrain(150, 150)
        enemy_bullet = Bullet(150, 141, 5, 500, 1, Direction.DOWN)

        self.assertFalse(terrain.contains(enemy_bullet))

        enemy_bullet.move();
        self.assertTrue(terrain.contains(enemy_bullet))
Пример #3
0
    def test_player_tank_collision_with_enemy_bullet(self):
        # x, y, speed, owner_id, attack, direction
        enemy_bullet = Bullet(86, 100, 5, 500, 1, Direction.RIGHT)
        self.assertFalse(self.player.contains(enemy_bullet))

        enemy_bullet.move()
        self.assertFalse(self.player.contains(enemy_bullet))

        enemy_bullet.move()
        self.assertTrue(self.player.contains(enemy_bullet))
Пример #4
0
class Player(object):

	def __init__(self, surface):
		self.gun_type = 1
		self.player = pygame.image.load("res/player gunner" + str(self.gun_type) + ".png")
		self.bullet = Bullet(surface, self.gun_type)
		self.surface = surface
		self.player_posx = 100
		self.player_posy = 400
		self.check_change_gun = 1
		self.check = False
		self.fire_bullet = False
		self.bullet_posx = 480
		

	def render(self):
		self.surface.blit(self.player,(self.player_posx, 720 - self.player_posy))
		if self.check == True:
			self.player = pygame.image.load("res/player gunner" + str(self.gun_type) + ".png")
		

	def change_weapon(self):
		if pygame.key.get_pressed()[K_z]:
			self.gun_type = 1
		if pygame.key.get_pressed()[K_x]:
			self.gun_type = 2

	def update(self):
		self.change_weapon()
		if self.check_change_gun != self.gun_type:
			self.check = True
			self.check_change_gun = self.gun_type
		else:
			self.check = False
		self.fire()
		self.bullet_posx = self.bullet.bullet_posx
		

	def fire(self):
		if pygame.key.get_pressed()[K_SPACE]:
			self.fire_bullet = True

		if self.fire_bullet == True:
			self.bullet.render()
			self.bullet.move()
		else:
			self.bullet.bullet_posx = 480

		if self.bullet.check_bullet() == True:
			self.fire_bullet = False
Пример #5
0
class Game:
    def __init__(self, x, y, size):
        # Initialize global variables
        # Set up the screen
        self.wn = turtle.Screen()
        self.wn.bgcolor("black")
        self.wn.title("Space Invaders with Classes :D")
        # Draw boarder
        self.border_pen = turtle.Turtle()  # Initialize object
        self.border_pen.speed(0)
        self.border_pen.color("white")
        self.border_pen.penup()
        self.border_pen.setposition(x, y)  # Bottom left
        self.border_pen.pensize(3)
        self.border_pen.pendown()
        for side in range(4):
            self.border_pen.fd(size)
            self.border_pen.lt(90)  # Left turn
        self.border_pen.hideturtle()

    # Initialize game
    def init(self):
        self.player = Player(x_start, y_start, player_color,
                             player_shape)  # Create the player
        self.bullet = Bullet()
        self.set_movement()

    # Create keyboard bindings
    def set_movement(self):
        turtle.listen()
        turtle.onkey(
            self.player.move_left,
            "Left")  # When pressing left arrow, uses move_left function
        turtle.onkey(
            self.player.move_right,
            "Right")  # When pressing left arrow, uses move_left function
        turtle.onkey(self.bullet.fire, "space")

    # Main game loop
    def play(self):
        self.init()
        while True:
            self.bullet.move()
Пример #6
0
class Game:
    running = True
    screen = None
    background = None
    player = None
    bullet = None
    enemies = None
    explosion = None
    caption = None
    game_text = None
    score = None
    stage = None

    def start(self):
        pygame.init()

        self.stage = Stage(self, 1)
        self.screen = pygame.display.set_mode((800, 600))

        self.background = Background(self)
        self.background.load()

        self.player = Player(self)
        self.player.load()

        self.bullet = Bullet(self)
        self.bullet.load()

        self.enemies = Enemies(self)
        self.enemies.load()

        self.game_text = GameText(self)
        self.game_text.load()

        self.explosion = Explosion(self)
        self.explosion.load()

        self.caption = Caption(self)
        self.caption.load()

        self.score = Score(self)
        self.score.load()

        while self.running:
            self.screen.fill((0, 0, 0))
            self.background.show()
            self.handle_event()

    def handle_event(self):
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                self.running = False

            if event.type == pygame.KEYDOWN:
                if event.key == pygame.K_LEFT:
                    self.player.move_left()
                if event.key == pygame.K_RIGHT:
                    self.player.move_right()
                if event.key == pygame.K_SPACE:
                    self.bullet.fire(self.player.x, self.player.y)

            if event.type == pygame.KEYUP:
                if event.key == pygame.K_LEFT or event.key == pygame.K_RIGHT:
                    self.player.stop_move()

        self.player.move()
        self.bullet.move()
        self.enemies.move()
        self.score.show()
        self.win()

        pygame.display.update()

    def win(self):
        if self.enemies.finished():
            self.game_text.show_win()

    def loose(self):
        self.game_text.show_loose()

    def pause(self):
        pass

    def show_help(self):
        pass
def main():

    # Jalankan pygame
    pygame.init()

    # Instance Object
    bullet = Bullet('./src/bullet.png', './src/laser.wav', (0, 480))
    game_over = GameOver('freesansbold.ttf', 64, (200, 250))
    music = Music('./src/background.wav')
    player = Player('./src/player.png', (370, 480))
    score = Score('freesansbold.ttf', 32, (10, 10))
    screen = Screen('Space Invaders', './src/background.png',
                    './src/ufo.png', (800, 600))

    # Buat Layar
    display = screen.make_window()
    screen.make_caption_icon()

    # Jalankan music
    music.play_bg_music()

    # Buat Musuh
    total_enemy = 6
    enemies = []
    for i in range(total_enemy):
        enemies.append(Enemy('./src/enemy.png', './src/explosion.wav'))
        enemies[i].set_location((0, 735), (50, 150))

    # Jalankan Game
    running = True
    while running:
        screen.show_screen(display)

        # Cek Exit Game
        for event in pygame.event.get():
            running = player.is_exit_game(event)

        # Pergerakan Player
        keys = pygame.key.get_pressed()
        player.move(keys)
        player.shoot(keys, bullet, display)

        # Musuh Menang
        for i in range(total_enemy):
            if enemies[i].is_enemy_win():
                for j in range(total_enemy):
                    enemies[j].gone()
                game_over.show(display)
                break
            enemies[i].move()

            # Musuh Mati
            collision = bullet.is_collision(enemies[i])
            enemies[i].death(bullet, score, collision)

            # Summon Musuh
            enemies[i].draw(display)

        # Summon Object
        bullet.move(display)
        player.draw(display)
        score.show(display)
        pygame.display.update()