Ejemplo n.º 1
0
 def test_not_defence_heal(self):
     #revisa que la defenza no cure a la unidad
     graphics = null_graphics()
     cc = combat_core(graphics)
     first_unit = units(ataque=1, defence=1, hp=1)
     second_unit = units(ataque=0, defence=0, hp=1)
     cc.turn_combat_control(ataquer=first_unit, defender=second_unit)
     self.assertEqual(first_unit.hp, 1)
Ejemplo n.º 2
0
    def test_control(self):
        graphics = null_graphics()
        cc = combat_core(graphics)
        first_unit = units(ataque=1, defence=1, hp=1)
        second_unit = units(ataque=0, defence=0, hp=1)

        cc.turn_combat_control(ataquer=first_unit, defender=second_unit)
        self.assertTrue(second_unit.is_dead())
Ejemplo n.º 3
0
 def test_subtraction(self):
     #revisa que este restando
     graphics = null_graphics()
     cc = combat_core(graphics)
     first_unit = units(ataque=1, defence=1, hp=1)
     second_unit = units(ataque=0, defence=0, hp=1)
     cc.turn_combat_control(ataquer=first_unit, defender=second_unit)
     self.assertEqual(second_unit.hp, 0)
Ejemplo n.º 4
0
 def test_min_0(self):
     #se acegura que la vida no baje de 0 (importante?)
     graphics = null_graphics()
     cc = combat_core(graphics)
     first_unit = units(ataque=1, defence=1, hp=1)
     second_unit = units(ataque=0, defence=0, hp=1)
     cc.turn_combat_control(ataquer=first_unit, defender=second_unit)
     self.assertEqual(second_unit.hp, 0)
Ejemplo n.º 5
0
    def make_planet_menu(self, planet):
        screen_width, screen_height = self.window.get_size()

        self.widget = menu.Widget(PADDING, PADDING, self.event, self.render)
        self.widget.setrect(MENU_WIDTH, screen_height-40)
        build_mine = menu.Menu("build mine", MENU_WIDTH, 40, self.event, self.render, "MINE", ("build_mine", (planet,),), True)
        build_menu = menu.Menu("build menu",MENU_WIDTH, 40,self.event, self.render, "BUILD", None, True)
        unit_menu = menu.Menu("unit menu", MENU_WIDTH, 40,self.event, self.render, "UNIT",None, True)

        self.transport_menu = menu.Menu("transport menu", MENU_WIDTH, 40, self.event, self.render, "TRANSPORT", None, True)      
   
         
        childColor = pygame.Color("grey")
        
        for b in buildings.buildings():
            title = b[1].name
            comment = Input.build_comments[str(b[0])]
            newmenu = menu.Menu(str(b[0]), SUBMENU_WIDTH, 40, self.event, self.render, title, ("build", (planet, b[1])),comment=comment)
            newmenu.colour = childColor;
            newmenu.originalColour = childColor;
            build_menu.add(newmenu)

        for u in units.units():
            title = str(u[1].name) #str(u[0])[:6]
            comment = Input.unit_comments[str(u[0])]
            newmenu = menu.Menu(str(u[0]), SUBMENU_WIDTH, 40, self.event, self.render, title, ("build_unit",(planet, u[1])), comment=comment)
            newmenu.colour = childColor;
            newmenu.originalColour = childColor;
            unit_menu.add(newmenu)

        for u in planet.colony.units():
            newmenu = menu.Menu(u, SUBMENU_WIDTH, 40, self.event, self.render, u.name, ("select_unit", (u,)))
            newmenu.colour = childColor;
            newmenu.originalColour = childColor;
            self.transport_menu.add(newmenu)

        self.widget.add(self.widget, build_mine)
        self.widget.add(self.widget, build_menu)
        self.widget.add(self.widget, unit_menu)
        self.widget.add(self.widget, self.transport_menu)
