diff --git a/dice.py b/dice.py index 1d63192..b02121a 100755 --- a/dice.py +++ b/dice.py @@ -70,6 +70,7 @@ class Dice(): def roll(self, verbose=False): results = [] rerolled = [] + dropped = [] # Roll the actual dice, handling rerolls for i in range(0, self.num): @@ -91,7 +92,6 @@ class Dice(): if self.drop_low or self.drop_high: results.sort() - dropped = [] if self.drop_low: dropped.extend(results[:self.drop_low]) results = results[self.drop_low:] @@ -105,22 +105,10 @@ class Dice(): # Get the results total = sum(results) + self.mod - if verbose: - drop_info = '' - reroll_info = '' - - if dropped: - drop_info = ' [dropped {}]'.format(','.join(['{}'.format(x) for x in dropped])) - if rerolled: - reroll_info = ' [rerolled {}]'.format(','.join(['{}'.format(x) for x in rerolled])) - - print('{dice}: {results}{drop}{reroll} {total}'.format(dice=self, results=results, total=total, drop=drop_info, reroll=reroll_info)) - - else: - print('{dice}: {total}'.format(dice=self, total=total)) - self.times_rolled += 1 + return {'total': total, 'rolls': results, 'dropped': dropped, 'rerolled': rerolled} + def __str__(self): reroll_info = '' @@ -193,7 +181,21 @@ def main(): for i in range(settings.repeat): for dice in dice_list: - dice.roll(verbose=settings.verbose) + ret = dice.roll() + + if settings.verbose: + drop_info = '' + reroll_info = '' + + if ret['dropped']: + drop_info = ' [dropped {}]'.format(','.join(['{}'.format(x) for x in ret['dropped']])) + if ret['rerolled']: + reroll_info = ' [rerolled {}]'.format(','.join(['{}'.format(x) for x in ret['rerolled']])) + + print('{dice}: {rolls}{drop}{reroll} {total}'.format(dice=dice, rolls=ret['rolls'], total=ret['total'], drop=drop_info, reroll=reroll_info)) + + else: + print('{dice}: {total}'.format(dice=dice, total=ret['total'])) if __name__ == '__main__':