Exemplo n.º 1
0
class MapWindow:
    def __init__(self):
        self.caption = None
        self.game_map = GameMap()

    def set_caption(self, language):
        pg.font.init()
        font = pg.font.SysFont('Arial', 35, True)
        if language == 'English':
            text = eng.ENG_MAPWINDOW_CAPTION
        else:
            text = rus.RUS_MAPWINDOW_CAPTION
        self.caption = font.render(text, True, WHITE)

    def reset_data(self):
        self.game_map.reset()

    def update(self, dt):
        self.game_map.update(dt)

    def draw(self, screen):
        screen.blit(self.caption, (365, 110))
        self.game_map.draw(screen)
Exemplo n.º 2
0
def scnene_game( gameDisplay ):
	# create game object
	# map
	play_map = GameMap(res.position_game_map, res.size_game_map, res.color_map,
						 res.size_grid, res.game_map_grids, 
						 res.width_game_map_wall, res.color_wall)
	play_map.kit_reset( res.kit_max, res.kit_freq )
	play_map.kit_gen()
	play_map.kit_gen()
	
	# player arrow
	arrow_p1 = Arrow(res.size_arrow, play_map.grid_center(res.grid_position_start_p1), (1,0), 2, res.speed_max, res.color_p1)
	arrow_p2 = Arrow(res.size_arrow, play_map.grid_center(res.grid_position_start_p2), (-1,0), 2, res.speed_max, res.color_p2)
	
	# player panel
	bar_p1 = PowerBar( res.position_panel_p1+res.size_panel_p1, res.speed_max, res.color_p1, (0,0,0) )
	bar_p2 = PowerBar( res.position_panel_p2+res.size_panel_p2, res.speed_max, res.color_p2, (0,0,0) )

	panel_p1 = PlayerPanel( res.position_panel_p1, res.size_panel_p1, res.color_p1 )
	panel_p1.set_item_slot( res.slot_layout )
	panel_p1.set_player( arrow_p1 )
	panel_p1.set_power_bar( bar_p1 )

	panel_p2 = PlayerPanel( res.position_panel_p2, res.size_panel_p2, res.color_p2 )
	panel_p2.set_item_slot( res.slot_layout )
	panel_p2.set_player( arrow_p2 )
	panel_p2.set_power_bar( bar_p2 )
	
	# add object to game
	gameArrowList = []
	gameArrowList.append( ArrowInGame(arrow_p1) )
	gameArrowList.append( ArrowInGame(arrow_p2) )
	for gameArrow in gameArrowList:
		gameArrow.set_grid_position( play_map.detect_grid(gameArrow.arrow.position) )

	# register key done event
	key_control = { res.control_p1['right']:lambda :game_map_turn_correct(arrow_p1, play_map, (1,0)),
					res.control_p1['left']:	lambda :game_map_turn_correct(arrow_p1, play_map, (-1,0)),
					res.control_p1['up']:	lambda :game_map_turn_correct(arrow_p1, play_map, (0,-1)),
					res.control_p1['down']:	lambda :game_map_turn_correct(arrow_p1, play_map, (0,1)),
					res.control_p1['kit']:	lambda :arrow_p1.kit_invoke(),
					res.control_p2['right']:lambda :game_map_turn_correct(arrow_p2, play_map, (1,0)),
					res.control_p2['left']:	lambda :game_map_turn_correct(arrow_p2, play_map, (-1,0)),
					res.control_p2['up']:	lambda :game_map_turn_correct(arrow_p2, play_map, (0,-1)),
					res.control_p2['down']:	lambda :game_map_turn_correct(arrow_p2, play_map, (0,1)),
					res.control_p2['kit']:	lambda :arrow_p2.kit_invoke()
					}
					
	game_over = False
	while not game_over:
		# handle event
		for event in pygame.event.get():
			if event.type == pygame.QUIT:
				return False

			if event.type == pygame.KEYDOWN:
				for key in key_control:
					if key == event.key:
						key_control[key]()
			# print(event)

		# raise game event
		if (game_arrow_encounter(arrow_p1, arrow_p2) == res.game_brokeback):
			return True
		game_arrow_map_event( gameArrowList, play_map )

		# progress game
		play_map.kit_progress()

		arrow_p1.progress()
		game_map_bump_correct( arrow_p1, play_map )

		arrow_p2.progress()
		game_map_bump_correct( arrow_p2, play_map )

		# render
		gameDisplay.fill(res.color_background)
		play_map.draw( gameDisplay )
		panel_p1.draw( gameDisplay )
		panel_p2.draw( gameDisplay )
		arrow_p1.draw( gameDisplay )
		arrow_p2.draw( gameDisplay )
		pygame.display.update()

		res.clock.tick( res.tick_game )
