Mercurial > mamba
changeset 122:45dd79e9ba1b
Rudimentary FPS and clock ticking.
author | Simon Cross <hodgestar@gmail.com> |
---|---|
date | Sun, 11 Sep 2011 21:14:56 +0200 |
parents | f670ef33ae2e |
children | 915fd0ee28f5 |
files | mamba/constants.py mamba/engine.py mamba/snake.py mamba/world.py |
diffstat | 4 files changed, 17 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/mamba/constants.py Sun Sep 11 21:09:52 2011 +0200 +++ b/mamba/constants.py Sun Sep 11 21:14:56 2011 +0200 @@ -7,6 +7,7 @@ # Miscellaneous constants NAME = "Unamed Mamba game" +FPS = 60 # Sound constants FREQ = 44100 # same as audio CD
--- a/mamba/engine.py Sun Sep 11 21:09:52 2011 +0200 +++ b/mamba/engine.py Sun Sep 11 21:14:56 2011 +0200 @@ -1,10 +1,11 @@ """Game engine and top-level game loop.""" -from mamba.constants import SCREEN +from mamba.constants import SCREEN, FPS from mamba.widgets.base import Container import pygame.event import pygame.display +import pygame.time import pygame from pygame.locals import QUIT, USEREVENT @@ -12,6 +13,7 @@ class Engine(object): def __init__(self): self._habitat = None + self._fps = FPS def set_habitat(self, habitat): if self._habitat is not None: @@ -24,6 +26,7 @@ """Game loop.""" get_events = pygame.event.get flip = pygame.display.flip + clock = pygame.time.Clock() while True: events = get_events() for ev in events: @@ -36,6 +39,7 @@ surface = pygame.display.get_surface() self._habitat.draw(surface) flip() + self._fps = 1000.0 / clock.tick(FPS) class Habitat(object):
--- a/mamba/snake.py Sun Sep 11 21:09:52 2011 +0200 +++ b/mamba/snake.py Sun Sep 11 21:14:56 2011 +0200 @@ -30,7 +30,7 @@ def draw(self, surface): self.segment_group.draw(surface) - def update(self): + def update(self, dt): pass def set_orientation(self, orientation):
--- a/mamba/world.py Sun Sep 11 21:09:52 2011 +0200 +++ b/mamba/world.py Sun Sep 11 21:14:56 2011 +0200 @@ -1,5 +1,7 @@ """World state (level, plus snake, plus other sprites).""" +import time + from mamba.snake import Snake @@ -8,6 +10,7 @@ self.level = level tile_pos, orientation = level.get_entry() self.snake = Snake(tile_pos, orientation) + self._prev = None def get_size(self): return self.level.get_size() @@ -17,4 +20,10 @@ self.snake.draw(surface) def update(self): - self.snake.update() + prev = self._prev + self._prev = time.time() + if prev is None: + return + dt = self._prev - prev + + self.snake.update(dt)