예제 #1
0
    def update_characters(bill, bull): #LOOKS FOR CHARACTERS FALLING IN HOLES OR STANDING ON MEETING POINT. IF loading_level IS TRUE, TELEPORTS CHARACTERS TO SPAWNING POINTS
        for character in Character.List:
            if Tile.get_tile(character.get_number()).type == 'hole':
                if Tile.get_tile(character.get_number()).x == character.x and Tile.get_tile(character.get_number()).y == character.y:
                    if not character.has_target():
                        Tile.freeze = True
                        functions.load_level(Tile.MAP['level'])

        if Tile.loading_level == True:
            Character.respawn(bill, bull)

            Tile.loading_level = False

        if bill.x == Tile.get_tile(Tile.MAP['point']).x and bill.y == Tile.get_tile(Tile.MAP['point']).y and not Character.on_point():
            bill.status = 'happy'
            bull.status = 'sad'

        elif bull.x == Tile.get_tile(Tile.MAP['point']).x and bull.y == Tile.get_tile(Tile.MAP['point']).y and not Character.on_point():
            bull.status = 'happy'
            bill.status = 'sad'

        elif Character.on_point():
            bill.status = 'happy'
            bull.status = 'happy'
            Tile.freeze = True
            functions.load_level(Tile.MAP['level'] + 1)

        else:
            bill.status = 'sad'
            bull.status = 'sad'
예제 #2
0
    def run(self):

        pygame.display.set_caption(self.caption)

        if self.state == S_MENU:

            play_button = Button(
                'PLAY', Tile.screen_size[0] / 2 - self.button_size[0] / 2, 200,
                self.button_size[0], self.button_size[1], 'PLAY GAME')
            builder_button = Button(
                'DEVELOP', Tile.screen_size[0] / 2 - self.button_size[0] / 2,
                300, self.button_size[0], self.button_size[1], 'DEVELOP LEVEL')

            while self.state == S_MENU:
                self.state = functions.get_state()

                self.screen.blit(self.menubackground, (0, 0))
                Button.draw_buttons(self.screen)
                menu_interaction(self.screen)

                pygame.display.flip()
                self.clock.tick(self.FPS)

        if self.state == S_GAME:

            Tile.create_tiles()

            bill = Character('Bill')
            bull = Character('Bull')

            functions.load_level(1)
            sound = pygame.mixer.Sound("audio/music.wav")
            sound.set_volume(.25)
            sound.play(-1)

            print Tile.MAP

            while self.state == S_GAME:
                self.state = functions.get_state()

                self.screen.blit(self.gamebackground, (0, 0))
                Tile.draw_tiles(self.screen)
                Character.update_characters(bill, bull)
                Character.draw_characters(self.screen)

                interaction(self.screen, bill, bull)

                bill.movement()
                bull.movement()

                pygame.display.flip()
                self.clock.tick(self.FPS)

        if self.state == S_ESC:
            pass
예제 #3
0
	def run(self):

		pygame.display.set_caption(self.caption)

		if self.state == S_MENU:
			
			play_button = Button('PLAY', Tile.screen_size[0] / 2 - self.button_size[0] / 2, 200, self.button_size[0], self.button_size[1], 'PLAY GAME')
			builder_button = Button('DEVELOP', Tile.screen_size[0] / 2 - self.button_size[0] / 2, 300, self.button_size[0], self.button_size[1], 'DEVELOP LEVEL')

			while self.state == S_MENU:
				self.state = functions.get_state()

				self.screen.blit(self.menubackground, (0,0))
				Button.draw_buttons(self.screen)
				menu_interaction(self.screen)

				pygame.display.flip()
				self.clock.tick(self.FPS)

		if self.state == S_GAME:

			Tile.create_tiles()

			bill = Character('Bill')
			bull = Character('Bull')

			functions.load_level(1)
			sound = pygame.mixer.Sound("audio/music.wav")
			sound.set_volume(.25)
			sound.play(-1)

			print Tile.MAP

			while self.state == S_GAME:
				self.state = functions.get_state()

				self.screen.blit(self.gamebackground, (0,0))
				Tile.draw_tiles(self.screen)
				Character.update_characters(bill, bull)
				Character.draw_characters(self.screen)

				interaction(self.screen, bill, bull)

				bill.movement()
				bull.movement()

				pygame.display.flip()
				self.clock.tick(self.FPS)


		if self.state == S_ESC:
			pass
예제 #4
0
def main_loop(level):
    settings = Settings()
    settings.set_screen_sizes(screen.get_size())

    delta_time = clock.tick() / 1000
    board_list = generate_map_board_list(load_level(level), settings)
    map_board = Board(board_list, settings)

    settings.enemy_waves = generate_enemy_waves(load_level(level))

    add_buttons(screen, settings,
                [towers.NormalTower, towers.FastTower, towers.SplitTower])
    background_surface = create_background_surface(screen.get_size())

    while True:
        events = pg.event.get()
        for event in events.copy():
            if event.type == pg.QUIT:
                terminate()
            elif event.type == pg.KEYDOWN:
                if event.key == pg.K_ESCAPE:
                    action = menu(screen)
                    if action == 'restart':
                        return 'restart'
            elif event.type == pg.MOUSEBUTTONDOWN:
                if event.button == 3:
                    settings.action = None

        if settings.lives <= 0:
            return game_over(screen)

        if not settings.enemy_waves and not settings.enemy_sprites.sprites():
            return 'next_level'

        screen.fill(pg.Color('black'))
        screen.blit(background_surface, (0, 0))
        add_text_info(screen, settings)

        map_board.update(events.copy(), screen, action=settings.action)
        settings.all_sprites.draw(screen)
        settings.all_sprites.update(delta_time=delta_time,
                                    screen=screen,
                                    mouse_pos=pg.mouse.get_pos())

        pg.display.flip()
        delta_time = clock.tick(60) / 1000
