Ejemplo n.º 1
0
 def __init__(self, *args, **kwargs):
     super().__init__(*args, **kwargs)
     self.set_location(400, 100)
     self.frame_rate = 1/60.0
     self.player = GameObject( posx = 200, posy = 200 ,image = "Mario_Super.png")
     self.enemie1 = Enemies(posx=500, posy=200, image="goomba_1.png")
     self.enemie2 = Enemies(posx=300, posy=200, image="goomba_1.png")
     self.background = BackgroundObject(posx = 0, posy = 0, image ='background_0.jpg')
     self.brick = BackgroundObject(posx=0, posy=0, image='brick.png')
Ejemplo n.º 2
0
    def update(self, dt):
        self.player.update(dt)
        self.background.update(dt)
        eneme_out_of_window = []
        for enemieObj in ememies_list:

            if (enemieObj.getX() < 10 or enemieObj.getX() > 500):
                print(enemieObj.getX())
                eneme_out_of_window.append(enemieObj)

            enemieObj.update(dt)
        for removeEneme in eneme_out_of_window:
            ememies_list.remove(removeEneme)
            # ememies_list.remove(enemieObj)
            start = 0
            end = 0
            if (self.toggle == True):
                start = 20
                end = 40
                self.toggle = False
            else:
                start = -40
                end = -20
                self.toggle = True

            enemie = Enemies(posx=random.randint(0, 300), posy=185, velx=random.randint(start, end), vely=0,
                             image="goomba_1.png")
            ememies_list.append(enemie)
Ejemplo n.º 3
0
def run_game():
    #функция подключает pygame, настройки, создает экран, инициализирует все модули и запускает основной цикл игры
    pygame.init()
    #определяет настройки
    nlo_settings = Settings()
    #определяет экран
    screen = pygame.display.set_mode(
        (nlo_settings.screen_width, nlo_settings.screen_height))
    #создает название
    pygame.display.set_caption("N L O")
    #создание корабля
    korabl = Korabl(nlo_settings, screen)
    #создание щита
    sfera = Sfera(nlo_settings, screen, korabl)
    #изображение
    fon = pygame.image.load('images/fon.png')
    #группа для хранения пуль
    pyli = Group()
    #группа для хранения врагов
    enemies = Enemies(nlo_settings, screen)
    #группа для хранения пуль врагов
    bullets = Group()
    #группа для хранения жизней корабля
    all_lifes = Group()
    #создание трех жизней
    gf.all_lifes(screen, all_lifes, nlo_settings)
    #создание надписи приветствия
    welcome = Game_over(screen, 'WELCOME')
    #создание кнопки Play
    button_play = Button(nlo_settings, screen, 'Play')
    #создание надписи при проигрыше
    game_over = Game_over(screen, 'GAME OVER')
    #создание надписи при выигрыше
    you_win = Game_over(screen, 'CONGRATULATIONS!')
    #создание кнопки повтора игры
    try_again = Button(nlo_settings, screen, 'Try again')

    #основной цикл игры
    while True:
        #выводит фоновое изображение на экран
        screen.blit(fon, (0, 0))
        #проверяет все события (нажатия клавиш, флаги и т.д.)
        gf.check_events(korabl, nlo_settings, screen, pyli, button_play,
                        try_again, all_lifes)
        #условия для запуска игровых действий
        if nlo_settings.game_active:
            if nlo_settings.korabl_view:
                #обновления всех функций в зависимости от событий
                sfera.update()
                korabl.update()
                gf.pyli_update(enemies, pyli, sfera, nlo_settings, bullets)
                gf.life_control(screen, all_lifes, nlo_settings, bullets,
                                korabl)
                gf.bullets_update(bullets, enemies, nlo_settings, screen,
                                  korabl, sfera)
                gf.enemies_update(enemies, nlo_settings, screen)
        #обновление экрана
        gf.update_screen(nlo_settings, screen, korabl, sfera, pyli, enemies,
                         bullets, all_lifes, button_play, game_over, try_again,
                         welcome, you_win)
