def __init__(self, app_data): self.app_data = app_data # Build GUI super(Nucleus, self).__init__() self.resize(1100, 600) setters.set_uniform_margins(self, 15) self.setWindowTitle('Nucleus 2020') self.status = StatusBar(self) self.set_menu() self.set_docks() self.desk = Desk(self.app_data, self.status, self.on_click_context) self.setCentralWidget(self.desk) self.show()
def __init__(self, debug=False, desk=None): super().__init__() _desk = desk or Desk(True) self.inbox = _desk.inbox self.outbox = _desk.outbox self.result = None
def get_desk(self, deskID): query = "SELECT deskName, languageID FROM desk WHERE (deskID = %s)" cursor = self.dbfile.cursor() cursor.execute(query, (deskID, )) deskinfo = cursor.fetchone() desk = (Desk(deskinfo[0]), deskinfo[1]) return desk
def __init__(self, master=None, player_side=False, difficult=2, ball_color='blue', rackets_color='red', width=200, height=110, ball_height=15, ball_width=15, racket_width=15, racket_height=30): self.master = master self.difficult = difficult self.player_side = player_side self.width = width self.height = height if difficult == 1: player_speed = 5 computer_speed = 3 elif difficult == 2: player_speed = 4 computer_speed = 3.5 elif difficult == 3: player_speed = 3 computer_speed = 4 else: player_speed = 4 computer_speed = 4 if player_side is None: player1_side = False player2_side = True else: player1_side = player_side player2_side = not player_side self.desk = Desk(master, width=width, height=height) self.player1 = Player(self, width=racket_width, height=racket_height, side=player1_side, speed=player_speed, color=rackets_color) self.player2 = Player(self, width=racket_width, height=racket_height, side=player2_side, speed=computer_speed, color=rackets_color) self.ball = Ball(self.desk, ball_width, ball_height, ball_color)
def __init__(self, debug=False, desk=None): self.staff = [] #self.office = [Desk(True)] _desk = desk or Desk(False) self.inbox = _desk.inbox self.outbox = _desk.outbox self.result = None
def desk_add_page(): db = current_app.config["db"] form = DeskEditForm() languages = db.get_languages() if form.validate_on_submit(): deskName = form.data["deskName"] languageID = request.form['languageID'] db = current_app.config["db"] desk = Desk(deskName) deskID = db.add_desk(desk, current_user.userID, languageID) flash("Desk added.") return redirect(url_for("desk_page", deskID=deskID)) return render_template("desk_edit.html", form=form, languages=languages)
def get_desks(self, ID): desks = [] query = "SELECT deskID, deskName, languageID FROM desk NATURAL JOIN userdesks WHERE (userID = %s) ORDER BY deskID" cursor = self.dbfile.cursor() cursor.execute(query, (ID, )) for deskID, deskName, languageID in cursor: if languageID is not None: langstr = self.get_language(languageID) else: langstr = "" desk = Desk(deskName) desks.append((deskID, desk, langstr)) return desks
def desk_edit_page(deskID): db = current_app.config["db"] desk = db.get_desk(deskID)[0] form = DeskEditForm() languages = db.get_languages() if form.validate_on_submit(): deskName = form.data["deskName"] languageID = request.form['languageID'] desk = Desk(deskName) db.update_desk(deskID, desk, languageID) flash("Desk data updated.") return redirect(url_for("desk_page", deskID=deskID)) form.deskName.data = desk.deskName return render_template("desk_edit.html", form=form, languages=languages)
def search_desks(self, search): desks = [] query = "SELECT * FROM desk WHERE deskName LIKE %s" cursor = self.dbfile.cursor() search = '%' + search + '%' cursor.execute(query, (search, )) for deskID, deskName, languageID in cursor: if languageID is not None: langstr = self.get_language(languageID) else: langstr = "" desk = Desk(deskName) desks.append((deskID, desk, langstr)) return desks
def __load_desk_dictionary(self): """ Load the config file and initialize the desk mapping object :return: None """ # Get info for each desk for d in CONFIG.desks: # Initialize sensor sensor_obj = OmronD6T(d.sensor.i2c_bus, d.sensor.i2c_address) # Append id, pin, desk object to map self.__desk_dict[d.id] = (sensor_obj, Desk(d.name, d.id)) # Print additional information in debug mode if CONFIG.debug_config.enabled: print( f"Added Desk to DeskSensorTable: [ID]: {d.id}, [Name]: {d.name}, [Sensor Type]: {d.sensor.sensor_type}" )
def main(): config = Config() sensor = UltrasonicSensor(config.sensorConfig) desk = Desk(config.deskConfig, sensor) desk.stop() s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.bind(('', 80)) s.listen(5) sPoller = uselect.poll() sPoller.register(s, uselect.POLLIN) while True: # Poll every 10 milliseconds for a connection res = sPoller.poll(10) if res: conn, addr = s.accept() # print('Got a connection from %s' % str(addr)) statusCode, response = handle(conn) sendResponse(statusCode, response) else: desk.adjust()
def refresh_desk(self): time.sleep(2) d = Desk(self.side, self.desk_coords) self.position = d.get_position() print 'refreshed'
def __init__(self): self.staff = [] self.office = [Desk(False)] self.log = secretary.hire( "Program", debug=True, logfile=\ ("run" + datetime.now().strftime('%y%m%d') + ".log") )
def setup(): global d print("Main starting") d = Desk(b'\xe6\xcc\xe3W\x9aA') print("Connected")
def __init__(self, camera_attached=False, useIK=True, # uses IK by default! actionRepeat=50, renders=False, camera_view=0, task_switch_camera_view=False, maxSteps=100, simulatedGripper=True, # 2-finger gripper randObjPos=False, task=0, # target number learning_param=0, sampling_freq = 240.0): self.name = 'ur5GymEnv' self.sampling_freq = sampling_freq # simulation sampling frequency self.pix_size = 0.003125 self.obj_ids = {'fixed': [], 'rigid': [], 'deformable': []} self.rest_poses = [-math.pi, -math.pi/2, math.pi/2, -math.pi/2, -math.pi/2, 0] # self.agent_cams = cameras.RealSenseD415.CONFIG self.assets_root = 'assets/' self.simulatedGripper = simulatedGripper self.renders = renders self.actionRepeat = actionRepeat self.useIK = useIK self.maxSteps = maxSteps self.randObjPos = randObjPos self.task = task self.learning_param = learning_param self.offset = 0.15 # random object pos max offsets self.desired_pick_height = 0.2 # desired height to reach for picking up objects # setup pybullet sim: if self.renders: pybullet.connect(pybullet.GUI) target = pybullet.getDebugVisualizerCamera()[11] if camera_view==0 or (task_switch_camera_view and task==0): pybullet.resetDebugVisualizerCamera(cameraDistance=0.1, cameraYaw=180, cameraPitch=-35, cameraTargetPosition=[0.0, 0.5, 0.85]) # regular elif camera_view==1 or (task_switch_camera_view and task==2): pybullet.resetDebugVisualizerCamera(cameraDistance=0.2, cameraYaw=90, cameraPitch=-10, cameraTargetPosition=[1.0, 0.0, 0.7]) # side view button side elif camera_view==2: pybullet.resetDebugVisualizerCamera(cameraDistance=0.2, cameraYaw=270, cameraPitch=-10, cameraTargetPosition=[-1.0, 0.0, 0.7]) # side view slide side else: pybullet.connect(pybullet.DIRECT) pybullet.setTimeStep(1./self.sampling_freq) pybullet.setGravity(0,0,-9.8) pybullet.setRealTimeSimulation(False) # pybullet.setRealTimeSimulation(True) pybullet.configureDebugVisualizer(pybullet.COV_ENABLE_RENDERING, 0) self.gox = pybullet.addUserDebugParameter("orientationX",-3.14, 3.14, 0) self.goy = pybullet.addUserDebugParameter("orientationY",-3.14, 3.14, 0) self.goz = pybullet.addUserDebugParameter("orientationZ",-3.14, 3.14, 0) self.gow = pybullet.addUserDebugParameter("orientationW",-3.14, 3.14, 1) pybullet.configureDebugVisualizer(pybullet.COV_ENABLE_GUI, 0) pybullet.setPhysicsEngineParameter(enableFileCaching=0) # pybullet.configureDebugVisualizer(pybullet.COV_ENABLE_WIREFRAME,1) # floor: self.plane = pybullet.loadURDF(PLANE_URDF_PATH, [0, 0, -0.001]) # setup desk: self.desk = Desk() # setup robot arm: self.ur5 = UR5() # object: self.initial_obj_pos = [0.2, -0.5, 0.6] # initial object pos self.initial_target_pos = [0.4, -0.1, 0.0] # initial drop-off position self.obj = pybullet.loadURDF(CUBE_URDF_PATH, self.initial_obj_pos) self.obj_ids['rigid'].append(self.obj) # gym info: # color_tuple = [ # gym.spaces.Box(0, 255, config['image_size'] + (3,), dtype=np.uint8) # for config in self.ur5.agent_cams # ] # depth_tuple = [ # gym.spaces.Box(0.0, 20.0, config['image_size'], dtype=np.float32) # for config in self.ur5.agent_cams # ] # self.observation_space = gym.spaces.Dict({ # 'color': gym.spaces.Tuple(color_tuple), # 'depth': gym.spaces.Tuple(depth_tuple), # }) self._action_bound = 1.0 # delta limits action_high = np.array([self._action_bound] * self.ur5.action_dim) self.action_space = spaces.Box(-action_high, action_high, dtype='float32') pybullet.configureDebugVisualizer(pybullet.COV_ENABLE_RENDERING, 1) self.reset()
class Nucleus(QtGui.QMainWindow): """ Nucleus is a Sulzer software application that aims to track, schedule, and optimize the work performed by the CAD Department at Sulzer RES La Porte. Parameters ---------- app_data : AppData Core application data source. Attributes ---------- status : StatusBar menu_view : MenuView part_locator : PartLocator weekend_signup : WeekendSignUp weekend_roster : WeekendRoster desk : Desk """ def __init__(self, app_data): self.app_data = app_data # Build GUI super(Nucleus, self).__init__() self.resize(1100, 600) setters.set_uniform_margins(self, 15) self.setWindowTitle('Nucleus 2020') self.status = StatusBar(self) self.set_menu() self.set_docks() self.desk = Desk(self.app_data, self.status, self.on_click_context) self.setCentralWidget(self.desk) self.show() def set_docks(self): """Display ``QDockWidgets`` per user registration level.""" self.part_locator = PartLocator(Path.PART_LOC_XLSX) self.addDockWidget(QtCore.Qt.RightDockWidgetArea, self.part_locator.view) if self.app_data.users.my_level is None: # User is not registered return self.weekend_roster = WeekendRoster(self.app_data.users) self.addDockWidget(QtCore.Qt.RightDockWidgetArea, self.weekend_roster.view) self.weekend_signup = WeekendSignUp(self.app_data.users.my_folder) self.addDockWidget(QtCore.Qt.RightDockWidgetArea, self.weekend_signup.view) if self.app_data.users.my_level == 'Technician': self.weekend_roster.view.hide() def set_menu(self): """Set ``MenuBar`` state per user registration level.""" self.menu_view = MenuView(self) if self.app_data.users.my_level is None: # Disable certain features for non-registered members. self.menu_view.file_menu.setEnabled(False) self.menu_view.view_menu.setEnabled(False) self.menu_view.admin_menu.setEnabled(False) else: self.menu_view.new.triggered.connect(self.on_click_new) self.menu_view.open.triggered.connect(self.on_click_open) self.menu_view.save.triggered.connect(self.on_click_save) self.menu_view.complete.triggered.connect(self.on_click_complete) self.menu_view.active_projects.triggered.connect( lambda: ActiveProjectsDialog().exec_()) self.menu_view.upload_data.triggered.connect(self.on_click_upload) # Visible to all users. self.menu_view.about.triggered.connect(lambda: AboutDialog().exec_()) self.menu_view.version.triggered.connect( lambda: startfile(Path.VERSION_DOC)) def on_click_new(self): """Process a request to create a new ``Job``.""" job_num, ok = QtGui.QInputDialog.getInt(self, 'New', 'Job Number:') if ok: job_num = str(job_num) request = NewJobRequest(job_num, self.app_data.users.log) try: # An approved request initializes job files and directories. if request.approved(): self.load_job(job_num) except (JobNumberError, ExistingJobError, OSError, WorkspaceError, IOError, UnknownError) as error: ExceptionMessageBox(error).exec_() def on_click_open(self): """Prompt user for job number input.""" job_num, ok = QtGui.QInputDialog.getInt(self, 'Open', 'Job Number:') if ok: self.process_open_job_request(str(job_num)) def process_open_job_request(self, job_num): """Process a request to open an existing ``Job``. Parameters ---------- job_num : str The 6-digit job number. """ try: if len(job_num) != 6: raise JobNumberError() self.load_job(job_num) except (JobNumberError, OSError, JobNotFoundError, JobInUseError, IOError, EOFError) as error: ExceptionMessageBox(error).exec_() def on_click_save(self): """Process a request to save ``Job`` data.""" self.desk.save() def on_click_complete(self): """Initiate a request to complete the active ``JobFolder``.""" try: job_num = self.desk.active_folder job_folder = self.desk.job_folder(job_num) job, lock = job_folder.job_and_lock() if self.process_complete_job_request(job_num, job, lock): self.desk.close_folder(job_num) except KeyError: # If 'Home' interface is active. self.status.showMessage('Cannot complete a job in this context.', 2000) def process_complete_job_request(self, job_num, job=None, lock=None): """Process a request to remove job files from ``Nucleus``. Parameters ---------- job_num : str The 6-digit job number. job : Job or None A collection of work orders requesting completion. lock : GateKeeper or None Controls read and write access to `job` applicaton files. Returns ------- True If `job` files were removed from ``Nucleus``. """ self.app_data.users.log('initiating a complete job request for %s' % job_num) request = CompleteJobRequest( job_num, self.app_data.users.supervisor_email_addresses, job, lock) try: if not request.approved(): self.app_data.users.log( '%s complete job request was not approved' % job_num) return except (JobInUseError, IOError, EOFError, ProjectsFolderRootError, DestinationError) as error: self.app_data.users.log(error) ExceptionMessageBox(error).exec_() else: self.status.showMessage('Updating your jobs...') self.desk.refresh_home() # Log data to user file self.app_data.users.log('%s completed, due by %s' % (job_num, JobIO.job_due_date(job))) self.app_data.users.log('%s drawing count: %d' % (job_num, request.dwg_count)) for project in request.projects: self.app_data.users.log('project:%s,%s' % (request.projects[project].alias_num, request.projects[project].owner)) self.status.showMessage('%s closed successfully.' % job_num) return True def is_admin(self): """Confirm that a user has admin credentials for a restricted action. Returns ------- True If user has admin credentials. Raises ------ PasswordError If user enters incorrect password. """ password, ok = QtGui.QInputDialog.getText( self, 'Admin', 'Password:'******'attempting to log in as admin') if ok: if password == 'respect': return True raise PasswordError() def on_click_upload(self): """Process request to load work center data.""" try: if self.is_admin(): self._intent = GetWorkCenterSource() except PasswordError as error: ExceptionMessageBox(error).exec_() self.on_click_upload() else: self.desk.refresh_home() def load_job(self, job_num): """Send a ``Job`` to `desk` and open for viewing. Parameters ---------- job_num : str The 6-digit job number. Raises ------ JobNotFoundError JobInUseError IOError EOFError """ job, lock = JobIO.job_and_lock(job_num) self.desk.open_job_folder(job, lock) def closeEvent(self, event): """Verify that `desk` does not have open ``JobFolders`` before closing window. Parameters ---------- event : QEvent Window close. """ if self.desk.cleared: self.app_data.users.log('logged out') event.accept() else: OrphanMessageBox('Info', ['Open jobs must be closed before exiting.'], 'information').exec_() event.ignore() def on_click_context(self): """Process a context menu selection.""" action = str(self.desk.home.schedule.sender().text()) if action == 'Open': self.process_open_job_request( self.desk.home.schedule.selected_job_num) elif action == 'Complete': job_num = self.desk.home.schedule.selected_job_num if self.desk.folder_index(job_num): # folder_index is used to determine if the associated # JobFolder is open. If the user already has this JobFolder # open, route this process to the file menu action. self.desk.activate_folder(job_num) self.on_click_complete() else: self.process_complete_job_request(job_num) elif action == 'Refresh': self.desk.refresh_home()
def __init__(self): d = Desk() self.position = d.get_position() self.side = d.side self.desk_coords = d.desk_coords self.desk = d
from desk import Desk peter_game = Desk() peter_game.shuffle() #peter_game.print_all() peter_game.setup_player("Peter") peter_game.setup_player("Sally") peter_game.setup_table() peter_game.print_table() print "############################# GAME START ###################################" #peter_game.Players[0].take_coin([0,0,0,0,0,1]) peter_game.take_coin(peter_game.Players[0], [0, 2, 0, 0, 0]) #peter_game.print_table() peter_game.take_coin(peter_game.Players[0], [2, 0, 0, 0, 0]) #peter_game.print_table() peter_game.take_coin(peter_game.Players[0], [0, 0, 2, 0, 0]) #peter_game.print_table() peter_game.take_coin(peter_game.Players[0], [0, 0, 0, 2, 0]) #peter_game.print_table() peter_game.take_coin(peter_game.Players[0], [0, 0, 0, 0, 2]) peter_game.take_coin(peter_game.Players[0], [0, 0, 1, 1, 1]) peter_game.take_coin(peter_game.Players[0], [0, 1, 1, 1, 0]) peter_game.take_coin(peter_game.Players[0], [1, 1, 1, 0, 0]) print "================= take coins ===================" peter_game.print_table() print "================= take cards ===================" #peter_game.print_table() peter_game.take_card(peter_game.Players[0],
def get_move(self): old_position = self.position d = Desk(self.side, self.desk_coords) position = d.get_position() diff = position.symmetric_difference(old_position) print '#'*10 print 'old' print old_position print '#'*10 print 'new' print position print '#'*10 print 'diff' print diff print '#'*10 from_move = None to_move = None figure = '' if len(diff) == 2: # Просто ход фигуры и пешка дошла до края from_figure = None to_figure = None for i in diff: if {i}.issubset(old_position): from_move = i[0] from_figure = i[1] else: to_move = i[0] to_figure = i[1] if to_figure != from_figure: figure = to_figure[0] elif len(diff) == 3: # Срубили фигуру и взятие на проходе fig = None for i in diff: if {i}.issubset(position): to_move = i[0] fig = i[1] for i in diff: if i[1] == fig and i[0] != to_move: from_move = i[0] elif len(diff) == 4: # Рокировка for i in diff: if i[1][0] == 'k': if {i}.issubset(old_position): from_move = i[0] else: to_move = i[0] # elif len(diff) == 0: # return None # else: # print diff # plot(d.desk) if from_move is None: return None else: step = '%s%s%s' %(from_move, to_move, figure) return step