From 1e3961f1d73a2e1c4ea14d5ebc204443211c4cbe Mon Sep 17 00:00:00 2001 From: DMAshura Date: Thu, 28 Apr 2011 04:12:03 -0400 Subject: [PATCH] * Implemented rolling. ... a little buggy when transitioning from uphill to downhill. Angle detection bug really shows in rolling. * Began state machine. * Brought debug text onto screen again. --- character.py | 62 ++++++++++++++++++++++++++++++++------- gamedata/sounds/spin.wav | Bin 0 -> 89684 bytes porcupyne.py | 14 ++++----- 3 files changed, 58 insertions(+), 18 deletions(-) create mode 100644 gamedata/sounds/spin.wav diff --git a/character.py b/character.py index dfc86d6..d5e89b9 100644 --- a/character.py +++ b/character.py @@ -18,6 +18,10 @@ def __init__(self, game, res): self.x = x self.y = y + # State Machine + + self.state = "Stopped" + # Sensors self.sensor_bottom = Sensor(self.res) @@ -41,9 +45,12 @@ def __init__(self, game, res): self.acc = 0.046875 * const.SCALE self.frc = 0.046875 * const.SCALE + self.rfrc = 0.0234375 * const.SCALE self.dec = 0.5 * const.SCALE self.max = 6.0 * const.SCALE + self.rol = 1.03125 * const.SCALE + self.slp = 0.125 * const.SCALE self.ruslp = 0.078125 * const.SCALE self.rdslp = 0.3125 * const.SCALE @@ -87,6 +94,8 @@ def __init__(self, game, res): # Control lock timers self.hlock = 0 + def play_sound(self, string): + self.res.sound_dict[string].play() def release_jump(self): self.dv = min(self.dv, self.jmpweak) @@ -101,47 +110,63 @@ def set_position(self, x = None, y = None): self.update_sensors() def handle_physics(self): + # See if rolling + if (abs(self.dh) >= self.rol): + if (self.keyDown and self.flagGround and self.state != "Rolling"): + self.state = "Rolling" + self.play_sound('spin.wav') + print "Rolling!" + # Slope factor - '''if not self.Rolling:''' - if self.flagGround: - self.dh -= self.slp * sin(self.rangle) - ''' + if self.state != "Rolling": + if self.flagGround: + self.dh -= self.slp * sin(self.rangle) else: - if cmp(self.dh,0) == cmp(sin(self.rangle)): + if cmp(self.dh,0) == cmp(sin(self.rangle),0): self.dh -= self.ruslp * sin(self.rangle) - elif cmp(self.dh,0) == -cmp(sin(self.rangle)): + elif cmp(self.dh,0) == -cmp(sin(self.rangle),0) or self.dh == 0: self.dh -= self.rdslp * sin(self.rangle) - ''' # Falling off walls and ceilings if 45 < self.rangle < 315 and abs(self.dh) < 2.5 * const.SCALE: self.set_gravity(self.gangle) self.flagFellOffWallOrCeiling = True + + if self.state == "Rolling" and self.dh == 0 and not self.keyDown: + self.state = "Stopped" + print "Stopped!" # Speed input and management if self.flagAllowHorizMovement: if self.keyLeft: if self.dh > 0 and self.flagGround: + # Decelerate self.dh -= self.dec if -self.dec < self.dh < 0: self.dh = -self.dec - elif self.dh > -self.max: + elif self.dh > -self.max and self.state != "Rolling": + # Accelerate if self.flagGround: self.dh = max(self.dh - self.acc, -self.max) else: self.dh = max(self.dh - self.air, -self.max) elif self.keyRight: if self.dh < 0 and self.flagGround: + # Decelerate self.dh += self.dec if 0 < self.dh < self.dec: self.dh = self.dec - elif self.dh < self.max: + elif self.dh < self.max and self.state != "Rolling": + # Accelerate if self.flagGround: self.dh = min(self.dh + self.acc, self.max) else: self.dh = min(self.dh + self.air, self.max) elif not self.keyLeft and not self.keyRight and self.flagGround: - self.dh -= min(abs(self.dh), self.frc) * cmp(self.dh,0) + if self.state == "Rolling": + self.dh -= min(abs(self.dh), self.rfrc) * cmp(self.dh,0) + else: + self.dh -= min(abs(self.dh), self.frc) * cmp(self.dh,0) #Air Drag if 0 < self.dv < 4*const.SCALE and abs(self.dh) >= 0.125: @@ -149,15 +174,29 @@ def handle_physics(self): #Jumping if self.flagJumpNextFrame: - self.res.sound_dict['jump.wav'].play() + self.play_sound('jump.wav') self.dv = self.jmp self.set_gravity(self.gangle) + self.state = "Jumping" self.flagGround = False self.flagAllowJump = False self.flagJumpNextFrame = False if self.keyJump and self.flagGround and self.flagAllowJump: self.flagJumpNextFrame = True + def calculate_state(self): + if self.flagGround: + if self.state != "Rolling": + if self.dh == 0: + self.state = "Stopped" + elif 0 < abs(self.dh) < self.max: + self.state = "Walking" + elif abs(self.dh) >= self.max: + self.state = "Running" + else: + if self.state != "Jumping": + self.state = "Falling" + def set_gravity(self, gangle): _ = rotate_basis(self.dh, self.dv, self.angle, gangle) self.dh = _[0] @@ -409,6 +448,7 @@ def update(self, dt): self.perform_speed_movement(dt) if not self.flagGround or not self.perform_ground_test(): self.perform_gravity_movement(dt) + self.calculate_state() if self.flagGround: self.angle = self.calculate_angle() self.calculate_rangle() diff --git a/gamedata/sounds/spin.wav b/gamedata/sounds/spin.wav new file mode 100644 index 0000000000000000000000000000000000000000..f228bf1bb60d99ce0baec510b403a89d73cc7532 GIT binary patch literal 89684 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 literal 0 HcmV?d00001 diff --git a/porcupyne.py b/porcupyne.py index f21a721..4c82b51 100644 --- a/porcupyne.py +++ b/porcupyne.py @@ -125,13 +125,13 @@ def __init__(self): SlantPlatform(328, 96, res) ] self.controller = Controller(self.window, self.player1) - self.fps_display = font.Text(pyglet.font.load('', 36, bold = True), '', - color=(0.5, 0.5, 0.5, 0.5), x=-300, y=-200) + self.fps_display = font.Text(pyglet.font.load('', 18, bold = True), '', + color=(0.5, 0.5, 0.5, 0.5), x=-150, y=-100) - ft = font.load('Arial', 20) - self.debug_text = [font.Text(ft, x=200, y=200), - font.Text(ft, x=200, y=170), - font.Text(ft, x=200, y=140)] + ft = font.load('Arial', 10) + self.debug_text = [font.Text(ft, x=-150, y=100), + font.Text(ft, x=-150, y=85), + font.Text(ft, x=-150, y=70)] # alpha channels¨ rabbyt.set_default_attribs() @@ -197,7 +197,7 @@ def on_draw(self, dt): self.fps_display.draw() self.debug_text[0].text = str(int(self.player1.hlock)) - self.debug_text[1].text = str(0) + self.debug_text[1].text = str(self.player1.state) self.debug_text[2].text = str(self.player1.rangle) self.debug_text[0].draw() self.debug_text[1].draw()