Exemple #1
0
    def handle_key(self, key):
        """
        Funkcja do obsługi obracania
        :param key:
        :return:
        """
        log("handle key: %s" % key)
        if key == pygame.K_1:
            self.rotate_right(1, 1)
        if key == pygame.K_q:
            self.rotate_left(1, 1)

        if key == pygame.K_2:
            self.rotate_right(1, 4)
        if key == pygame.K_w:
            self.rotate_left(1, 4)

        if key == pygame.K_3:
            self.rotate_right(1, 7)
        if key == pygame.K_e:
            self.rotate_left(1, 7)

        if key == pygame.K_4:
            self.rotate_right(4, 1)
        if key == pygame.K_r:
            self.rotate_left(4, 1)

        if key == pygame.K_5:
            self.rotate_right(4, 4)
        if key == pygame.K_t:
            self.rotate_left(4, 4)

        if key == pygame.K_6:
            self.rotate_right(4, 7)
        if key == pygame.K_y:
            self.rotate_left(4, 7)

        if key == pygame.K_7:
            self.rotate_right(7, 1)
        if key == pygame.K_u:
            self.rotate_left(7, 1)

        if key == pygame.K_8:
            self.rotate_right(7, 4)
        if key == pygame.K_i:
            self.rotate_left(7, 4)

        if key == pygame.K_9:
            self.rotate_right(7, 7)
        if key == pygame.K_o:
            self.rotate_left(7, 7)
Exemple #2
0
    def handle_key(self, key):
        """
        Funkcja do obsługi obracania
        :param key:
        :return:
        """
        log("handle key: %s" % key)
        if key == pygame.K_1:
            self.rotate_right(1, 1)
        if key == pygame.K_q:
            self.rotate_left(1, 1)

        if key == pygame.K_2:
            self.rotate_right(1, 4)
        if key == pygame.K_w:
            self.rotate_left(1, 4)

        if key == pygame.K_3:
            self.rotate_right(1, 7)
        if key == pygame.K_e:
            self.rotate_left(1, 7)

        if key == pygame.K_4:
            self.rotate_right(4, 1)
        if key == pygame.K_r:
            self.rotate_left(4, 1)

        if key == pygame.K_5:
            self.rotate_right(4, 4)
        if key == pygame.K_t:
            self.rotate_left(4, 4)

        if key == pygame.K_6:
            self.rotate_right(4, 7)
        if key == pygame.K_y:
            self.rotate_left(4, 7)

        if key == pygame.K_7:
            self.rotate_right(7, 1)
        if key == pygame.K_u:
            self.rotate_left(7, 1)

        if key == pygame.K_8:
            self.rotate_right(7, 4)
        if key == pygame.K_i:
            self.rotate_left(7, 4)

        if key == pygame.K_9:
            self.rotate_right(7, 7)
        if key == pygame.K_o:
            self.rotate_left(7, 7)
Exemple #3
0
 def __init__(self, game):
     """
     Konstruktor, przyjmuje obiekt gry
     :param game:
     :return:
     """
     self.board = [[
         Field(UNDETERMINED, (600 / 9 * x + 12, 600 / 9 * y + 12))
         for x in range(9)
     ] for y in range(9)]
     log("Map array created")
     self.board_image = game.board_image
     self.screen = game.screen
     self.game = game
