Example #1
0
    def __init__(self):
        QtCore.QObject.__init__(self)
        Play.__init__(self, continuous=True)
        self._play = None
        self._goalie_id = None
        self.add_transition(Behavior.State.start, Behavior.State.running,
                            lambda: True, 'immediately')

        # if a play fails for some reason, we can temporarily blacklist it, which removes it from play
        # selection for the next iteration, then enables it again
        self.temporarily_blacklisted_play_class = None
        self._currently_restarting = False
Example #2
0
    def __init__(self):
        QtCore.QObject.__init__(self)
        Play.__init__(self, continuous=True)
        self._play = None
        self._goalie_id = None
        self.add_transition(Behavior.State.start, Behavior.State.running,
                            lambda: True, 'immediately')

        # if a play fails for some reason, we can temporarily blacklist it, which removes it from play
        # selection for the next iteration, then enables it again
        self.temporarily_blacklisted_play_class = None
        self._currently_restarting = False
Example #3
0
window.set_background_color((0, 0, 0))

keyboard = Keyboard()
menu = Menu(window)
play = Play(window, "./assets/lvl/level_1.txt")
difficulty_menu = Difficulty(window)
rank = Rank(window)
clock = Clock()
fps = Fps(window)

window.update()
while GVar.STATE != 4:
    window.set_background_color((0, 0, 0))
    if keyboard.key_pressed("esc"):
        GVar.STATE = 0
        play.__init__(window, "./assets/lvl/level_1.txt")
    if GVar.STATE == 0:
        menu.run()
    if GVar.STATE == 1:
        if GVar.DIFC_CHOSEN == True:
            play.__init__(window, "./assets/lvl/level_1.txt")
            GVar.DIFC_CHOSEN = False
        play.run()
    if GVar.STATE == 2:
        difficulty_menu.run()
    if GVar.STATE == 3:
        rank.run()
    fps.print_fps(clock)
    window.update()
    clock.tick(120)