Exemplo n.º 3
0
class GameCanvas(tk.Canvas,
                 Oriented, Positionable, Rectangular,
                 KeyBoundWidget, MouseBoundWidget):

    def __init__(self, master, **kwargs):
        super().__init__(master, **kwargs)
        Oriented.__init__(self, 'north')
        Rectangular.__init__(self, (self.winfo_reqwidth(), self.winfo_reqheight()))
        Positionable.__init__(self, (0, 0))

        self.images = {}
        self.sprites = {}
        self.key_pressed = False

        self.map = GameMap(GameMapConfig.size, self)
        self.map.place_rectangle(pos=(0, 0), dim=(500, 500), fill='green')
        self.map.draw()

    def __repr__(self):
        return f'{self.__class__.__name__}()'

    def init_key_binds(self):
        self.bind(KeyBindsConfig.character_move_north,
                  lambda e: self.move_sprite('peasant', 'north'))
        self.bind(KeyBindsConfig.character_move_west,
                  lambda e: self.move_sprite('peasant', 'west'))
        self.bind(KeyBindsConfig.character_move_south,
                  lambda e: self.move_sprite('peasant', 'south'))
        self.bind(KeyBindsConfig.character_move_east,
                  lambda e: self.move_sprite('peasant', 'east'))

    def init_mouse_binds(self):
        self.bind('<Enter>', lambda e: self.focus_set())

    def save_image(self, name, image):
        self.images[name] = image

    def save_sprite(self, sprite):
        self.sprites[sprite.name] = sprite

    def move(self, direction):
        self.direction = direction

        if direction == 'north':
            self.position = (self.x, self.y - self.sprites['peasant'].speed)
        elif direction == 'west':
            self.position = (self.x - self.sprites['peasant'].speed, self.y)
        elif direction == 'south':
            self.position = (self.x, self.y + self.sprites['peasant'].speed)
        elif direction == 'east':
            self.position = (self.x + self.sprites['peasant'].speed, self.y)

        self.map.redraw()

    def move_sprite(self, name, direction):
        self.move(direction)
        self._lock_key_press(lambda: self.sprites[name].move(direction))

    def _lock_key_press(self, command):
        ' Internal method to stop key events from spamming. '
        if not self.key_pressed:
            self.key_pressed = True
            command()
            self.key_pressed = False
Exemplo n.º 4
0
class Game(object):
    def __init__(self):
        # Configfile
        try:
            config = configparser.ConfigParser()
            config.read('config.cfg')
            default = config['DEFAULT']
            self.name = default['name']
            self.width = int(default['width'])
            self.height = int(default['height'])
            self.tps = int(default['tps'])
            filenames = config['FILENAMES']
            self.background = pygame.image.load(os.path.join("game_assets", filenames['background']))
        except KeyError:
            create_config()
            Game()

        # Initialization
        pygame.mixer.pre_init(44100, -16, 2, 512)
        pygame.init()
        self.resolution = (self.width, self.height)
        self.screen = pygame.display.set_mode(self.resolution)
        self.tps_clock = pygame.time.Clock()
        self.tps_delta = 0.0
        self.game_map = GameMap(self)
        self.player = Player(self)
        self.magic_ball = MagicBall(self)

        # Sounds
        pygame.mixer.music.load('game_assets/sounds/game_sound.wav')
        pygame.mixer.music.set_volume(0.3)
        pygame.mixer.music.play(-1)

        # Run main loop
        self.run()

    def run(self):
        while True:
            # Handle events
            for event in pygame.event.get():
                if event.type == pygame.QUIT:
                    sys.exit(0)
                elif event.type == pygame.KEYDOWN:
                    if event.key == pygame.K_ESCAPE:
                        sys.exit(0)

            # Ticking
            self.tps_delta += self.tps_clock.tick() / 1000.0
            while self.tps_delta > 1 / self.tps:
                self.tick()
                self.tps_delta -= 1 / self.tps

                # Drawing
                self.draw()

    def tick(self):
        # self.game_map.tick(self.player.camera_scroll)
        self.player.tick()
        self.magic_ball.tick()

    def draw(self):
        self.screen.blit(self.background, (0, 0))
        self.game_map.draw(self.player.camera_scroll) # tutaj trzeba przekazac wartosc self.player.camera_scroll
        self.player.draw()
        self.magic_ball.draw()
        pygame.display.flip()