Ejemplo n.º 6
0
 def __init__(self, occ, layout_path="layouts/default.yaml"):
     ## @var l
     # System logger handle
     self.l = logging.getLogger('system')
     self.occ = occ
     ## @var ble_scanner
     # ble_Scanner instance handle
     self.ble_scanner = occ.ble_scanner
     self.uc = units()
     self.screen = occ.screen
     self.editor_name = ''
     self.colorkey = [0, 0, 0]
     self.alpha = 255
     self.font_list = {}
     self.page_list = {}
     self.page_index = {}
     self.function_rect_list = {}
     self.current_function_list = []
     self.current_image_list = {}
     self.layout_path = layout_path
     self.load_layout(layout_path)
     self.render_button = None
    def __init__(self, occ, simulate=False):
        ## @var occ
        # OCC Handle
        self.occ = occ
        ## @var l
        # System logger handle
        self.l = logging.getLogger('system')
        ## @var r
        # Ride logger handle
        self.r = self.setup_ridelog()
        ## @var uc
        # Units converter
        self.uc = units()
        self.l.info("[RP] Initialising sensors")
        ## @var sensors
        # Handle of sensors instance
        self.sensors = occ.sensors
        ## @var ble_sc
        # Handle of BLE speed and cadence sensor
        self.ble_sc = self.sensors.get_sensor('ble_sc')
        ## @var ble_hr
        # Handle of BLE heart rate sensor
        self.ble_hr = self.sensors.get_sensor('ble_hr')
        ## @var gps
        # Handle of GPS sensor
        self.gps = self.sensors.get_sensor('gps')
        ## @var bmp183
        # Handle of bmp183 sensor
        self.bmp183 = self.sensors.get_sensor('bmp183')

        self.suffixes = ("_digits", "_tenths", "_hms")

        self.p_raw = dict(
            time_stamp=time.time(),
            # Time delta since last p_raw update
            dtime=1,
            time_adjustment_delta=0.0,
            altitude=0.0,
            altitude_gps=0.0,
            altitude_home=0.0,
            altitude_max=INF_MIN,
            altitude_min=INF,
            altitude_previous=0.0,
            pressure=0.0,
            pressure_at_sea_level=0.0,
            climb=0.0,
            daltitude=0.0,
            daltitude_cumulative=0.0,
            odometer=0.0,
            ddistance=0.0,
            ddistance_cumulative=0.0,
            distance=0.0,
            eps=0.0,
            ept=0.0,
            epv=0.0,
            epx=0.0,
            gps_strength=0,
            fix_mode_gps='',
            fix_time_gps=0.0,
            latitude=0.0,
            longitude=0.0,
            satellites=0.0,
            satellitesused=0.0,
            ble_state=0,
            ble_hr_ts=0,
            heart_rate=0.0,
            heart_rate_min=INF,
            heart_rate_avg=0.0,
            heart_rate_max=INF_MIN,
            cadence=0.0,
            cadence_avg=0.0,
            cadence_max=INF_MIN,
            cadence_time_stamp=time.time(),
            ble_data_expiry_time=1.5,
            time_of_ride_reset=0.0001,
            ble_hr_name='',
            ble_hr_addr='',
            ble_sc_name='',
            ble_sc_addr='',
            rider_weight=0.0,
            ridetime=0.0,
            ridetime_total=0.0,
            slope=0.0,
            speed=0.0,
            speed_avg=0.0,
            speed_gps=0.0,
            speed_max=0.0,
            speed_gps_low=2.5,
            speed_gps_noise=1.0,
            speed_low=1.0,
            temperature=0.0,
            temperature_avg=0.0,
            temperature_max=INF_MIN,
            temperature_min=INF,
            track_gps=0,
            timeon=0.0001,
            utc='',
            rtc='')

        # Internal units
        self.p_raw_units = dict(altitude='m',
                                cadence='RPM',
                                climb='m/s',
                                distance='m',
                                eps='',
                                ept='',
                                epv='',
                                epx='',
                                dtime='s',
                                fix_gps='',
                                latitude='',
                                longitude='',
                                odometer='m',
                                pressure='Pa',
                                rider_weight='kg',
                                wheel_size='',
                                ridetime='s',
                                ridetime_total='s',
                                satellites='',
                                satellitesused='',
                                slope='m/m',
                                speed='m/s',
                                temperature='C',
                                timeon='s',
                                time_of_ride_reset='s',
                                heart_rate='BPM',
                                track_gps='')

        # Params of the ride ready for rendering.
        self.params = dict(
            altitude='-',
            altitude_gps='-',
            altitude_home='-',
            altitude_max='-',
            altitude_min='-',
            cadence='-',
            cadence_avg='-',
            cadence_max='-',
            heart_rate='-',
            heart_rate_min='-',
            heart_rate_avg='-',
            heart_rate_max='-',
            climb='-',
            distance=0,
            eps='-',
            ept='-',
            epv='-',
            epx='-',
            dtime=0,
            fix_gps='-',
            fix_gps_time='-',
            latitude='-',
            longitude='-',
            odometer=0.0,
            pressure='-',
            pressure_at_sea_level='-',
            rider_weight=0.0,
            wheel_size='',
            wheel_circ='',
            ridetime='',
            ridetime_hms='',
            ridetime_total='',
            ridetime_total_hms='',
            rtc='',
            satellites='-',
            satellitesused='-',
            slope='-',
            speed='-',
            speed_avg='-',
            speed_avg_digits='-',
            speed_avg_tenths='-',
            speed_digits='-',
            speed_max='-',
            speed_max_digits='-',
            speed_max_tenths='-',
            speed_tenths='-',
            temperature='',
            temperature_avg='',
            temperature_max='',
            temperature_min='',
            timeon='',
            timeon_hms='',
            time_of_ride_reset='',
            track_gps='-',
            utc='',
            ble_hr_name='',
            ble_hr_addr='',
            ble_sc_name='',
            ble_sc_addr='',
            # Editor params
            editor_index=0,
            variable=None,
            variable_description=None,
            variable_raw_value=None,
            variable_unit=None,
            variable_value=None,
            # System params
            debug_level='')

        # Formatting strings for params.
        self.p_format = dict(altitude='%.0f',
                             altitude_gps='%.0f',
                             altitude_home='%.0f',
                             altitude_max='%.0f',
                             altitude_min='%.0f',
                             cadence='%.0f',
                             cadence_avg='%.0f',
                             cadence_max='%.0f',
                             climb='%.1f',
                             distance='%.1f',
                             eps='%.4f',
                             epx='%.4f',
                             epv='%.4f',
                             ept='%.4f',
                             dtime='%.2f',
                             fix_gps='',
                             fix_gps_time='',
                             heart_rate='%.0f',
                             heart_rate_min='%.0f',
                             heart_rate_avg='%.0f',
                             heart_rate_max='%.0f',
                             latitude='%.4f',
                             longitude='%.4f',
                             odometer='%.0f',
                             pressure='%.0f',
                             pressure_at_sea_level='%.0f',
                             rider_weight='%.1f',
                             ridetime='%.0f',
                             ridetime_hms='',
                             ridetime_total='.0f',
                             ridetime_total_hms='',
                             rtc='',
                             satellites='%.0f',
                             satellitesused='%.0f',
                             slope='%.0f',
                             speed='%.1f',
                             speed_avg='%.1f',
                             speed_avg_digits='%.0f',
                             speed_avg_tenths='%.0f',
                             speed_digits='%.0f',
                             speed_max='%.1f',
                             speed_max_digits='%.0f',
                             speed_max_tenths='%.0f',
                             speed_tenths='%.0f',
                             temperature='%.0f',
                             temperature_avg='%.1f',
                             temperature_max='%.0f',
                             temperature_min='%.0f',
                             timeon='%.0f',
                             timeon_hms='',
                             time_of_ride_reset='%.0f',
                             track_gps='%.1f',
                             utc='')

        # Units - name has to be identical as in params
        self.units = dict(altitude='m',
                          cadence='RPM',
                          climb='m/s',
                          distance='km',
                          eps='',
                          epx='',
                          epv='',
                          ept='',
                          dtime='s',
                          fix_gps='',
                          fix_gps_time='',
                          heart_rate='BPM',
                          latitude='',
                          longitude='',
                          odometer='km',
                          pressure='hPa',
                          rider_weight='kg',
                          wheel_size='',
                          ridetime='s',
                          ridetime_hms='',
                          ridetime_total='s',
                          ridetime_total_hms='',
                          satellites='',
                          satellitesused='',
                          slope='%',
                          speed='km/h',
                          temperature='C',
                          timeon='s',
                          timeon_hms='',
                          time_of_ride_reset='s',
                          track_gps='')

        # Allowed units - user can switch between those when editing value
        # FIXME switch to mi when mi/h are set for speed
        # FIXME switch to mi/h when mi are set for odometer
        self.units_allowed = dict(
            odometer=['km', 'mi'],
            rider_weight=['kg', 'st', 'lb'],
            # slope=['%', 'C'],
            wheel_size=[''],
            speed=['km/h', 'm/s', 'mi/h'],
            temperature=['C', 'F', 'K'])

        # Params description FIXME localisation
        self.p_desc = dict(altitude_home='Home altitude',
                           odometer='Odometer',
                           odometer_units='Odometer units',
                           rider_weight='Rider weight',
                           rider_weight_units='Rider weight units',
                           wheel_size='Wheel size',
                           speed_units='Speed units',
                           temperature_units='Temp. unit')

        # Params that can be changed in Settings by user
        self.editors = dict(editor_units=('odometer_units',
                                          'rider_weight_units', 'speed_units',
                                          'temperature_units'),
                            editor_numbers=('altitude_home', 'odometer',
                                            'rider_weight'),
                            editor_string=('wheel_size', ),
                            ble_selector=('ble_hr_name', 'ble_sc_name'))

        self.p_resettable = dict(distance=1,
                                 odometer=1,
                                 ridetime=1,
                                 speed_max=1,
                                 cadence=1,
                                 cadence_avg=1,
                                 cadence_max=1,
                                 heart_rate_min=1,
                                 heart_rate_avg=1,
                                 heart_rate_max=1)

        # FIXME Use set_nav_speed_threshold(self, treshold=0) from gps module
        self.l.info(
            "[RP] GPS low speed treshold preset to {} [NOT USED]".format(
                self.p_raw['speed_gps_low']))
        self.l.info("[RP] GPS speed noise level treshold preset to {}".format(
            self.p_raw['speed_gps_noise']))
        self.l.info(
            "[RP] Speed below {} m/a treshold won't be recorded".format(
                self.p_raw['speed_low']))

        self.update_param("speed_max")
        self.split_speed("speed_max")
        self.update_param("altitude_home")
        self.l.info("[RP] altitude_home set to {}".format(
            self.params["altitude_home"]))