Exemple #4
0
    def main_loop(self):
        """
        Główna funkcja służąca do obsługi pętli gry
        :return:
        """
        while True:
            for event in pygame.event.get():
                if event.type == pygame.QUIT:
                    pygame.quit()
                    return "End by cross."
                if event.type == pygame.MOUSEBUTTONUP and self.tour == BEGINING:
                    self.per_move_flag = True
                    log('Gracz numer ' + str(self.current_player))
                    pos = pygame.mouse.get_pos()
                    if self.board.handle_mouse(
                            pos, self.players[self.current_player - 1]):
                        self.tour = MIDLE
                        self.press_sound.play()
                if event.type == pygame.KEYDOWN and self.tour == MIDLE and event.key in KEYS:
                    self.per_move_flag = True
                    self.board.handle_key(event.key)
                    log('Koniec tury gracza ' + str(self.current_player))
                    self.next_player()
                    self.tour = BEGINING
                    self.move_sound.play()
            if self.count_of_colored_field == 81:
                pygame.quit()
                return "\nKoniec gry - remis"
            if self.per_move_flag:
                self.per_move_flag = False
                if self.check_win():
                    pygame.quit()
                    return "\nKoniec gry - wygral: %s " % self.winners

            self.board.render()
            font = pygame.font.Font(None, 36)
            textpos = pygame.Rect(150, 615, 100, 100)
            self.screen.fill((255, 255, 255), pygame.Rect(0, 600, 600, 200))
            if self.tour == BEGINING:
                text = font.render("Graczu " + str(self.current_player)\
                                   + " poloz pionek", 1, (15, 15, 15))
            else:
                text = font.render("Graczu " + str(self.current_player)\
                                   + " obroc plansze", 1, (15, 15, 15))
            self.screen.blit(text, textpos)
            pygame.time.wait(100)
            pygame.display.flip()
Exemple #5
0
    def main_loop(self):
        """
        Główna funkcja służąca do obsługi pętli gry
        :return:
        """
        while True:
            for event in pygame.event.get():
                if event.type == pygame.QUIT:
                    pygame.quit()
                    return "End by cross."
                if event.type == pygame.MOUSEBUTTONUP and self.tour == BEGINING:
                    self.per_move_flag = True
                    log('Gracz numer ' + str(self.current_player))
                    pos = pygame.mouse.get_pos()
                    if self.board.handle_mouse(pos, self.players[self.current_player - 1]):
                        self.tour = MIDLE
                        self.press_sound.play()
                if event.type == pygame.KEYDOWN and self.tour == MIDLE and event.key in KEYS:
                    self.per_move_flag = True
                    self.board.handle_key(event.key)
                    log('Koniec tury gracza ' + str(self.current_player))
                    self.next_player()
                    self.tour = BEGINING
                    self.move_sound.play()
            if self.count_of_colored_field == 81:
                pygame.quit()
                return "\nKoniec gry - remis"
            if self.per_move_flag:
                self.per_move_flag = False
                if self.check_win():
                    pygame.quit()
                    return "\nKoniec gry - wygral: %s " % self.winners

            self.board.render()
            font = pygame.font.Font(None, 36)
            textpos = pygame.Rect(150, 615, 100, 100)
            self.screen.fill((255, 255, 255), pygame.Rect(0, 600, 600, 200))
            if self.tour == BEGINING:
                text = font.render("Graczu " + str(self.current_player)\
                                   + " poloz pionek", 1, (15, 15, 15))
            else:
                text = font.render("Graczu " + str(self.current_player)\
                                   + " obroc plansze", 1, (15, 15, 15))
            self.screen.blit(text, textpos)
            pygame.time.wait(100)
            pygame.display.flip()
Exemple #6
0
 def __init__(self, game):
     """
     Konstruktor, przyjmuje obiekt gry
     :param game:
     :return:
     """
     self.board = [
         [
             Field(UNDETERMINED, (600 / 9 * x + 12, 600 / 9 * y + 12))
             for x in range(9)
         ]
         for y in range(9)
     ]
     log("Map array created")
     self.board_image = game.board_image
     self.screen = game.screen
     self.game = game
Exemple #7
0
    def load_assets(self):
        """
        Służy do ładowania plików graficznych
        :return:
        """

        try:
            self.board_image = pygame.image.load(
                'assets/background.bmp').convert()
            self.players_ball = (pygame.image.load('assets/ball_empty.gif'),
                                 pygame.image.load('assets/ball_red.gif'),
                                 pygame.image.load('assets/ball_blue.gif'),
                                 pygame.image.load('assets/ball_green.gif'),
                                 pygame.image.load('assets/ball_pink.gif'),
                                 pygame.image.load('assets/ball_yellow.gif'))
            self.press_sound = pygame.mixer.Sound('assets/button.wav')
            self.move_sound = pygame.mixer.Sound('assets/move.wav')
        except Exception as e:
            log(str(e))
            raise Exception
