예제 #1
0
    def setup(self):
        self.avatar = self.generateAvatar()
        #self.physSpace = self.generatePhysSpace()
        #self.track = self.generateNewTrack()
        #self.racers = self.generateRacers(2)
        #self.cameras = self.generateCameras(2)
        self.renderer = CustomRenderer(imageCache = Screen.imageCache)

        self.renderer.addAvatar(self.avatar)
예제 #2
0
 def setup(self):
     self.physSpace = self.generatePhysSpace()
     self.track = self.generateNewTrack()
     self.racers = self.generateRacers(2)
     self.cameras = self.generateCameras(2)
     self.renderer = CustomRenderer(imageCache = Screen.imageCache)
     self.renderer.setTrack(self.track)
     self.renderer.addRacers(self.racers)
     self.renderer.addCameras(self.cameras)
예제 #3
0
import pygame
import pymunk as phys
from renderer import CustomRenderer
from settings import Settings
from gameObjects.track import Track
from gameObjects.camera import Camera
from gameObjects.racer import Racer

if __name__ == "__main__":
    running = True

    renderer = CustomRenderer()

    clock = pygame.time.Clock()

    space = phys.Space()
    space.gravity = (0.0, -900.0)

    racer = Racer(phys.Vec2d(Settings.SCREEN_WIDTH/2,Settings.SCREEN_HEIGHT-30))
    #points = [(-10,15), (0,-18), (10,15), (-10,15)]
    #mass = 10
    #moment = phys.moment_for_poly(mass, points)

    #racer = phys.Body(10, moment)
    #racer.position = phys.Vec2d(Settings.SCREEN_WIDTH/2,
    #                           Settings.SCREEN_HEIGHT-30)
    #shape = phys.Poly(racer, points)
    #shape.friction = 0.5
    #shape.elasticity = 0.95
    #space.add(racer, shape)
    racer.setPhysicsSpace(space)
예제 #4
0
class GameScreen(Screen):

    def __init__(self, size, ui):
        Screen.__init__(self, None, size, ui)
        self.setup()

    def setup(self):
        self.avatar = self.generateAvatar()
        #self.physSpace = self.generatePhysSpace()
        #self.track = self.generateNewTrack()
        #self.racers = self.generateRacers(2)
        #self.cameras = self.generateCameras(2)
        self.renderer = CustomRenderer(imageCache = Screen.imageCache)

        self.renderer.addAvatar(self.avatar)
        #self.renderer.setTrack(self.track)
        #self.renderer.addRacers(self.racers)
        #self.renderer.addCameras(self.cameras)

    def generateAvatar(self):
        avatar = Avatar(dimension.Vect(Settings.SCREEN_WIDTH/2,Settings.SCREEN_HEIGHT/2))
        return avatar


    def initializeCallbackDict(self):
        self.callbackDict = {}
        #self.callbackDict['look'] = ('deviceString', self.steer)
    
        self.callbackDict['exit'] = ('deviceString', self.exit)
        self.callbackDict['p1control_left'] = ('deviceString', self.left)
        self.callbackDict['p1control_right'] = ('deviceString', self.right)

        self.callbackDict['p1control_leftStop'] = ('deviceString', self.leftStop)
        self.callbackDict['p1control_rightStop'] = ('deviceString', self.rightStop)

        self.callbackDict['p1control_jump'] = ('deviceString', self.jump)

    def left(self):
        self.avatar.moveLeft()

    def right(self):
        self.avatar.moveRight()

    def leftStop(self):
        self.avatar.moveLeftStop()

    def rightStop(self):
        self.avatar.moveRightStop()

    def jump(self):
        self.avatar.jump()

    def exit(self):
        self._ui.clearTopScreen()
        #pygame.mixer.music.stop()
    

    def draw(self, surf):
        #Bypasses traditional draw method with renderer
        self.renderer.render()
    
    def update(self, *args):
        gameTime, frameTime = args[:2]

        self.avatar.update(frameTime)
예제 #5
0
class GameScreen(Screen):

    def __init__(self, size, ui):
        Screen.__init__(self, None, size, ui)
        self.setup()

    def setup(self):
        self.physSpace = self.generatePhysSpace()
        self.track = self.generateNewTrack()
        self.racers = self.generateRacers(2)
        self.cameras = self.generateCameras(2)
        self.renderer = CustomRenderer(imageCache = Screen.imageCache)
        self.renderer.setTrack(self.track)
        self.renderer.addRacers(self.racers)
        self.renderer.addCameras(self.cameras)

    def generatePhysSpace(self):
        space = phys.Space()
        space.gravity = (0.0, 0.0)
        return space

    def generateNewTrack(self):
        track = Track()
        for t in xrange(50):
            track.addSegment(space=self.physSpace)
        return track
    
    def generateRacers(self, count):
        racers = []
        for r in xrange(count):
            start = Settings.SCREEN_WIDTH/2 - Settings.MIN_TRACK_WIDTH
            offset = (Settings.MIN_TRACK_WIDTH*2)/(count+1)
            position = ((1+r)*offset+start, 30)
            racer = Racer(position, space=self.physSpace)
            racers.append(racer)
        return racers
    
    def generateCameras(self, count):
        cameras = []
        if count == 1:
            camP1 = Camera((0,0),
                      (0,0,Settings.SCREEN_WIDTH,Settings.SCREEN_HEIGHT))
            cameras.append(camP1)
        elif count == 2:
            camP1 = Camera((0,0),
                      (0,0,
                      Settings.SCREEN_WIDTH/2,Settings.SCREEN_HEIGHT))
            camP2 = Camera((0,0),
                      (Settings.SCREEN_WIDTH/2,0,
                      Settings.SCREEN_WIDTH/2,Settings.SCREEN_HEIGHT))
            cameras.append(camP1)
            cameras.append(camP2)
        return cameras

    def initializeCallbackDict(self):
        self.callbackDict = {}
        #self.callbackDict['look'] = ('deviceString', self.steer)
        self.callbackDict['exit'] = ('deviceString', self.exit)
        self.callbackDict['p1boost'] = ('deviceString', self.boost)
        self.callbackDict['p2boost'] = ('deviceString', self.boost2)
        self.callbackDict['p1control'] = ('deviceString', self.steer)
        self.callbackDict['p2control'] = ('deviceString', self.steer2)


    def steerLeft(self):
        self.racers[0].steerLeft()
        
    def steerRight(self):
        self.racers[0].steerRight()

    def steer(self, event):
        loc = event.values[0] - 127.5
        self.racers[0].steer(loc)

    def steer2(self, event):
        loc = event.values[0] - 127.5
        self.racers[1].steer(loc)
    
    def boost(self):
        self.racers[0].boost()

    def boost2(self):
        self.racers[1].boost()

    def exit(self):
        self._ui.clearTopScreen()
        #pygame.mixer.music.stop()

    def draw(self, surf):
        #Bypasses traditional draw method with renderer
        self.renderer.render()

    def update(self, *args):
        gameTime, frameTime = args[:2]
        for cam, racer in zip(self.cameras,self.racers):
            cam.centerOnPt(racer.getPos())
        dt = 1.0/(Settings.MAX_FPS*20)
        for x in range(10):
            self.physSpace.step(dt)