Example #1
0
 def __init__(self, player, handler=None):
     self._player = player
     self._logic_handler = GameLogicHandler(
     ) if handler is None else handler
     self._screen = GameScreen()
     self._screen.draw(self._logic_handler.board, 0, 1, config.FPS, " -",
                       True, Action.LEFT)
Example #2
0
class ColonistGame(object):
    def __init__(self):
        pass

    def initialize_game(self):
        #initialize model instances
        print "initialize game"
        self.model_instance = GameModel()
        for colonist in self.model_instance.colonistlist:
            print colonist.get_name()

        self.root = Tk()
        self.app = GameScreen(self.root, game_instance)
        self.root.mainloop()
        self.app.update_screen()

    def next_turn(self):
        """
        Model update
        """
        self.model_instance.resolve_turn_phase()

        """
        Screen update
        """
        self.app.update_screen()

        print "Next turn"
Example #3
0
 def build(self):
     """This method is build app"""
     root = GameScreenManager()
     root.add_widget(StartScreen(name="start"))
     root.add_widget(PlayerScreen(name="players"))
     root.add_widget(GameScreen(name="players2"))
     return root
Example #4
0
    def initialize_game(self):
        #initialize model instances
        print "initialize game"
        self.model_instance = GameModel()
        for colonist in self.model_instance.colonistlist:
            print colonist.get_name()

        self.root = Tk()
        self.app = GameScreen(self.root, game_instance)
        self.root.mainloop()
        self.app.update_screen()
Example #5
0
    def __init__(self, width, height):
        title = f'Meta Tic Tac Toe v{const.VERSION}'
        super().__init__(width, height, title, resizable=True, fullscreen=True)
        self.set_min_size(const.MIN_WIDTH, const.MIN_HEIGHT)
        self.background = None
        self.unfocused = True

        # Create application screens
        self.screens = {
            AppScreen.Start: StartScreen(self),
            AppScreen.Game: GameScreen(self),
            AppScreen.End: EndScreen(self)
        }
Example #6
0
 def __init__(self):
     self.load_settings()
     self.tps_max = 2.0
     self.bw = B_WIDTH
     self.bh = B_HEIGHT
     self.width = W_WIDTH
     self.height = W_HEIGHT
     self.screen = pygame.display.set_mode((self.width, self.height))
     self.num_of_bombs = NUM_OF_BOMBS
     self.game_screen = GameScreen(self, self.num_of_bombs, BOARD_WIDTH,
                                   BOARD_HEIGHT)
     self.info_screen = InfoScreen(self, BOARD_WIDTH, 0, INFO_WIDTH,
                                   INFO_HEIGHT)
     self.menu_screen = MenuScreen(self, BOARD_WIDTH, 0, INFO_WIDTH,
                                   INFO_HEIGHT)
     self.show_menu = False
     self.clock = pygame.time.Clock()
     self.timer_sec = 0
     self.time_start = time.time()
     self.restart = False
     self.freeze = False
     self.win = -1  # 0 - lose, 1 - win, -1 - default
Example #7
0
 def __init__(self):
     pygame.mixer.pre_init(frequency=44100,
                           size=-16,
                           channels=2,
                           buffer=512)
     pygame.init()
     pygame.mixer.init()
     pygame.display.set_caption('S N A K E')
     pygame.mouse.set_visible(True)
     self.snakeSpeed = config.SNAKE_SPEED
     self.display = pygame.display.set_mode(
         (config.DIS_WIDTH, config.DIS_HEIGHT))
     self.clock = pygame.time.Clock()
     self.menuScreen = MenuScreen()
     self.gameScreen = GameScreen()
     self.menuScreen.gameScene = self.gameScreen
     self.gameScreen.menuScene = self.menuScreen
 def create_screen(self):
     game_screen = GameScreen()
     return game_screen