Exemple #8
0
    def load_assets(self):
        """
        Służy do ładowania plików graficznych
        :return:
        """

        try:
            self.board_image = pygame.image.load('assets/background.bmp').convert()
            self.players_ball = (
                pygame.image.load('assets/ball_empty.gif'),
                pygame.image.load('assets/ball_red.gif'),
                pygame.image.load('assets/ball_blue.gif'),
                pygame.image.load('assets/ball_green.gif'),
                pygame.image.load('assets/ball_pink.gif'),
                pygame.image.load('assets/ball_yellow.gif')
            )
            self.press_sound = pygame.mixer.Sound('assets/button.wav')
            self.move_sound = pygame.mixer.Sound('assets/move.wav')
        except Exception as e:
            log(str(e))
            raise Exception
Exemple #9
0
    def __init__(self, players_number, size=(600, 650)):
        log("================ NEW RUNME")
        try:
            pygame.init()
            self.screen = pygame.display.set_mode(size)
        except Exception as e:
            log(str(e))
            raise Exception

        self.count_of_colored_field = 0
        self.board_image = None
        self.players_ball = None
        self.load_assets()
        self.winners = ""

        self.players_number = players_number
        self.current_player = 1
        self.players = []
        for _ in range(players_number):
            self.players.append(Player(_ + 1))
        self.per_move_flag = True
        self.tour = BEGINING

        self.board = Board(self)
Exemple #10
0
    def __init__(self, players_number, size=(600, 650)):
        log("================ NEW RUNME")
        try:
            pygame.init()
            self.screen = pygame.display.set_mode(size)
        except Exception as e:
            log(str(e))
            raise Exception

        self.count_of_colored_field = 0
        self.board_image = None
        self.players_ball = None
        self.load_assets()
        self.winners = ""

        self.players_number = players_number
        self.current_player = 1
        self.players = []
        for _ in range(players_number):
            self.players.append(Player(_ + 1))
        self.per_move_flag = True
        self.tour = BEGINING

        self.board = Board(self)
Exemple #11
0
 def handle_mouse(self, position, player):
     """
     Funkcja do obsługi stawiania pionków
     :param position:
     :param player:
     :return:
     """
     log("handle mouse: (%s,%s)" % (position[0], position[1]))
     for row in self.board:
         for field in row:
             if field.rect.collidepoint(position[0], position[1]):
                 log('Mouse collision:' + str(field.cords[0]) + ' ' + str(field.cords[1]))
                 log('field color %s' % field.color)
                 if field.color != 0:
                     return False
                 field.color = player.number
                 self.game.count_of_colored_field += 1
                 return True
     return False
Exemple #12
0
 def handle_mouse(self, position, player):
     """
     Funkcja do obsługi stawiania pionków
     :param position:
     :param player:
     :return:
     """
     log("handle mouse: (%s,%s)" % (position[0], position[1]))
     for row in self.board:
         for field in row:
             if field.rect.collidepoint(position[0], position[1]):
                 log('Mouse collision:' + str(field.cords[0]) + ' ' +
                     str(field.cords[1]))
                 log('field color %s' % field.color)
                 if field.color != 0:
                     return False
                 field.color = player.number
                 self.game.count_of_colored_field += 1
                 return True
     return False
Exemple #13
0
from source.game import Game
from source.loger import log
import os
import source.constants as constants


def main():
    while True:
        os.system('cls' if os.name == 'nt' else 'clear')
        print(constants.TEXT_MENU)
        user_input = raw_input()
        if user_input not in ('1', '2', '3', 'q'):
            continue
        if user_input == 'q':
            break
        game = Game(int(user_input))
        print game.main_loop()
        os.system('pause' if os.name == 'nt' else\
                      'read -n1 -r -p "Nacisnij enter by kontynuowac..." key')


if __name__ == '__main__':
    log("============================= NEW RUNME")
    main()