Ejemplo n.º 4
0
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.set_location(400, 100)
        self.frame_rate = 1/60.0
        self.player = GameObject( posx = 200, posy = 185 ,image = "Mario_Super.png")
        self.background = BackgroundObject(posx = 0, posy = 0, image = "background_3.jpg")
        #self.brick1 = BackgroundObject(posx=0, posy=0, image="brick1.png")
        #self.brick2 = BackgroundObject(posx=862, posy=0, image="brick1.png")
        #self.water = BackgroundObject(posx=625, posy=0, image="water.png")

        self.enemie1 = Enemies(posx=random.randint(0, 300), posy=185, velx=random.randint(30, 50), vely=0,
                               image="goomba_1.png")
        self.enemie2 = Enemies(posx=random.randint(0, 300), posy=185, velx=random.randint(-50, -30), vely=0,
                               image="goomba_1.png")
        ememies_list.append(self.enemie1)
        ememies_list.append(self.enemie2)

        self.toggle = False
Ejemplo n.º 5
0
    def __init__(self):
        self.map = Map()
        self.towers = Towers(self.map)
        self.enemies = Enemies(self.map, self.towers)
        self.menu = Menu(self.map, self.towers, self.enemies, screen_width,
                         screen_height)

        self.dragging_tower = False
        self.round = 1
        self.start_round()
Ejemplo n.º 6
0
def main():
    #SCREEN_SIZEの画面を作成
    screen = pygame.display.set_mode(global_data.SCREEN_SIZE)
    #タイトルバーの文字列をセット
    pygame.display.set_caption(u"シューティングゲーム")
    #FPSの取得
    clock = pygame.time.Clock()

    myship = MyShip(50,50)

    enemies = Enemies()
    
    while True:
        #FPSを60に設定
        clock.tick(60)

        #背景色の設定
        screen.fill((255,255,255))

        # ***いろんな処理*** #
        myship.move()
        enemies.move()

        enemies.reloadEnemy()

        myship.draw(pygame,screen)
        enemies.draw(pygame,screen)

        #画面の更新
        pygame.display.update()
        for event in pygame.event.get():
            if event.type == QUIT: pygame.quit(); sys.exit()
            elif event.type == KEYDOWN:
                if event.key == K_RIGHT: myship.direction["right"] = True
                elif event.key == K_LEFT: myship.direction["left"] = True
                if event.key == K_UP: myship.direction["up"] = True
                elif event.key == K_DOWN: myship.direction["down"] = True
            elif event.type == KEYUP:
                if event.key == K_RIGHT: myship.direction["right"] = False
                elif event.key == K_LEFT: myship.direction["left"] = False
                if event.key == K_UP: myship.direction["up"] = False
                elif event.key == K_DOWN: myship.direction["down"] = False
Ejemplo n.º 7
0
from turret import Turret
from barriers import Barrier
from scoreboard import Scoreboard

enemy = "sprites/New Piskel.gif"
ship = "sprites/ship.gif"

screen = Screen()
screen.bgcolor("black")
screen.title("Space Invaders")
screen.addshape(enemy)
screen.addshape(ship)
screen.setup(width=600, height=600)
screen.tracer(0)

enemies = Enemies()
turret = Turret()
barriers = Barrier()
scoreboard = Scoreboard()


def check_player_collisions():

    for enemy in enemies.enemy_list:
        if turret.bullet:
            if turret.bullet.distance(enemy) < 20:
                enemies.kill(enemy)
                turret.destroy()
                scoreboard.point()

    for brick in barriers.barrier_list:
Ejemplo n.º 8
0
from shot import Shot
from enemies import Enemies

WIDTH=800
HEIGHT=600
TITLE="Space shooter game"
ICON="spacecrafticon.png"

scroll_speed = 2

player = Player()

spacecraft = SpaceShip("spacecraft", (400,480))
spacecraft.set_speed(4)

enemies = Enemies((WIDTH,HEIGHT), "enemies.dat")

# List to track shots
shots = []
# shot last fired  timestamp - to ensure don't fire too many shots
shot_last_fired = 0
# time in seconds
time_between_shots = 0.5

scroll_position = 0

# spacecraft hit points
# positions relative to spacecraft centre which classes as a collide
spacecraft_hit_pos = [
    (0,-40), (10,-30), (-10,-30), (13,-15), (-13,-15), (25,-3), (-25,-3),
    (46,12), (-46,12), (25,24), (-25,24), (10,27), (-10,27), (0,27) ]
