Spoofy wrote:
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.

[snip]

Try:

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

--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to