예제 #5
0
    def update_characters(bill, bull): #LOOKS FOR CHARACTERS FALLING IN HOLES OR STANDING ON MEETING POINT.

        try:
            for character in Character.List:
                if Tile.get_tile(character.get_number()).type == 'hole':
                    if Tile.get_tile(character.get_number()).x == character.x and Tile.get_tile(character.get_number()).y == character.y:
                        if not character.has_target():
                            functions.load_level(Tile.MAP['level'])

            if bill.x == Tile.get_tile(Tile.MAP['point']).x and bill.y == Tile.get_tile(Tile.MAP['point']).y and not Character.on_point():
                bill.status = 'happy'
                bull.status = 'sad'

            elif bull.x == Tile.get_tile(Tile.MAP['point']).x and bull.y == Tile.get_tile(Tile.MAP['point']).y and not Character.on_point():
                bull.status = 'happy'
                bill.status = 'sad'

            elif Character.on_point():
                bill.status = 'happy'
                bull.status = 'happy'
                functions.load_level(Tile.MAP['level'] + 1)

            else:
                bill.status = 'sad'
                bull.status = 'sad'

        except Exception, e:
            functions.load_level(Tile.MAP['level'])
예제 #6
0
def next_level(gamestart=False):
    global finish, level, level_width, level_height, player1, player2
    global all_sprites, player_group, tile_group
    global tile_size, displace, width
    level, level_width, level_height = load_level(levels[current_level %
                                                         len(levels)])

    width, height = 350, 350
    screen = pygame.display.set_mode(
        (width, height),
        pygame.HWSURFACE | pygame.DOUBLEBUF | pygame.FULLSCREEN)
    pygame.display.set_caption("Run")
    pygame.display.set_icon(load_image("invert.png"))

    width_fraction = 0.9
    displace = (width - int(width_fraction * width)) // 2
    width = int(width_fraction * width)
    tile_size = width // level_width
    displace += (width - tile_size * level_width) / 2

    if gamestart:
        start_screen(["QR", "WASD <^>"], screen, height)

    all_sprites = pygame.sprite.Group()
    player_group = pygame.sprite.Group()
    tile_group = pygame.sprite.Group()

    player1, player2 = generate_level(level, all_sprites, tile_group,
                                      player_group, tile_size)

    for sprite in all_sprites:
        sprite.rect.x += displace
    finish = Finish()
    finish_screen([
        "Stage Over!",
        play(screen, height),
        str(SCORE[1]) + " : " + str(SCORE[2]), "SPACE to continue"
    ], screen, height)
예제 #7
0
    def update_characters(
        bill, bull
    ):  #LOOKS FOR CHARACTERS FALLING IN HOLES OR STANDING ON MEETING POINT.

        try:
            for character in Character.List:
                if Tile.get_tile(character.get_number()).type == 'hole':
                    if Tile.get_tile(character.get_number(
                    )).x == character.x and Tile.get_tile(
                            character.get_number()).y == character.y:
                        if not character.has_target():
                            functions.load_level(Tile.MAP['level'])

            if bill.x == Tile.get_tile(
                    Tile.MAP['point']).x and bill.y == Tile.get_tile(
                        Tile.MAP['point']).y and not Character.on_point():
                bill.status = 'happy'
                bull.status = 'sad'

            elif bull.x == Tile.get_tile(
                    Tile.MAP['point']).x and bull.y == Tile.get_tile(
                        Tile.MAP['point']).y and not Character.on_point():
                bull.status = 'happy'
                bill.status = 'sad'

            elif Character.on_point():
                bill.status = 'happy'
                bull.status = 'happy'
                functions.load_level(Tile.MAP['level'] + 1)

            else:
                bill.status = 'sad'
                bull.status = 'sad'

        except Exception, e:
            functions.load_level(Tile.MAP['level'])
예제 #8
0
from Button import Button
from camera import *
from functions import can_move, load_level, load_image, near_store
from player import Player
from cell import Cell
from store import store

WIDTH = 500
HEIGHT = 500
WHITE = (255, 255, 255)





lst = load_level('test_map.txt')
new_lst = []
tiles_arr = []

get_status = {'.': 'grass', '#': 'road'}
pg.init()
clock = pg.time.Clock()
running = True
screen = pg.display.set_mode((WIDTH, HEIGHT))
canvas = pygame.Surface((WIDTH,HEIGHT))
player = Player()


for i in range(len(lst)):
    for j in range(len(lst[i])):
        if lst[i][j] == '@':
예제 #9
0
         per = get('http://127.0.0.1:8800/levels_get').json()
         level_x = per['ok']
         level_name = level_x[0]
         level = level_x[1:]
         level = level.split('\n')
         screen.fill((255, 255, 255))
         screen.blit(loading_image, (0, 0))
         pygame.display.flip()
         player = generate_level(level, Tile, level_name, Player,
                                 all_sprites, wall_group, load_image,
                                 player_group)
         startsc = False
         web_level = True
     if not web_level:
         screen.fill((255, 255, 255))
         level = load_level(level_name)
         screen.blit(loading_image, (0, 0))
         pygame.display.flip()
         player = generate_level(level, Tile, level_name, Player,
                                 all_sprites, wall_group, load_image,
                                 player_group)
     marx = player[1]
     marx += 0.6
     marx2 = marx - 0.2
     mary = player[2] + 0.8
     player = player[0]
 elif not startsc and not cutscene:  # Управление персонажем и взаимодействия
     if event.type == pygame.KEYDOWN:
         if event.key == pygame.K_UP:
             g_up = True
         if event.key == pygame.K_LEFT: