コード例 #1
0
ファイル: primer.py プロジェクト: OlafTyc/hydra
def MergeChars(a, b):
    global LetterToSet
    if a == b:
        return a
    try:
        sa = LetterToSet[a.upper()]
    except:
        die.Die("Bad letter in primer '%c'" % a)

    try:
        sb = LetterToSet[b.upper()]
    except:
        die.Die("Bad letter in primer '%c'" % b)

    Set = sa
    for x in sb:
        if x not in Set:
            Set += x

    for x in LetterToSet.keys():
        Set2 = LetterToSet[x]
        if len(Set2) != len(Set):
            continue
        Found = True
        for y in Set:
            if y not in Set2:
                Found = False
        if Found:
            return x

    die.Die("MergeChars(%c,%c) failed" % (a, b))
コード例 #2
0
 def setUp(self):
     self.testLStreetObj = CalcLittelStreet("testBlub")
     self.newDice = [
         die.Die(3),
         die.Die(2),
         die.Die(4),
         die.Die(1),
         die.Die(3)
     ]
コード例 #3
0
ファイル: utax2.py プロジェクト: rcedgar/taxxi
def GetLevelName(Path, Level, Default=""):
    Fields = Path.split(',')
    for Field in Fields:
        if len(Field) < 2 or Field[1] != ':':
            die.Die("Invalid path '%s'" % Path)
        if Field[0] == Level:
            s = Field[2:]
            n = s.find('(')
            if n > 0:
                return s[:n]
            return s
    if Default == "":
        die.Die("GetLevelName, '%c:' not found in path '%s'" % (Level, Path))
    return Default
コード例 #4
0
ファイル: test_die.py プロジェクト: evanjtravis/dice
    def test_invalid_max_roll(self):
        """A Dice created with an invalid max_roll will set max_roll to the
        default value.
        """
        d = die.Die(-1)
        self.assertEqual(d.max_roll, die.DEF_MAX)

        d = die.Die('sdfsd')
        self.assertEqual(d.max_roll, die.DEF_MAX)

        d = die.Die(True)
        self.assertEqual(d.max_roll, die.DEF_MAX)

        d = die.Die(0.7)
        self.assertEqual(d.max_roll, die.DEF_MAX)
コード例 #5
0
ファイル: test_die.py プロジェクト: evanjtravis/dice
    def test_invalid_offset(self):
        """A Dice created with an invalid offset will set offset to the
        default value.
        """
        d = die.Die(2, offset=-1)
        self.assertEqual(d.offset, die.DEF_OFFSET)

        d = die.Die(2, offset='sdfsdf')
        self.assertEqual(d.offset, die.DEF_OFFSET)

        d = die.Die(2, offset='False')
        self.assertEqual(d.offset, die.DEF_OFFSET)

        d = die.Die(2)
        self.assertEqual(d.offset, die.DEF_OFFSET)
コード例 #6
0
ファイル: die_visual.py プロジェクト: zhangbin0git/demo
def run_die():
    """运行投掷骰子"""
    # 实例话Die
    die1 = die.Die()
    die2 = die.Die(10)
    # 生成两个骰子的组合结果
    tow_results = to_results(die1, die2)
    # 生成两个骰子的频率
    tow_frequencies = to_frequency(tow_results)
    # 生成结果的交集组合,其中没有重复的,并排序
    tow_results_sides = sorted(set(tow_results))
    # 显示图表
    show_die(tow_results_sides, tow_frequencies)
    webbrowser.open_new_tab("http://localhost:63342/Demo/"
                            "pygal_demo/die_visual.svg")
コード例 #7
0
ファイル: utax2.py プロジェクト: rcedgar/taxxi
def GetPctIdFromLabel(Label):
    Fields = Label.split(";")
    for Field in Fields:
        if Field.startswith("pctid="):
            PctId = int(Field[6:])
            return PctId
    die.Die("pctid= not found in >" + Label)
コード例 #8
0
def test_incorrectConstructionZero():
    sides = 0
    D0 = die.Die(sides)
    notExist = False
    if not D0:
        notExist = True
    assert True == notExist
コード例 #9
0
    def test_text_init(self):
        "Test the Die object creation from text"

        # 1. Create Die object from text
        myobj = die.Die(text=EXAMPLE_TEXT)

        # 2. Make sure it has the expected values
        self.assertEqual(myobj.part2, False)
        self.assertEqual(len(myobj.text), 3)
        self.assertEqual(myobj.rolled, 0)
        self.assertEqual(myobj.sides, 100)
        self.assertEqual(myobj.last, 0)

        # 3. Check methods
        self.assertEqual(myobj.roll(), 1)
        self.assertEqual(myobj.rolled, 1)
        self.assertEqual(myobj.last, 1)
        self.assertEqual(myobj.roll(), 2)
        self.assertEqual(myobj.rolled, 2)
        self.assertEqual(myobj.last, 2)
        myobj.last = 99
        self.assertEqual(myobj.last, 99)
        self.assertEqual(myobj.roll(), 100)
        self.assertEqual(myobj.rolled, 3)
        self.assertEqual(myobj.last, 100)
        self.assertEqual(myobj.roll(), 1)
        self.assertEqual(myobj.rolled, 4)
        self.assertEqual(myobj.last, 1)
コード例 #10
0
def test_incorrectConstructionNegative():
    sides = -10
    Dminus = die.Die(sides)
    notExist = False
    if not Dminus:
        notExist = True
    assert True == notExist
コード例 #11
0
ファイル: primer.py プロジェクト: marcomeola/16s_dairydb
def MatchLetter(a, b):
    if b == 'A' or b == 'C' or b == 'G' or b == 'T':
        return a == b
    elif b == 'S':
        return a == 'C' or a == 'G'
    elif b == 'Y':
        return a == 'T' or a == 'C'
    elif b == 'K':
        return a == 'G' or a == 'T'
    elif b == 'V':
        return a == 'A' or a == 'C' or a == 'G'
    elif b == 'H':
        return a == 'A' or a == 'C' or a == 'T'
    elif b == 'D':
        return a == 'A' or a == 'G' or a == 'T'
    elif b == 'B':
        return a == 'C' or a == 'G' or a == 'T'
    elif b == 'X' or b == 'N':
        return a == 'G' or a == 'A' or a == 'T' or a == 'C'
    elif b == 'R':
        return a == 'A' or a == 'G'
    elif b == 'M':
        return a == 'A' or a == 'C'
    elif b == 'H':
        return a == 'A' or a == 'C' or a == 'T'
    elif b == 'W':
        return a == 'A' or a == 'T'
    else:
        die.Die("Bad letter in primer '%c'" % b)
    return 0
コード例 #12
0
def test_incorrectConstructionEmpty():
    sides = ""
    D = die.Die(sides)
    notExist = False
    if not D:
        notExist = True
    assert True == notExist
コード例 #13
0
ファイル: utax2.py プロジェクト: rcedgar/taxxi
def GetLKRFromLabel(Label):
    Fields = Label.split(";")
    for Field in Fields:
        if Field.startswith("lkr="):
            assert len(Field) == 5
            return Field[4]
    die.Die("lkr= not found in >" + Label)
コード例 #14
0
ファイル: utax2.py プロジェクト: rcedgar/taxxi
def GetTaxFromLabel(Label):
    Fields = Label.split(";")
    for Field in Fields:
        if Field.startswith("tax="):
            Tax = Field[4:]
            return Tax
    die.Die("tax= not found in label >" + Label)
コード例 #15
0
ファイル: combat.py プロジェクト: llee1990/Python-RPG
def run_away(char: character.Character, victim: enemy.Child):
    """Decide if the player will take damage when running away.

    A die is rolled to decide chance of damage, the higher the number of sides the lower the chance of damage.
    Default chance of damage is 1 in 4 or 25%. If a one is rolled the player will take 1 to 4 points of damage.
    PARAM: An instance belonging to the class 'Character' and an instance belonging the the class 'Child'.
    PRECONDITION: The parameters must be an instance belonging to the class 'Character' and the class 'Child'.
    POSTCONDITION: Either the player escapes unharmed or the player will take 1 to 4 points of damage.
    RETURN: N/A
    """
    print(
        '\nYou walk away, the thought of killing a child was too much for you. But in her fear the child attempts to '
        'attack you!')
    damage_die = die.Die(10)
    chance_of_damage = damage_die.roll_die()
    if chance_of_damage == 1:
        victim.escape_attack(char)
        # Enemy attacks character. Escape damage range from 1 - 4
        print("You have escaped, but have taken " +
              str(victim.get_escape_damage()) +
              " points of damage in the process. You now have " +
              str(char.get_health()) + " health points remaining.")
    else:
        print(
            "You have escaped unscathed, the child runs off into the darkness."
        )
コード例 #16
0
def test_incorrectConstructionNonNumber():
    sides = "a"
    Da = die.Die(sides)
    notExist = False
    if not Da:
        notExist = True
    assert True == notExist
コード例 #17
0
ファイル: utax2.py プロジェクト: rcedgar/taxxi
def GetPredScore(Path, LevelChar):
    n = Path.find(LevelChar + ":")
    if n < 0:
        return -1.0
    s = Path[n + 2:]
    m = s.find("(")
    #	if not s[m+1].isdigit():
    #		s = s[m+1:]
    #		m = s.find("(")
    if m <= 0:
        die.Die("Missing score %c: in %s" % (LevelChar, Path))
    s = s[m + 1:]
    m = s.find(")")
    if m <= 0:
        die.Die("Missing ) for level %c: in %s" % (LevelChar, Path))
    s = s[:m]
    return float(s)
コード例 #18
0
ファイル: utax2.py プロジェクト: rcedgar/taxxi
def ParsePred(Pred):
    Fields = Pred.split("(")
    n = len(Fields)
    if n == 1:
        die.Die("Missing score in %s" % Pred)
    Name = Fields[0]

    s = Fields[n - 1]
    if s.endswith(';'):
        s = s.replace(";", "")
    assert s.endswith(')')
    ss = s[:-1]
    try:
        Score = float(ss)
    except:
        die.Die("utax2.ParsePred, bad pred '%s'" % Pred)
    return Name, Score
コード例 #19
0
ファイル: test_die.py プロジェクト: evanjtravis/dice
    def test_remove_die(self):
        """
        """
        size = len(die.DICE)
        d = die.Die(21, name='Test')
        self.assertEqual(len(die.DICE), size + 1)

        die.remove(d)
        self.assertEqual(len(die.DICE), size)
コード例 #20
0
ファイル: utax2.py プロジェクト: rcedgar/taxxi
def GetDictFromLabel(Label):
    Tax = GetTaxFromLabel(Label)
    Names = Tax.split(',')
    Dict = {}
    for Name in Names:
        if len(Name) <= 2 or Name[1] != ':':
            die.Die("GetDictFromLabel(%s)" % Label)
        Dict[Name[0]] = Name
    return Dict
コード例 #21
0
ファイル: utax2.py プロジェクト: rcedgar/taxxi
def GetNameFromLabel(Label, Level):
    Tax = GetTaxFromLabel(Label)
    Names = Tax.split(',')
    for Name in Names:
        if len(Name) <= 2 or Name[1] != ':':
            die.Die("Invalid name '%s' in label >%s" % (Name, Label))
        if Name[0] == Level:
            return Name
    return ""
コード例 #22
0
ファイル: utax2.py プロジェクト: rcedgar/taxxi
def SplitLevelIsTrue(SplitLevelChar, TestLevelChar):
    if len(SplitLevelChar) != 1 or len(TestLevelChar) != 1:
        die.Die("SplitLevelIsTrue(Split=%s, Test=%s)" %
                (SplitLevelChar, TestLevelChar))

    Splitn = LevelChars.find(SplitLevelChar)
    Testn = LevelChars.find(TestLevelChar)
    assert Splitn >= 0
    assert Testn >= 0
    return Testn <= Splitn
コード例 #23
0
def test_fields():

    # test initialization
    d4 = die.Die(n_sides=4)

    # test fields
    assert d4.n_sides == 4
    assert d4.state is None
    r = d4.roll()
    assert d4.state == r
コード例 #24
0
ファイル: utax2.py プロジェクト: rcedgar/taxxi
def GetPred(PredStr, LevelChar):
    Fields = PredStr.split(',')
    for Field in Fields:
        if len(Field) < 2 or Field[1] != ':':
            die.Die("Invalid predstr '%s'" % PredStr)
        if Field[0] == LevelChar:
            if not Field.endswith(')') and not Field.endswith(");"):
                die.Die("Pred must end with ) '%s'" % Field)
            m = Field.rfind("(")
            if m <= 0:
                die.Die("Missing ( in '%s'" % (PredStr))
            Name = Field[0:m]
            s = Field[m + 1:]
            m = s.find(")")
            if m <= 0:
                die.Die("Missing ) for level %c: in %s" % (LevelChar, PredStr))
            s = s[:m]
            Score = float(s)
            return Name, Score
    return "*", -1.0
コード例 #25
0
ファイル: utax2.py プロジェクト: rcedgar/taxxi
def GetNameFromTaxStr(Tax, Level):
    if Tax == "":
        return ""
    Names = Tax.split(',')
    for Name in Names:
        if len(Name) <= 2 or Name[1] != ':':
            die.Die("GetNameFromTaxStr(" + Tax + ", " + Level +
                    "), bad name '" + Name + "'")
        if Name[0] == Level:
            return Name
    return ""
コード例 #26
0
    def test_empty_init(self):
        "Test the default Die creation"

        # 1. Create default Die object
        myobj = die.Die()

        # 2. Make sure it has the default values
        self.assertEqual(myobj.part2, False)
        self.assertEqual(myobj.text, None)
        self.assertEqual(myobj.rolled, 0)
        self.assertEqual(myobj.sides, 100)
        self.assertEqual(myobj.last, 0)
コード例 #27
0
def test_roll():

    # Initialize
    d4 = die.Die(n_sides=4)
    d6 = die.Die(n_sides=6)

    d4_rolls = [0, 0, 0, 0]
    d6_rolls = [0, 0, 0, 0, 0, 0]

    # Check that roll is never out of die range
    for _ in range(4000):
        r = d4.roll()
        assert (r >= 1 and r <= 4)
        d4_rolls[r - 1] += 1

    for _ in range(6000):
        r = d6.roll()
        assert (r >= 1 and r <= 6)
        d6_rolls[r - 1] += 1

    # Check that rolls are reasonably weighted
    assert (all(x > 250 for x in d4_rolls + d6_rolls))
コード例 #28
0
ファイル: combat.py プロジェクト: llee1990/Python-RPG
def chance_of_engagement(char):
    """Decide if an enemy encounter will take place.

    A die is rolled to decide chance of encounter, the higher the number of sides the lower the chance of encounter.
    The default chance of battle is 1 in 10 or 10%. If a one is rolled an enemy engagement will occur. If there is no
    enemy, regenerate health by one.
    PARAM: An instance belonging to the class 'Character'.
    PRECONDITION: The parameter must be an instance belonging to the class 'Character'.
    POSTCONDITION: An enemy encounter will take place or player health regenerates by one.
    RETURN: N/A
    """
    engagement_die = die.Die(10)
    engagement_chance = engagement_die.roll_die()
    if engagement_chance == 1:
        fight_or_run(char)
        # Enemy engages and player gets to choose
    else:
        char.regenerate_one_health()
コード例 #29
0
ファイル: utax2.py プロジェクト: rcedgar/taxxi
def LevelCharToName(c):
    if c == 's':
        return "Species"
    elif c == 'g':
        return "Genus"
    elif c == 'f':
        return "Family"
    elif c == 'c':
        return "Class"
    elif c == 'o':
        return "Order"
    elif c == 'p':
        return "Phylum"
    elif c == 'd':
        return "Domain"
    elif c == 'k':
        return "Kingdom"
    die.Die("Unknown level " + c)
コード例 #30
0
    def __init__(self, text=None, part2=False):

        # 1. Set the initial values
        self.part2 = part2
        self.text = text
        self.track = list(range(TRACK_BEG, TRACK_END + 1))
        self.players = []
        self.die = None
        if part2:
            self.goal = GOAL_TWO
        else:
            self.goal = GOAL_ONE
        self.times = TIMES

        # 2. Process text (if any)
        if text is not None and len(text) > 0:
            for line in text:
                self.players.append(player.Player(text=line, part2=part2))
            self.die = die.Die(part2=part2)