Ryan Strunk wrote:
Hello everyone,
I am still learning to program by writing this boxing game. I'm running into
a problem with how to organize data. My current setup looks something like
this:
"""This feels incredibly disgusting to me."""


You might find it a little less disgusting with the application of some helper classes and a slightly different data format.

Combos probably should be treated as a sequence of moves. For simplicity, I'm going to assume each move takes the same time, and once a combo is entered, the opponent can't interrupt it. You may want to make it more complicated/realistic.


The hard part is deciding what fields you need. Here's my guess:


class Move:
   def __init__(self, speed, strength, side, purpose, kind, foul=False):
       self.speed = speed
       self.strength = strength
       self.side = side
       self.purpose = purpose
       self.kind = kind
       self.foul = foul


CENTRE = NEUTRAL = ''
LEFT, RIGHT = 'left right'.split()
ATTACK, DEFENSE = 'attack defense'.split()

right_cross = Move(2, 3, RIGHT, ATTACK, 'punch')
left_lead = Move(3, 4, LEFT, ATTACK, 'punch')
left_jab = Move(1, 1, LEFT, ATTACK, 'punch')
headbutt = Move(1, 3, CENTRE, ATTACK, 'headbutt', True)
step_in = Move(2, 0, NEUTRAL, NEUTRAL, 'footwork')
weave = Move(1, 0, NEUTRAL, DEFENSE, 'footwork')
rabbit_punch = Move(1, 2, CENTRE, ATTACK, 'punch', True)

class Combo:
    def __init__(self, *moves):
        self.moves = moves


old_one_two = Combo(left_lead, right_cross)
liverpool_kiss = Combo(step_in, headbutt)


combos = {
    1: old_one_two,
    2: liverpool_kiss,
    3: Combo(weave, weave, step_in, rabbit_punch),
    4: Combo(left_jab, left_jab, left_jab, step_in, uppercut),
    }


Does that help?




--
Steven

_______________________________________________
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
http://mail.python.org/mailman/listinfo/tutor

Reply via email to