indeed, we're it is our combat timeline. we enter the initiative and reaction time, it should find out the lowest then the next, then the 'n'th etc. and shouw it on the screen like Next action 'Character Name1' at tick No 'Initiative1 2nd action 'Character Name2' at tick No 'Initiative2' [...] 'n'th action 'Character Name n' at tick No 'Initiative n'
Now you enter a value by which the initiative should be increased, then adding reaction time to that value and then adding the result to reaction time. Now soring again by lowest,next,'n'th, etc. and then again showing the output, asking for another number etc.
Not sure if I got your calculation right, but something like this should work:
py> characters [Character('Steve', 3, 2), Character('mx2k', 5, 1)] py> def get_init(character): ... return (character.initiative + character.reaction_time + ... int(raw_input('%s initiative: ' % character.name))) ... py> def print_initiatives(characters, rounds): ... for _ in range(rounds): ... inits = dict([(character, get_init(character)) ... for character in characters]) ... for character in sorted(inits, key=inits.__getitem__): ... print character, inits[character] ... py> print_initiatives(characters, 3) [... I type '5', '6' ...] Character('Steve', 3, 2) 10 Character('mx2k', 5, 1) 12 [... I type '9', '1' ...] Character('mx2k', 5, 1) 7 Character('Steve', 3, 2) 14 [... I type '1', '2' ...] Character('Steve', 3, 2) 6 Character('mx2k', 5, 1) 8
If you want the characters in the opposite order, simply use sorted(inits, key=inits.__getitem__, reverse=True) instead of sorted(inits, key=inits.__getitem__)
HTH,
STeVe -- http://mail.python.org/mailman/listinfo/python-list