Ejemplo n.º 9
0
 def create_enemy_list(self, grid):
     enemies = Enemies(self.level, grid)
     self.enemy_list = enemies.enemy_list
Ejemplo n.º 10
0
def main_game(val):
    #	variables used in this function
    winings = 0
    ships_missed = 0
    bckg_y = 0
    while val:
        #main event loop

        for event in pygame.event.get():  #user did something
            if event.type == pygame.QUIT:  #if user clicked close
                done = True  # to exit this loop
            elif event.type == pygame.KEYDOWN:
                if event.key == K_ESCAPE:
                    sys.exit()
            elif event.type == pygame.MOUSEBUTTONDOWN:
                music_effect("blaster")
                new_bullet = Bullet(screen, the_player)
                bullets.add(new_bullet)

        #controling a spaceship via the mouse
        player_pos = pygame.mouse.get_pos()
        pygame.mouse.set_visible(False)  #to hide the mouse curser
        the_player.update_me(player_pos)

        #	screen.blit(background, [0,0]):
        #drawing and moving the background
        moving_background(bckg_y)
        bckg_y += 1
        # rel_y = bckg_y % background.get_rect().height
        # screen.blit(background, [0, rel_y - background.get_rect().height])
        # if rel_y > 0:
        # 	screen.blit(background2,(0, rel_y))
        # bckg_y += 1

        #screen.blit(player_ship, [x, y])
        the_player.draw_me()
        #screen.blit(enemy_ship, [100, 50])
        for enemy_ship in enemy_list:
            #		# update the bad guy (based on where the player is)
            enemy_ship.update_me(the_player)
            # draw the bad guy
            enemy_ship.draw_me()
            if enemy_ship.beyond_screen():
                ships_missed += 1
                enemy_list.remove(enemy_ship)
                print("ship missed")

        #bullet portion
        for bullet in bullets:
            # update teh bullet location
            bullet.update()
            # draw the bullet on the screen
            bullet.draw_bullet()

        bullet_hit = groupcollide(bullets, enemy_list, True,
                                  True)  # when bullet hits the enemy
        for bullet, enemy_ship in bullet_hit.items():
            print("explosion")
            music_effect("explosion")
            enemy_ship[0].explosions(bullet)
            winings += 1

        if len(
                enemy_list
        ) < 4:  #if number of ships on the screen gets less than 4 - generate another ship
            enemy_list.add((Enemies(screen, enemy_ship_selector())))
            enemy_list.add((Enemies(screen, enemy_ship_selector())))

        #ship_crash = groupcollide(player_group, enemy_list, True, True) #when enemy ship hits the player
        #print ship_crash

        text = font.render(
            "Hits: " + str(winings), True, text_color
        )  # these 2 lines display a text for wins in the right top side of screen
        screen.blit(text, [600, 50])

        text = font.render(
            "Ships missed: " + str(ships_missed), True, text_color
        )  # these 2 lines display a text for wins in the right top side of screen
        screen.blit(text, [100, 50])

        text = font.render(
            "Press ESC to exit at any time", True, text_color
        )  # these 2 lines display a text for wins in the right top side of screen
        screen.blit(text, [450, 750])

        if ships_missed >= 1:
            game_over()

        pygame.display.flip()  #update the screen  with what we draw
        clock.tick(80)  #number of frames per second

    pygame.quit()
Ejemplo n.º 11
0
enemyShip2 = "images/enemyShip2.png"
enemyShip3 = "images/enemyShip3.png"
enemyShip4 = "images/enemyShip4.png"
enemyShip5 = "images/enemyShip5.png"


def enemy_ship_selector():
    en_index = random.randint(0, 4)
    enemy_images_list = [
        enemyShip1, enemyShip2, enemyShip3, enemyShip4, enemyShip5
    ]
    enemy_ship_selector = enemy_images_list[en_index]
    return enemy_ship_selector


enemy_ship = Enemies(screen, enemy_ship_selector())
#call function to select enemy ships combination
enemy_list = Group(
)  #creates list of sprites which is managed by class 'Group'
for i in range(random.randint(3, 9)):
    # this represents an enemy
    enemy_list.add(enemy_ship)

