Hello everybody!

Though I'm a hobby programmer for years now (mainly small hackery things) I still have big problems getting "real" things to work.

I'm currently trying to write a simple RPG and have problems with the following:

1.

Characters have a "courage" attribute that basically determins who has the first attack in a fight. After some trying, I came up with this (sorry, not really working code, but what I made from interactive experimentation):

def first_attack(player1,  player2):
    diff = player1.attributes.courage - player2.attributes.courage
    players = (player,  player2)
    return players[diff + random.randint(-diff,  diff) < 0]

To make it more realistic, I randomized it a little bit and this seems to work for low courage values. But when the courage values are high (100 and such) it fails (the chance to have the first attack drops the higher the values are). My math is really bad and I have problems to understand what's happenning here. I suspect the greater range for randint() is the problem, but I don't really get why.

Any tips would be greatly appreciated.

2.

For maintaining the character attributes I creates a seperate class. I wonder weather this is an "overuse" of OO (instead of just making the attributes plain variables of the Char class) and if the way I wrote this is OK (somehow this looks cool to me but maybe too "showy"?)

class Attributes(object):
ATTRIBUTES = {"attack": 0, "defence": 0, "ability": 0, "courage": 0, "condition": 0}
    def __init__(self, **kwargs):
        self.__dict__.update(self.ATTRIBUTES)
        for arg in kwargs:
            if arg not in self.ATTRIBUTES:
raise ValueError("Unkown character attribute '%s'" % arg)
            self.__dict__[arg] = kwargs[arg]


Again, I appreciate any tips. I you need more code (for the bigger picture or such), just ask.

Thanks in advance
--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to