Ejemplo n.º 8
0
def fahrenheit_to_celsius(degf, difference=False):
    if difference:
        return (5. / 9.) * degf
    else:
        return (5. / 9.) * (degf - 32.)

def celsius_to_fahrenheit(degc, difference=False):
    if difference:
        return (9. / 5.) * degc
    else:
        return (9. / 5.) * degc + 32

if __name__ == '__main__':
    config = json.load(open('/Users/bobwilson/beer/bin/homebrew.json', 'r'))
    unit = units()
    unit.parseUnitFile(config['files']['units'])
    config['unit'] = unit

    parser = argparse.ArgumentParser()
    parser.add_argument('recipe', type=str, help='Recipe JSON')
    parser.add_argument('-o', '--output', type=str, help='Output file')

    args = parser.parse_args()
    recipe_config = json.load(open(args.recipe, 'r'))
    if args.output:
        config['Output'] = args.output

    execute(config, recipe_config)

Ejemplo n.º 9
0
 def test_unit_get_hurt_not_default(self):
     first_unit = units(1, 1, 1)
     first_unit.get_hurt(1)
     self.assertEqual(first_unit.hp, 1)
Ejemplo n.º 10
0
 def test_unit_get_hurt(self):
     first_unit = units()
     self.assertEqual(first_unit.get_hurt(1), -1)