new_bullet = Bullet(screen, the_player)
bullets = Group()

pygame.mixer.music.load("sounds/music.wav")  #load game music
pygame.mixer.music.play(-1)  #'-1' means play indefinetely

blaster = pygame.mixer.Sound(
    'sounds/blaster.wav')  #using Sound class does not interrupt main music
Ejemplo n.º 12
0
 def __init__(self, _states_manager):
     self.road = Road()
     self.player = Player()
     self.enemies = Enemies()
     self.ui = UI()
Ejemplo n.º 13
0
 def init_enemies(self):
     self.enemies = Enemies(self, self.signal, self.game_settings)
Ejemplo n.º 14
0
def main_game(val):
#	variables used in this function
	winings = 0
	ships_missed = 0
	bckg_y = 0	
	while val:
		#main event loop
		

		for event in pygame.event.get(): #user did something
			if event.type == pygame.QUIT: #if user clicked close
				done = True # to exit this loop
			elif event.type == pygame.KEYDOWN:
				if event.key == K_ESCAPE:
					# sys.exit()
					quit()
				if event.key == pygame.K_p:
					print "hitting button P"#just a test for now
					pause()
			elif event.type == pygame.MOUSEBUTTONDOWN:
				music_effect("blaster")
				new_bullet = Bullet(screen, the_player, bullet_selector(winings))
				bullets.add(new_bullet)
		
		#controling a spaceship via the mouse
		player_pos = pygame.mouse.get_pos()
		pygame.mouse.set_visible(False) #to hide the mouse curser
		the_player.update_me(player_pos)

		#drawing and moving the background
		moving_background(bckg_y)
		bckg_y += 1
		#screen.blit(player_ship, [x, y])
		the_player.draw_me()
		#screen.blit(enemy_ship, [100, 50])
		for enemy_ship in enemy_list:
			# update the bad guy (based on where the player is)
			enemy_ship.update_me(the_player)
			# draw the bad guy
			enemy_ship.draw_me()
			if enemy_ship.beyond_screen():
				ships_missed += 1
				enemy_list.remove(enemy_ship)
				print "ship missed"
				
		#bullet portion
		for bullet in bullets:
			# update teh bullet location
			bullet.update()
			# draw the bullet on the screen
			bullet.draw_bullet()
			#remove bullet if beyond the screen
			if bullet.beyond_screen():
				bullets.remove(bullet)
				print "bullet removed"


		#enemy collision with bullet
		bullet_hit = groupcollide(bullets, enemy_list, True, True) # when bullet hits the enemy
		for bullet, enemy_ship in bullet_hit.iteritems():
			print "explosion"
			music_effect("explosion")
			enemy_ship[0].explosions()
			winings += 1
			

		if len(enemy_list) < 4:											#if number of ships on the screen gets less than 4 - generate another ship
			enemy_list.add((Enemies(screen, enemy_ship_selector())))
			enemy_list.add((Enemies(screen, enemy_ship_selector())))
		
		player_crash = groupcollide(player_group, enemy_list, True, True) #when enemy ship hits the player
		for player, enemy_ship in player_crash.iteritems():
			print "player hit"
			music_effect("explosion")
			player.explosions()
			game_over(winings)


		print_text("Hits: " + str(winings), (600, 50), font, text_color)

		print_text("Ships missed: " + str(ships_missed), (100, 50), font, text_color)

		print_text("Press ESC to exit at any time", (450, 750), font, text_color)
		
		if ships_missed >= 1:
			game_over(winings)
		
		pygame.display.update() #update the screen  with what we draw
		clock.tick(40) #number of frames per second
Ejemplo n.º 15
0
 def new_room(self, last_exit):
     self.room = Room(entrance=Room.OPPOSITE_DIRECTIONS[last_exit])
     self.player.warp(self.room.get_player_spawn_point())
     self.room.enemies = Enemies(self.enemy_count, speed=self.enemy_speed)
Ejemplo n.º 16
0
 def __init__(self, level):
     self.enemies = Enemies(characterlevel=level)
