Beispiel #1
0
    def launchGame():

        # Reproducimos la musica de fondo
        AudioController.playMusic(eMusic.PICKING)

        # Mostramos el Splash de inicio
        View.showScreen(eScreen.SPLASH_START)
Beispiel #2
0
 def __init__(self):
     
     self.inpt= {            # just the default to start with
                     "wind": 3,
                     "solar": 500,
                      "albedo": 0.25, 
                      "airt": 15,
                      "sfc": "grass (dry)",
                      "rs": 40,
                      "vp": 10,
                      "smd": 10
                     }
     self.rblist = [500.0, -30.0, 300.0, 200.0]
     self.eblist = [300.0, 100.0, 150.0, 200.0]
     # Polynomial fit to Graham Russell's smd fit for cereals
     # yfit = a*x**3+b*x+c   where x is smd in mm
     self.smdfit = [1.27791987e-04, -9.56796959e-02,  3.95338027e+01]
     self.mod = Model(self.inpt)
     self.tlist = self.mod.tlist
     self.vw = View(self.rblist, self.eblist, self.tlist)
     self.sfcs = ["grass (dry)","bare soil (dry)","cereals (dry)",
         "conifers (dry)","upland (dry)","grass (wet)", "bare soil (wet)",
         "cereals (wet)","conifers (wet)", "upland (wet)", "water"]
     self.bit_wind = widgets.BoundedIntText(value = self.inpt["wind"], min=1,  max=15, step=1, 
                                  description="u ($m \ s^{-1}$)", width=50)
     self.bit_solar = widgets.BoundedIntText(value = self.inpt["solar"], min=1, max=1000, step=10, 
                                     description="solar ($W m^{-2}$)", width=50)
     self.bit_vp = widgets.BoundedIntText(value =self.inpt["vp"], min=1, max=40, step=1, 
                                     description="vp (mbar)", width=50)
     self.dd_surface = widgets.Dropdown(value =self.inpt["sfc"], options=self.sfcs, 
                                    description="surface", width=50)
     self.bit_smd = widgets.BoundedIntText(value=self.inpt["smd"], min=1, max=180, step=5, 
                                    description="smd (mm)", width=50)
     self.bit_airt = widgets.BoundedIntText(value=self.inpt["airt"], min=-5, max=40, step=1, 
                                    description="air T (oC)", width=50)
     self.txt_rs = widgets.Text(description="rs")
     self.txt_rh  = widgets.Text(description="RH (%)")                              
     self.txt_le = widgets.Text(description="LE")
     self.txt_ra = widgets.Text(description="ra")
     # First time round to populate output boxes
     self.rblist, self.eblist, self.tlist, self.olist = self.mod.calculateLE(self.inpt)
     self.txt_rs.value = str('{0:.0f}'.format(self.olist[0]))
     self.txt_rh.value = str('{0:.1f}'.format(self.olist[1]))
     self.txt_le.value = str('{0:.1f}'.format(self.olist[2]))
     self.txt_ra.value = str('{0:.0f}'.format(self.olist[3]))
     
     self.bit_wind.observe(self.bit_wind_eventhandler, names='value')
     self.bit_solar.observe(self.bit_solar_eventhandler, names='value')
     self.bit_vp.observe(self.bit_vp_eventhandler, names='value')
     self.dd_surface.observe(self.dd_surface_eventhandler, names='value')
     self.bit_smd.observe(self.bit_smd_eventhandler, names='value')
     self.bit_airt.observe(self.bit_airt_eventhandler, names='value')
     self.h0 = widgets.HBox(children=[self.dd_surface, self.bit_smd])
     self.h1 = widgets.HBox(children=[self.bit_solar, self.bit_wind])
     self.h2 = widgets.HBox(children=[self.bit_airt, self.bit_vp, self.txt_rh])
     self.h3 = widgets.HBox(children=[self.txt_ra, self.txt_rs, self.txt_le])
Beispiel #3
0
    def __init__(self, configFile, limit, register):
        """
        Initializes client with a given parameters

        :param configFile:
        :param limit:
        :param register:
        :type configFile: str
        :type limit: int
        :type register: bool
        """
        self.userData = {'username': None, 'password': None}
        try:
            self.config = Config(configFile)
            self.request = Request()
            self.collection = None
            self.view = View(limit)
            self.registerMode = register
        except OSError:
            filename = configFile
            print(f"InitError: Configuration file {filename} can\'t be found!")
            exit(1)
Beispiel #4
0
    def doInit():

        # Inicializamos PyGame
        pygame.init()
        pygame.font.init()
        pygame.mixer.init(GlobalsController.AUDIO_FREQ,
                          GlobalsController.AUDIO_BITSIZE,
                          GlobalsController.AUDIO_CHANNELS,
                          GlobalsController.AUDIO_BUFFER)
        pygame.mixer.set_num_channels(23)

        # Inicializamos la View
        View().doInit()

        # Inicializamos los modulos del Controller que lo requieran
        FontController.doInit()
        ResourceController.doInit()
Beispiel #5
0
# Parsing command line arguments
parser = argparse.ArgumentParser()

parser.add_argument('-s', dest='size', type=int)
parser.add_argument('-b', dest='blanks', action='store_true')
parser.add_argument('-e', dest='expectimax', action='store_true')
parser.add_argument('-p', dest='prune', action='store_true')
results = parser.parse_args()

if not results.size:
    results.size = 15

rules = ScrabbleRules(blanks=results.blanks, size=results.size)
state = GameState(blanks=results.blanks, size=results.size)
view = View()

agent_0 = Agent()
agent_1 = Agent()
state.add_agent(0, agent_0)
state.add_agent(1, agent_1)
state.place('A', [(results.size // 2, results.size // 2)], 0, rules)
state.draw(0)
state.draw(1)

# Play
agents = [0, 1]
try:
    while True:
        for agent in agents:
            state.draw(agent)
Beispiel #6
0
class pminterface():

    def __init__(self):
        
        self.inpt= {            # just the default to start with
                        "wind": 3,
                        "solar": 500,
                         "albedo": 0.25, 
                         "airt": 15,
                         "sfc": "grass (dry)",
                         "rs": 40,
                         "vp": 10,
                         "smd": 10
                        }
        self.rblist = [500.0, -30.0, 300.0, 200.0]
        self.eblist = [300.0, 100.0, 150.0, 200.0]
        # Polynomial fit to Graham Russell's smd fit for cereals
        # yfit = a*x**3+b*x+c   where x is smd in mm
        self.smdfit = [1.27791987e-04, -9.56796959e-02,  3.95338027e+01]
        self.mod = Model(self.inpt)
        self.tlist = self.mod.tlist
        self.vw = View(self.rblist, self.eblist, self.tlist)
        self.sfcs = ["grass (dry)","bare soil (dry)","cereals (dry)",
            "conifers (dry)","upland (dry)","grass (wet)", "bare soil (wet)",
            "cereals (wet)","conifers (wet)", "upland (wet)", "water"]
        self.bit_wind = widgets.BoundedIntText(value = self.inpt["wind"], min=1,  max=15, step=1, 
                                     description="u ($m \ s^{-1}$)", width=50)
        self.bit_solar = widgets.BoundedIntText(value = self.inpt["solar"], min=1, max=1000, step=10, 
                                        description="solar ($W m^{-2}$)", width=50)
        self.bit_vp = widgets.BoundedIntText(value =self.inpt["vp"], min=1, max=40, step=1, 
                                        description="vp (mbar)", width=50)
        self.dd_surface = widgets.Dropdown(value =self.inpt["sfc"], options=self.sfcs, 
                                       description="surface", width=50)
        self.bit_smd = widgets.BoundedIntText(value=self.inpt["smd"], min=1, max=180, step=5, 
                                       description="smd (mm)", width=50)
        self.bit_airt = widgets.BoundedIntText(value=self.inpt["airt"], min=-5, max=40, step=1, 
                                       description="air T (oC)", width=50)
        self.txt_rs = widgets.Text(description="rs")
        self.txt_rh  = widgets.Text(description="RH (%)")                              
        self.txt_le = widgets.Text(description="LE")
        self.txt_ra = widgets.Text(description="ra")
        # First time round to populate output boxes
        self.rblist, self.eblist, self.tlist, self.olist = self.mod.calculateLE(self.inpt)
        self.txt_rs.value = str('{0:.0f}'.format(self.olist[0]))
        self.txt_rh.value = str('{0:.1f}'.format(self.olist[1]))
        self.txt_le.value = str('{0:.1f}'.format(self.olist[2]))
        self.txt_ra.value = str('{0:.0f}'.format(self.olist[3]))
        
        self.bit_wind.observe(self.bit_wind_eventhandler, names='value')
        self.bit_solar.observe(self.bit_solar_eventhandler, names='value')
        self.bit_vp.observe(self.bit_vp_eventhandler, names='value')
        self.dd_surface.observe(self.dd_surface_eventhandler, names='value')
        self.bit_smd.observe(self.bit_smd_eventhandler, names='value')
        self.bit_airt.observe(self.bit_airt_eventhandler, names='value')
        self.h0 = widgets.HBox(children=[self.dd_surface, self.bit_smd])
        self.h1 = widgets.HBox(children=[self.bit_solar, self.bit_wind])
        self.h2 = widgets.HBox(children=[self.bit_airt, self.bit_vp, self.txt_rh])
        self.h3 = widgets.HBox(children=[self.txt_ra, self.txt_rs, self.txt_le])
        
    def reset_sfc(self,sfc):
        self.inpt= {            # just the default to start with
                        "wind": 3,
                        "solar": 500,
                         "albedo": self.mod.srftype[sfc]['albedo'], 
                         "airt": 15,
                         "sfc": sfc,
                         "rs": self.mod.srftype[sfc]['minrs'],
                         "vp": 10,
                         "smd": 10
                        }
        self.rblist = [500.0, -30.0, 300.0, 200.0]
        self.eblist = [300.0, 100.0, 150.0, 200.0]
        return self.inpt
        
    def func2(self, x, a, b, c):
        '''
        returns bulk surface resistance
        from a polynomial fit to Graham Russell's Data
        x is smd, a,b,c are polynomial fit
        '''
        return a*x**3+b*x+c
           
    def bit_wind_eventhandler(self,change):
        self.bit_wind.observe(self.bit_wind_eventhandler, names='value')
        self.inpt["wind"]=self.bit_wind.value
        self.rblist, self.eblist, self.tlist, self.olist = self.mod.calculateLE(self.inpt)
        self.txt_rs.value = str('{0:.0f}'.format(self.olist[0]))
        self.txt_rh.value = str('{0:.1f}'.format(self.olist[1]))
        self.txt_le.value = str('{0:.1f}'.format(self.olist[2]))
        self.txt_ra.value = str('{0:.0f}'.format(self.olist[3]))
        self.vw.redraw(self.rblist, self.eblist, self.tlist)
        
    def bit_smd_eventhandler(self,change):
        self.bit_smd.observe(self.bit_smd_eventhandler, names='value')
        self.inpt["smd"]=self.bit_smd.value
        # Use Russell fit to find rs from smd
        # Check that rs offset varies by surface
        self.inpt["rs"] = self.func2(self.inpt["smd"], self.smdfit[0],
            self.smdfit[1], self.mod.srftype[self.inpt["sfc"]]['minrs'])
        self.rblist, self.eblist, self.tlist, self.olist = self.mod.calculateLE(self.inpt)
        self.txt_rs.value = str('{0:.0f}'.format(self.olist[0]))
        self.txt_rh.value = str('{0:.1f}'.format(self.olist[1]))
        self.txt_le.value = str('{0:.1f}'.format(self.olist[2]))
        self.txt_ra.value = str('{0:.0f}'.format(self.olist[3]))
        self.vw.redraw(self.rblist, self.eblist, self.tlist)

    def dd_surface_eventhandler(self,change):
        self.dd_surface.observe(self.dd_surface_eventhandler, names='value')
        self.inpt["sfc"]=self.dd_surface.value
        self.inpt = self.reset_sfc(self.inpt["sfc"])
        self.bit_solar.value = self.inpt["solar"]
        self.bit_wind.value = self.inpt["wind"]
        self.bit_vp.value = self.inpt["vp"]
        self.bit_smd.value = self.inpt["smd"]
        self.bit_airt.value = self.inpt["airt"]
        self.rblist, self.eblist, self.tlist, self.olist = self.mod.calculateLE(self.inpt)
        self.txt_rs.value = str('{0:.0f}'.format(self.olist[0]))
        self.txt_rh.value = str('{0:.1f}'.format(self.olist[1]))
        self.txt_le.value = str('{0:.1f}'.format(self.olist[2]))
        self.txt_ra.value = str('{0:.0f}'.format(self.olist[3]))
        self.vw.redraw(self.rblist, self.eblist, self.tlist)
        
    def bit_solar_eventhandler(self,change):
        self.bit_solar.observe(self.bit_solar_eventhandler, names='value')
        self.inpt["solar"]=self.bit_solar.value
        self.rblist, self.eblist, self.tlist, self.olist = self.mod.calculateLE(self.inpt)
        self.txt_rs.value = str('{0:.0f}'.format(self.olist[0]))
        self.txt_rh.value = str('{0:.1f}'.format(self.olist[1]))
        self.txt_le.value = str('{0:.1f}'.format(self.olist[2]))
        self.txt_ra.value = str('{0:.0f}'.format(self.olist[3]))
        self.vw.redraw(self.rblist, self.eblist, self.tlist)

    def bit_vp_eventhandler(self,change):
        self.bit_vp.observe(self.bit_vp_eventhandler, names='value')
        self.inpt["vp"]=self.bit_vp.value
        self.rblist, self.eblist, self.tlist, self.olist = self.mod.calculateLE(self.inpt)
        self.txt_rs.value = str('{0:.0f}'.format(self.olist[0]))
        self.txt_rh.value = str('{0:.1f}'.format(self.olist[1]))
        self.txt_le.value = str('{0:.1f}'.format(self.olist[2]))
        self.txt_ra.value = str('{0:.0f}'.format(self.olist[3]))
        self.vw.redraw(self.rblist, self.eblist, self.tlist)

    def bit_airt_eventhandler(self,change):
        self.bit_airt.observe(self.bit_airt_eventhandler, names='value')
        self.inpt["airt"]=self.bit_airt.value
        self.rblist, self.eblist, self.tlist, self.olist = self.mod.calculateLE(self.inpt)
        self.txt_rs.value = str('{0:.0f}'.format(self.olist[0]))
        self.txt_rh.value = str('{0:.1f}'.format(self.olist[1]))
        self.txt_le.value = str('{0:.1f}'.format(self.olist[2]))
        self.txt_ra.value = str('{0:.0f}'.format(self.olist[3]))
        self.vw.redraw(self.rblist, self.eblist, self.tlist)
Beispiel #7
0
class Client(object):
    """
    Client which offers basic methods of the application
    """
    def __init__(self, configFile, limit, register):
        """
        Initializes client with a given parameters

        :param configFile:
        :param limit:
        :param register:
        :type configFile: str
        :type limit: int
        :type register: bool
        """
        self.userData = {'username': None, 'password': None}
        try:
            self.config = Config(configFile)
            self.request = Request()
            self.collection = None
            self.view = View(limit)
            self.registerMode = register
        except OSError:
            filename = configFile
            print(f"InitError: Configuration file {filename} can\'t be found!")
            exit(1)

    def loadUserData(self):
        """
        Loads username and password from keyboard when it's typed by user

        :return: returns None
        """
        try:
            self.userData['username'] = input('username: '******'password'] = getpass.getpass('password: '******'auth'),
                                  self.userData['username'],
                                  self.userData['password'])

    def register(self):
        """
        Provides functionality of registration on JWT authorization server

        :return: returns registration response parsed as JSON
        """
        print("Please type new username and password "
              "to be registered on authorization server")
        self.loadUserData()
        password2 = getpass.getpass('retype password: '******'password'] != password2:
            print("Error: You didn't enter the same passwords. "
                  "Please try it again.")
            exit(0)
        return self.request.register(self.config.get('auth'),
                                     self.userData['username'],
                                     self.userData['password'])

    def displayLoop(self):
        """
        Displays online results in a neverending loop

        :return: returns None
        """
        if self.collection is None:
            print("You didn't prepare measurement collection")
            exit(1)
        try:
            while True:
                try:
                    measurements = self.collection.get()
                    self.view.display(measurements)
                    sleep(1)
                except ResponseError as error:
                    print("LoadDataError: " + str(error))
        except KeyboardInterrupt:
            print()
            print("ResMon client has been closed successfully")
            pass

    def run(self):
        """
        Runs the client

        :return: returns None
        """
        loginResult = {}
        try:
            if self.registerMode:
                loginResult = self.register()
            else:
                loginResult = self.login()
        except ResponseError as error:
            print("AuthError: " + str(error) + ". Please try to log in again.")
            exit(1)
        authToken = loginResult['access_token']
        self.collection = MeasurementsCollection(self.config.get('monitors'),
                                                 authToken)

        self.displayLoop()
        exit(0)
Beispiel #8
0
from src.Controller import Controller
from src.Repository import Repository
from src.View import View

temperature_filename = "../data/temperature.dat"
humidity_filename = "../data/humidity.dat"
time_filename = "../data/time.dat"
table_filename = "../data/table.dat"

if __name__ == '__main__':
    temperature_repository = Repository(temperature_filename)

    controller = Controller(Repository(temperature_filename),
                            Repository(humidity_filename),
                            Repository(time_filename), table_filename)

    view = View(controller)

    view.run()
Beispiel #9
0
 def __init__(self):
     self.initDb()
     self.tournament = None
     self.loop = True
     self.view = View()
     self.loopMenu()
Beispiel #10
0
    def __init__(self, parent=None):
        QMainWindow.__init__(self, parent)

        self.resize(800, 800)
        self.setFont(QFont('Verdana')) 
        self.setWindowTitle('Sand Table')

        self.i = 0

        self.timer = QTimer(self)
        self.timer.setInterval(700)
        self.timer.timeout.connect(self.collapse)

        self.table = Table(3, 3, 4, self)

        self.tableView = View(self)
        self.tableView.setModel(self.table)
        #self.tableView.doubleClicked.connect(self.addOne)

        horizontal = QHeaderView(Qt.Horizontal)
        horizontal.setResizeMode(QHeaderView.Stretch)
        self.tableView.setHorizontalHeader(horizontal)

        vertical = QHeaderView(Qt.Vertical)
        vertical.setResizeMode(QHeaderView.Stretch)
        self.tableView.setVerticalHeader(vertical)

        self.collapseButton = QPushButton('Collapse', self)
        self.collapseButton.clicked.connect(self.collapse)
        self.collapseAllButton = QPushButton('Collapse All', self)
        self.collapseAllButton.clicked.connect(self.table.collapseAll)
        self.collapseAutoButton = QPushButton('Start Auto Collapse', self)
        self.collapseAutoButton.clicked.connect(self.toogleAuto)

        self.reloadButton = QPushButton('Reload', self)
        self.reloadButton.clicked.connect(self.load)
        self.saveButton = QPushButton('Save', self)
        self.saveButton.clicked.connect(self.save)

        self.clearButton = QPushButton('Clear', self)
        self.clearButton.clicked.connect(self.clear)
        
        self.reloadButton.setEnabled(False)
        self.saveButton.setEnabled(False)

        widget = QWidget(self)
        layout = QHBoxLayout()
        subLayout = QVBoxLayout()

        layout.addWidget(self.tableView)
        subLayout.addWidget(self.collapseButton)
        subLayout.addWidget(self.collapseAllButton)
        subLayout.addWidget(self.collapseAutoButton)
        subLayout.addWidget(self.clearButton)
        subLayout.addWidget(self.reloadButton)
        subLayout.addWidget(self.saveButton)
        layout.addLayout(subLayout)

        widget.setLayout(layout)
        self.setCentralWidget(widget)

        self.statusBar().showMessage('Welcome')
Beispiel #11
0
class MainWindow(QMainWindow):
    def __init__(self, parent=None):
        QMainWindow.__init__(self, parent)

        self.resize(800, 800)
        self.setFont(QFont('Verdana')) 
        self.setWindowTitle('Sand Table')

        self.i = 0

        self.timer = QTimer(self)
        self.timer.setInterval(700)
        self.timer.timeout.connect(self.collapse)

        self.table = Table(3, 3, 4, self)

        self.tableView = View(self)
        self.tableView.setModel(self.table)
        #self.tableView.doubleClicked.connect(self.addOne)

        horizontal = QHeaderView(Qt.Horizontal)
        horizontal.setResizeMode(QHeaderView.Stretch)
        self.tableView.setHorizontalHeader(horizontal)

        vertical = QHeaderView(Qt.Vertical)
        vertical.setResizeMode(QHeaderView.Stretch)
        self.tableView.setVerticalHeader(vertical)

        self.collapseButton = QPushButton('Collapse', self)
        self.collapseButton.clicked.connect(self.collapse)
        self.collapseAllButton = QPushButton('Collapse All', self)
        self.collapseAllButton.clicked.connect(self.table.collapseAll)
        self.collapseAutoButton = QPushButton('Start Auto Collapse', self)
        self.collapseAutoButton.clicked.connect(self.toogleAuto)

        self.reloadButton = QPushButton('Reload', self)
        self.reloadButton.clicked.connect(self.load)
        self.saveButton = QPushButton('Save', self)
        self.saveButton.clicked.connect(self.save)

        self.clearButton = QPushButton('Clear', self)
        self.clearButton.clicked.connect(self.clear)
        
        self.reloadButton.setEnabled(False)
        self.saveButton.setEnabled(False)

        widget = QWidget(self)
        layout = QHBoxLayout()
        subLayout = QVBoxLayout()

        layout.addWidget(self.tableView)
        subLayout.addWidget(self.collapseButton)
        subLayout.addWidget(self.collapseAllButton)
        subLayout.addWidget(self.collapseAutoButton)
        subLayout.addWidget(self.clearButton)
        subLayout.addWidget(self.reloadButton)
        subLayout.addWidget(self.saveButton)
        layout.addLayout(subLayout)

        widget.setLayout(layout)
        self.setCentralWidget(widget)

        self.statusBar().showMessage('Welcome')

    def load(self):
        return 0

        with open('table', 'rb') as fileObj:
            self.table = pickle.load(fileObj)

    def clear(self):
        self.table.clear()

    def collapse(self):
        """Step by step collapse."""
        if(self.table.collapsable() != []):
            for cell in self.table.collapsable():
                self.table.collapse(cell[0], cell[1])
        else:
            self.stop()

    def save(self):
        return 0

        with open('table', 'wb') as fileObj:
            pickle.dump(self.table, fileObj)

    def start(self):
        """Start the timer."""
        if(not self.timer.isActive()):
            self.collapseButton.setEnabled(False)
            self.collapseAllButton.setEnabled(False)
            self.timer.start()
            self.statusBar().showMessage('Auto mode started')
            self.collapseAutoButton.setText('Stop Auto Collapse')

    def toogleAuto(self):
        """Toogle auto collapse"""
        if(not self.timer.isActive()):
            self.start()
        else:
            self.stop()

    def stop(self):
        """Stop the timer."""
        self.timer.stop()
        self.statusBar().showMessage('Auto mode stopped')
        self.collapseAutoButton.setText('Start Auto Collapse')
        self.collapseButton.setEnabled(True)
        self.collapseAllButton.setEnabled(True)

    def addOne(self, index):
        self.table.addOne(index)