Example #9
0
class Game:
    def __init__(self):
        self.load_settings()
        self.tps_max = 2.0
        self.bw = B_WIDTH
        self.bh = B_HEIGHT
        self.width = W_WIDTH
        self.height = W_HEIGHT
        self.screen = pygame.display.set_mode((self.width, self.height))
        self.num_of_bombs = NUM_OF_BOMBS
        self.game_screen = GameScreen(self, self.num_of_bombs, BOARD_WIDTH,
                                      BOARD_HEIGHT)
        self.info_screen = InfoScreen(self, BOARD_WIDTH, 0, INFO_WIDTH,
                                      INFO_HEIGHT)
        self.menu_screen = MenuScreen(self, BOARD_WIDTH, 0, INFO_WIDTH,
                                      INFO_HEIGHT)
        self.show_menu = False
        self.clock = pygame.time.Clock()
        self.timer_sec = 0
        self.time_start = time.time()
        self.restart = False
        self.freeze = False
        self.win = -1  # 0 - lose, 1 - win, -1 - default

    def run(self):
        """
        Main loop
        """

        cheat_code = ['x', 'y', 'z', 'z', 'y']
        key_queue = []
        self.draw()
        while not self.restart:
            for event in pygame.event.get():
                if event.type == pygame.KEYDOWN:
                    key_queue.append(event.unicode)
                    if len(key_queue) >= 6:
                        key_queue.pop(0)
                    if key_queue == cheat_code:
                        self.xyzzy()
                if event.type == pygame.QUIT:
                    sys.exit(0)
                if not self.freeze:
                    if event.type == pygame.MOUSEBUTTONDOWN and event.button == LEFT:
                        keys = pygame.key.get_pressed()
                        if self.game_screen.block_on_click():
                            self.win = 0
                            self.game_over()
                        elif self.game_screen.check_bombs():
                            self.win = 1
                            self.game_over()
                        self.draw()
                    if event.type == pygame.MOUSEBUTTONDOWN and event.button == RIGHT:
                        if self.game_screen.on_right_click():
                            self.win = 1
                            self.game_over()
                        self.draw()
            if self.show_menu:
                self.menu_screen.text_events(event)
                self.draw_menu()
            else:
                self.draw_info()
            pygame.display.flip()

    def restart_game(self):
        """
        Stops main loop and resets game
        """
        self.restart = True

    def draw(self):
        """
        Draw game board
        """
        self.game_screen.draw()

    def draw_info(self):
        """
        Draws info screen
        """
        self.info_screen.draw()

    def draw_menu(self):
        """
        Draws menu screen
        """
        self.menu_screen.draw()

    def game_over(self):
        """
        Freezes game board and time, reveals al bombs
        """
        self.info_screen.freeze_time()
        self.freeze = True
        for x in range(B_WIDTH):
            for y in range(B_HEIGHT):
                self.game_screen.game_net[x][y].boom()

    def xyzzy(self):
        """
        Reveals all bombs locations with dark grey color
        """
        for x in range(B_WIDTH):
            for y in range(B_HEIGHT):
                self.game_screen.game_net[x][y].cheats_enabled = True
        self.draw()

    def load_settings(self):
        """
        Loads settings from settings.csv file
        """
        try:
            if not os.path.isfile("settings.csv"):
                raise FileLoadErrorException
            with open('settings.csv') as cfg:
                data = cfg.readlines()
                print("Settings:")
                for line in data:
                    setting = line.split(" = ")
                    print(setting[0], " - ", setting[1])
                    if setting[0] == 'B_WIDTH':
                        global B_WIDTH
                        B_WIDTH = int(setting[1])
                    if setting[0] == 'B_HEIGHT':
                        global B_HEIGHT
                        B_HEIGHT = int(setting[1])
                    if setting[0] == 'NUM_OF_BOMBS':
                        global NUM_OF_BOMBS
                        NUM_OF_BOMBS = int(setting[1])
        except FileLoadErrorException:
            print("Can't find configuration file. Default settings loaded.")

    def apply_settings(self):
        self.bw = self.menu_screen.bw.getText()
        self.bh = self.menu_screen.bh.getText()
        self.num_of_bombs = self.menu_screen.nob.getText()
        self.save_settings()
        self.restart_game()

    def save_settings(self):
        with open('settings.csv', 'w') as cfg:
            print(self.num_of_bombs)
            cfg.write(f'B_WIDTH = {self.bw}\n'
                      f'B_HEIGHT = {self.bh}\n'
                      f'NUM_OF_BOMBS = {self.num_of_bombs}')
Example #10
0
class SnakeGame:
    """ Implements the main game loop. """
    def __init__(self, player, handler=None):
        self._player = player
        self._logic_handler = GameLogicHandler(
        ) if handler is None else handler
        self._screen = GameScreen()
        self._screen.draw(self._logic_handler.board, 0, 1, config.FPS, " -",
                          True, Action.LEFT)

    def start(self, gen=" -", bonus_points=False):
        alive = True
        clock = Clock()
        turn = 1

        self._screen.draw(self._logic_handler.board,
                          self._player.score,
                          turn,
                          config.FPS,
                          gen,
                          alive,
                          Action.LEFT,
                          start_msg=True)
        ask_start = True
        while ask_start:
            for event in pygame.event.get():
                if event.type == pygame.KEYDOWN and event.key == pygame.K_SPACE:
                    ask_start = False
                    break
                elif event.type == pygame.QUIT:
                    pygame.quit()
                    exit()

        last_food_dist = self._logic_handler.abs_food_dist()
        while alive:
            events = pygame.event.get()
            for e in events:
                if e.type == pygame.QUIT:
                    pygame.quit()
                    exit()

            move = self._player.act(handler=self._logic_handler,
                                    user_events=events)
            state = self._logic_handler.update(move)
            alive = (state != GameLogicHandler.State.DEAD)

            if state == GameLogicHandler.State.FOOD_EATEN:
                self._player.score += config.FOOD_SCORE

            # bonus points
            if bonus_points:
                new_food_dist = self._logic_handler.abs_food_dist()
                self._player.score += config.FARTHER_FROM_FOOD_SCORE if new_food_dist >= last_food_dist else config.CLOSER_TO_FOOD_SCORE
                last_food_dist = new_food_dist

            # draw
            self._screen.draw(self._logic_handler.board, self._player.score,
                              turn, config.FPS, gen, alive, move)
            clock.tick(config.FPS)
            turn += 1

            if not alive:
                print(move)
                for b in self._logic_handler.board:
                    print(b)