Ejemplo n.º 11
0
 def test_init_not_default(self):
     first_unit = units(1, 1, 1)
     self.assertEqual(first_unit.def_defence(), 1)
     self.assertEqual(first_unit.get_damage(), 1)
     self.assertTrue(first_unit.can_conter())
Ejemplo n.º 12
0
 def test_init(self):
     first_unit = units()
     self.assertEqual(first_unit.def_defence(), 0)
     self.assertEqual(first_unit.get_damage(), 0)
     self.assertTrue(first_unit.can_conter())
Ejemplo n.º 13
0
    theta function :
      returns 0 if x<=0, and 1 if x>0
    """
    x = np.asarray(x)
    y = np.zeros(x.shape)
    y[x > 0] = 1.0
    return y


def square_barrier(x, width, height):
    return height * (theta(x) - theta(x - width))

######################################################################
# Create the animation

unit_sys = units.units(10**-12, mode = "abs")
_T = unit_sys.get_T()
_T.set_format("{:1.3e}")

# specify time steps and duration
dt = 0.00001
N_steps = 50
t_max = 1000000
ylim = (0, 1.0)
frames = 100

# specify constants
m = 1.0      # particle mass

# specify range in x coordinate
fac = 1
Ejemplo n.º 14
0
def fahrenheit_to_celsius(degf, difference=False):
    if difference:
        return (5. / 9.) * degf
    else:
        return (5. / 9.) * (degf - 32.)


def celsius_to_fahrenheit(degc, difference=False):
    if difference:
        return (9. / 5.) * degc
    else:
        return (9. / 5.) * degc + 32


if __name__ == '__main__':
    config = json.load(open('/Users/bobwilson/beer/bin/homebrew.json', 'r'))
    unit = units()
    unit.parseUnitFile(config['files']['units'])
    config['unit'] = unit

    parser = argparse.ArgumentParser()
    parser.add_argument('recipe', type=str, help='Recipe JSON')
    parser.add_argument('-o', '--output', type=str, help='Output file')

    args = parser.parse_args()
    recipe_config = json.load(open(args.recipe, 'r'))
    if args.output:
        config['Output'] = args.output

    execute(config, recipe_config)
Ejemplo n.º 15
0
def phys(string):
    string = string.strip()
    mantissa_str = None
    exponent_str = None
    numerical_str = None
    unit_str = None
    first_sig_fig = -1
    last_sig_fig = -1
    exponent_start = -1
    decimal_position = -1
    i = 0
    for c in string:
        
        #find the part that contains the number and pull out sigfigs and exponent location
        if c not in "-+0123456789eE.":
            break #we are done here so move on to extraction and conversions
            
        #look for the exponent
        if c in "eE":
            assert exponent_start == -1 #only one exponent allowed
            exponent_start = i
        
        #look for the decimal
        if c in ".":
            assert decimal_position == -1 #only one decimal allowed
            decimal_position = i
        
        #look for sigfigs
        if c in "123456789" and exponent_start == -1:
            if first_sig_fig == -1: first_sig_fig = i
            last_sig_fig = i
        elif c == "0" and decimal_position != -1 and exponent_start == -1:
            last_sig_fig = i
            #print "Last sig fig now", c

        i += 1
        
    #check if the e was supposed to be part of the units
    if exponent_start == -1: exponent_start = i
    
    #need to make sure we get all of the units
    mantissa_str = string[0:exponent_start].strip()
    exponent_str = string[exponent_start:i].strip()
    numerical_str = string[0:i].strip()
    unit_str = string[i:].strip()
            
    if decimal_position == -1: decimal_position = len(mantissa_str)
    
    base = float(mantissa_str)
    exponent = 0 if len(exponent_str) <= 1 else int(exponent_str[1:]) #trim off the 'e' if it is there
                
    #we want to know the rounding error which will be 0.5 times the exponent of the last significant figure
    last_sigfig_exponent = 0
    sigfigs = 0
    
    #make sure we have at least one
    if first_sig_fig != -1:

        #no need to take care of a minus sign or such because that can't be in the middle and still have a valid number

        #adjust for the decimal place if it was in the middle
        if first_sig_fig <= decimal_position and decimal_position <= last_sig_fig:
            #print "in middle"
            last_sigfig_exponent = decimal_position-last_sig_fig+exponent
            sigfigs = last_sig_fig - first_sig_fig
        else:
            #print "not in middle"
            last_sigfig_exponent = decimal_position-last_sig_fig+exponent-1
            sigfigs = 1 + last_sig_fig - first_sig_fig

    
    
    unit_str = unit_str.replace(" ","")
    unit_list = unit_str.split("/")
    if "" in unit_list: unit_list.remove("")
    assert len(unit_list) <= 2 #make sure there was only one "/"
    pos_units = unit_list[0].split("*") if len(unit_list) >= 1 else []
    neg_units = unit_list[1].split("*") if len(unit_list) >= 2 else []
    
    unit_map = {}
    unit_exponent_delta = 0
    for u in pos_units: unit_exponent_delta += update_unit(unit_map, u, 1)
    for u in neg_units: unit_exponent_delta += update_unit(unit_map, u, -1)
    
    exponent += unit_exponent_delta
    last_sigfig_exponent += unit_exponent_delta
    
    #print "base = %f" % float(mantissa_str)
    #print "exponent = %d" % exponent
    #print "sigfigs = %d" % sigfigs
    #print "error = 0.5*10**%d" % last_sigfig_exponent
    #print "pos units = %s" % str(pos_units)
    #print "neg units = %s" % str(neg_units)
    #print "unit map = %s" % str(unit_map)
    
    num_val = float(numerical_str)*10**unit_exponent_delta
    error = None
    if sigfigs == 0: 
        error = 0
    else:
        error = 0.5*10**last_sigfig_exponent
    return units(interval(num_val-error,num_val+error), unit_map)
Ejemplo n.º 16
0
def initialize():
    pm = Parameter.Parameter(
    )  #Parameter werden initialisiert (in Parameter.py)
    us = units.units(pm)  #noch units initialiseren
    return (pm, us)