Example #4
0
class Game(object):
    def __init__(self, server, num):
        self.screen = pygame.display.set_mode([1920, 1080], FULLSCREEN, 32)
        # 主背景
        self.bg = pygame.image.load('./images/bg.jpg').convert()
        # 服务器ip
        self.server_ip = server
        # 用户id
        self.user_num = num
        # 初始化几个界面
        self.menu_screen = Menu(self.screen)
        self.play_screen = Play(self, self.screen)
        self.set_screen = Set(self, self.screen)
        self.room_screen = Room(self, self.screen)
        self.record_screen = Record(self, self.screen)
        # 打开软件时默认在菜单界面
        self.now_screen = 'menu'
        # 弹窗的类型
        self.alert_window = None
        self.alert_mod = '0'

    def began(self):
        while 1:
            # 首先显示背景
            self.screen.blit(self.bg, [0, 0])
            # 事件
            for event in pygame.event.get():
                if event.type == QUIT:
                    pygame.display.quit()
                    exit()
                # 计时事件
                if self.alert_window:
                    if self.alert_window.life:
                        self.alert_window.time_clock(event)
                self.play_screen.timer(event)
                # 键盘按钮事件
                if event.type == KEYDOWN:
                    key_press = pygame.key.get_pressed()
                    # alt+f4退出
                    if key_press[K_LALT] and key_press[K_F4]:
                        pygame.display.quit()
                        exit()
                # 鼠标点击事件
                if event.type == MOUSEBUTTONDOWN:
                    pos = pygame.mouse.get_pos()
                    # 警告界面点击按钮
                    if self.alert_window:
                        if self.alert_window.life:
                            # 退出游戏
                            if self.alert_mod == 'exit':
                                if self.alert_window.button_click(pos) == '确定':
                                    self.alert_window = None
                                    pygame.display.quit()
                                    exit()
                                elif self.alert_window.button_click(
                                        pos) == '取消':
                                    self.alert_window = None
                            # 取消匹配
                            elif self.alert_mod == 'match':
                                if self.alert_window.button_click(pos) == '取消':
                                    self.alert_window = None
                                    self.play_screen.give_up_match()
                                    self.now_screen = 'menu'
                            # 保存配置成功,关于,游戏结束
                            elif self.alert_mod == 'save_success' or self.alert_mod == 'about' or self.alert_mod == 'result':
                                if self.alert_window.button_click(pos) == '确定':
                                    self.alert_window = None
                            # 提前退出游戏
                            elif self.alert_mod == 'end_game':
                                if self.alert_window.button_click(pos) == '确定':
                                    self.now_screen = 'menu'
                                    self.alert_window = None
                                elif self.alert_window.button_click(
                                        pos) == '取消':
                                    self.alert_window = None
                    # 菜单界面
                    elif self.now_screen == 'menu':
                        # 点击多人游戏
                        if self.menu_screen.button_play.isClicked(pos):
                            self.play_screen.__init__(self, self.screen)
                            self.now_screen = 'play'
                            self.alert_window = Window(self.screen, [
                                self.screen.get_width() / 2,
                                self.screen.get_height() / 2
                            ],
                                                       'alert1',
                                                       'loading',
                                                       texts=['取消'])
                            self.alert_mod = 'match'
                            self.play_screen.go_match()
                        # 点击房间
                        if self.menu_screen.button_room.isClicked(pos):
                            self.now_screen = 'room'
                        # 点击记录
                        if self.menu_screen.button_record.isClicked(pos):
                            self.now_screen = 'record'
                        # 点击设置
                        if self.menu_screen.button_set.isClicked(pos):
                            self.now_screen = 'set'
                            self.set_screen.get_conf()
                        # 点击退出
                        if self.menu_screen.button_exit.isClicked(pos):
                            self.alert_window = Window(self.screen, [
                                self.screen.get_width() / 2,
                                self.screen.get_height() / 2
                            ],
                                                       'alert1',
                                                       'pause',
                                                       texts=['确定', '取消'])
                            self.alert_mod = 'exit'
                        # 点击关于
                        if self.menu_screen.button_about.isClicked(pos):
                            self.alert_window = Window(self.screen, [
                                self.screen.get_width() / 2,
                                self.screen.get_height() / 2
                            ],
                                                       'alert2',
                                                       '',
                                                       texts=['确定'],
                                                       rotate_speed=0)
                            self.alert_window.load_text(
                                '一个简陋的五子棋游戏', [
                                    self.screen.get_width() / 2 - 150,
                                    self.screen.get_height() / 2 - 100
                                ],
                                text_info=['fangsong', 35, 0],
                                col=[255, 0, 200])
                            self.alert_mod = 'about'
                    # 多人游戏界面
                    elif self.now_screen == 'play':
                        self.play_screen.mouse_click(pos)
                    # 房间界面
                    elif self.now_screen == 'room':
                        self.room_screen.mouse_click(pos)
                    # 记录界面
                    elif self.now_screen == 'record':
                        self.record_screen.mouse_click(pos)
                    # 设置界面
                    elif self.now_screen == 'set':
                        self.set_screen.mouse_click(pos)

            # ################## 画界面 ############################
            # 菜单界面
            if self.now_screen == 'menu':
                self.menu_screen.blit_button()
            # 游戏界面
            elif self.now_screen == 'play':
                self.play_screen.draw_stuff()
            # 房间界面
            elif self.now_screen == 'room':
                self.room_screen.draw_stuff()
            # 设置界面
            elif self.now_screen == 'set':
                self.set_screen.draw_stuff()
            # 记录界面
            elif self.now_screen == 'record':
                self.record_screen.draw_stuff()
            # 有警告界面
            if self.alert_window:
                if self.alert_window.life:
                    self.alert_window.draw_window()

            # ################## 画悬浮 ############################
            pos = pygame.mouse.get_pos()
            # 警告界面
            if self.alert_window:
                if self.alert_window.life:
                    self.alert_window.change_color(pos)
            # 菜单界面
            elif self.now_screen == 'menu':
                self.menu_screen.hover_button(pos)
            # 游戏界面
            elif self.now_screen == 'play':
                self.play_screen.mouse_hover(pos)
            # 房间界面
            elif self.now_screen == 'room':
                self.room_screen.mouse_hover(pos)
            # 设置界面
            elif self.now_screen == 'set':
                self.set_screen.mouse_hover(pos)
            # 设置界面
            elif self.now_screen == 'record':
                self.record_screen.mouse_hover(pos)
            # 刷新
            pygame.display.update()