Ejemplo n.º 17
0
    def run(self):
        # Game clock
        clock = pygame.time.Clock()

        # enemy Spawner
        Enems_pos = [50, 200, 350, 500, 650, 750]

        Enem = []

        for i in range(5):
            Enem.append(Enemies(Enems_pos[i], -100, 1, self.window))

        # Player variable
        player = Player(self.window, (width * 0.5), (height * 0.5))

        # Game loop
        isRunning = True

        # Player Score
        dodged = 0

        # player health
        health = 100

        # Bullets list
        bullets = []
        enem_bullets = []

        time0 = tm.time()

        # main game loop
        while isRunning:

            # Check if bullet is out of bounds
            for bullet in bullets:

                if bullet.y < -100:
                    bullets.pop(bullets.index(bullet))

                else:
                    bullet.y -= bullet.vel

            for bullet in enem_bullets:

                if bullet.y < -100:
                    enem_bullets.pop(bullets.index(bullet))

                else:
                    bullet.y += bullet.vel

            # Game events starts here
            for event in pygame.event.get():
                if event.type == pygame.QUIT:
                    isRunning = False
                    self.app_quit()

                # key is pressed
                if event.type == pygame.KEYDOWN:
                    # move left
                    if event.key == pygame.K_LEFT:
                        player.acclerate(-5)

                    # move right
                    elif event.key == pygame.K_RIGHT:
                        player.acclerate(5)

                    # move up
                    elif event.key == pygame.K_UP:
                        player.acclerate(0, -5)

                    # move down
                    elif event.key == pygame.K_DOWN:
                        player.acclerate(0, 5)

                    # fire bullets
                    elif event.key == pygame.K_SPACE:
                        fire(self.window, player, bullets)

                # key is released
                if event.type == pygame.KEYUP:
                    if event.key == pygame.K_LEFT or event.key == pygame.K_RIGHT or event.key == pygame.K_UP or event.key == pygame.K_DOWN:
                        player.acclerate(0, 0)

            # Game Events ends here

            # fill the screen with white color
            #self.window.fill(white)
            self.window.blit(background, (0, 0))

            # Draw the player
            player.draw()

            for bullet in enem_bullets:
                bullet.draw()

            # Draw bullets
            for bullet in bullets:
                bullet.draw()

            # Spawn The enemeis
            for i in Enem:
                i.Spawn()
                i.move()

                if tm.time() - time0 > 3:  # Shoot once every 3 seconds
                    time0 = tm.time()
                    i.fire(self.window, enem_bullets)

            # Move players and enemies
            player.move()

            # Show fps
            show_fps(clock, self.window)

            #message_display(f"dodged: {dodged}" , 70 , 15 ,25, white , self.window)

            hitbox = player.get_hitbox()

            # draw the player healthbar
            draw_healthbar(self.window, player.x, (hitbox[1] + hitbox[3]) + 15,
                           health, 10)

            # check if player is out of bounds
            if player.x > width - carw or player.x < 0:
                self.Crash()

            for bullet in enem_bullets:
                hit = bullet.get_hitbox()

                pl_bullet_col = self.detect_collisions(hitbox, hit)

                if pl_bullet_col:
                    health -= 10
                    enem_bullets.pop(enem_bullets.index(bullet))

            # bullet collision
            for enemy in Enem:

                # enemy hitbox
                enem_hitbox = enemy.get_hitbox()

                collsion = self.detect_collisions(hitbox, enem_hitbox)

                # player collsion
                if collsion:
                    # check if player health is Zero or below
                    if health <= 0:
                        self.Crash()
                    else:

                        enemy.y = 0 - enemy.h
                        enemy.x = random.randrange(0, width)
                        health -= 10

                for bullet in bullets:

                    bullet_hitbox = bullet.get_hitbox()

                    # collision detection function
                    collsion_bullet = self.detect_collisions(
                        bullet_hitbox, enem_hitbox)
                    pl_col = self.detect_collisions(hitbox, bullet_hitbox)

                    if collsion_bullet:

                        # reset enemy position
                        enemy.y = 0 - enemy.h
                        enemy.x = random.randrange(0, width)
                        bullets.pop(bullets.index(bullet))

            pygame.display.update()
            clock.tick()