def __init__(self, feed_layer, *args, **kwargs): super().__init__(*args, **kwargs) uic.loadUi(os.path.join(os.path.dirname(__file__), "MainWindow.ui"), self) jsonpickle.set_encoder_options('simplejson', sort_keys=True, indent=4) jsonpickle.set_encoder_options('json', sort_keys=True, indent=4) jsonpickle.set_preferred_backend("simplejson") self.__tabs = {} self.uiMainTabWidget = self.findChild(QTabWidget, "tabWidget") self.uiMainTabWidget.tabCloseRequested.connect(self.closeView) nodes = self.__loadConfigFromFile(MainWindow.FILENAME_CONFIG_NODES, {}) self.nodes = NodeManager(nodes) views = self.__loadConfigFromFile(MainWindow.FILENAME_CONFIG_VIEWS, {}) self.views = ViewManager(views) self.sensorManager = SensorManager(self.views.callbackUpdate, self.nodes.addId) nodeConfigTab = NodeConfigTab( self.nodes, callbackModified=self.callbackModifiedNodes) self.nodes.setCallbackNodeAdded(nodeConfigTab.add) self.uiMainTabWidget.addTab(nodeConfigTab, "Konfiguration") self.uiMainTabWidget.tabBar().setTabButton(0, QTabBar.RightSide, None) viewConfigTab = ViewConfigTab( self.views, self.nodes, self.showView, callbackModified=self.callbackModifiedViews) self.uiMainTabWidget.addTab(viewConfigTab, "Ansichten") self.uiMainTabWidget.tabBar().setTabButton(1, QTabBar.RightSide, None) self.__updateTimer = QtCore.QTimer(self) self.__updateTimer.setInterval(1000) self.__updateTimer.timeout.connect(self.views.updateWidgets) self.__updateTimer.start() if feed_layer is not None: self.link = feed_layer self.readAllEvents() self.link.subscribe_sensor_feed(self.parseSensorFeedEventNoId) else: self.link = None self.demoTimer = None
def run_game(): # 初始化游戏 pygame.init() # 创建ViewManager对象 screen = pygame.display.set_mode((1024, 768)) view_manager = ViewManager() block = pygame.time.Clock() # 设置显示屏幕,返回Surface对象 p1 = [] # 设置标题 pygame.display.set_caption('pvz') p2 = [] #是否进入点击状态 is_pick = False while 1: block.tick(30) screen.blit(view_manager.background, (0, 0)) screen.blit(view_manager.cards, (120, 15)) press = pygame.mouse.get_pressed() x, y = pygame.mouse.get_pos() # 处理游戏事件 for event in pygame.event.get(): # 处理游戏退出 if event.type == pygame.QUIT: sys.exit() if event.type == pygame.MOUSEMOTION: if not is_pick: if press[0]: if 120 <= x < 120 + view_manager.cards.get_rect( ).width and 15 <= y <= 15 + view_manager.cards.get_rect( ).height: p = plant(view_manager) p1.append(p) is_pick = True if is_pick: if not (120 <= x < 120 + view_manager.cards.get_rect().width and 15 <= y <= 15 + view_manager.cards.get_rect().height): if press[2]: p1.clear() is_pick = False if press[0]: p.x = x - 50 p.y = y - 80 p.motivated = True p2.append(p) p1.clear() is_pick = False for i in p1: screen.blit(i.images, (x - 50, y - 80)) for i in p2: if i.motivated and i.shoot_time <= 0: i.add_bullet(view_manager) i.draw_bullet(screen) screen.blit(i.images, (i.x, i.y)) # print((str(len(i.bullet_list))), str(i.shoot_time)) if press[1]: print(len(p2)) del_monster = [] for i in mm.monster_list: for j in p2: for k in j.bullet_list: if(i.is_hurt(k.x+50,k.y+26)): j.bullet_list.remove(k) i.life -= 1 if i.life <= 0: del_monster.append(i) mm.monster_list.remove(del_monster) del_monster.clear() update_screen(screen, view_manager, mm)
import xml.etree.ElementTree as ET from ViewManager import ViewManager # https://docs.python.org/3.6/library/xml.etree.elementtree.html views_root = ET.parse('../xml_conf/views.xml').getroot() view_managers = {} for id, xml_view_child in enumerate(views_root): vm = ViewManager(id, xml_view_child) view_managers[str(id)] = vm vm.update_view() view_chain_mapping = {} for id, vm in view_managers.items(): view_chain_mapping[vm.id] = [r.split("/")[0] for r in vm.get_refs()] print("Plot refs for view {}: {}".format(vm.id, view_chain_mapping[vm.id])) transformations = [] for id, vm in view_managers.items(): transformations += vm.get_transformations() print("Transformations for view {}: {}".format(vm.id, transformations)) transformations = list(dict.fromkeys(transformations)) """ Plot refs for view 0: ['lst_dl1', ''] Transformations for view 0: ['tailcuts_clean'] """