コード例 #1
0
ファイル: game.py プロジェクト: denever/lettere
    def start(self):
        level = Level()
        level.init()
        (entities, trans) = parse_gsl_file(Config.data_path+'/testfile.gsl')
        
        
#        parse_emdl_file(entities, Config.data_path+'/map/level10.map', level)
        
        
        while True:
            self.console.process_input()
            self.input(pygame.event.get())
            self.screen.fill((0, 0, 0))
            pygame.time.wait(100)
            level.update_on_events()
            level.update()
            
            level.draw(self.screen)
            
            if self.show_states == True:
                level.draw_debug(self.screen)
                
            self.console.draw()    


            #self.screen.blit(surface, (0, 0))
            pygame.display.flip()
コード例 #2
0
ファイル: game.py プロジェクト: vbms11/vbms-robot-war-arena
class Game:
    '''
    classdocs
    '''
    
    camera = None
    level = None
    skyDome = None
    
    vehicles = None
    selectedVehicle = None
    
    # controls
    moveForwald = False
    moveBackwald = False
    straffLeft = False
    straffRight = False
    turnLeft = False
    turnRight = False
    
    millis = 0
    
    gameConfig = None
    
    def __init__(self, gameConfig):
        '''
        Constructor
        '''
        self.gameConfig = gameConfig
        
    def init (self):
        
        self.level = Level(self.gameConfig.levelFile)
        self.level.init()
        
        self.skyDome = SkyDome()
        self.skyDome.init("textures/sky_1.jpg")
        
        self.camera = Camera()
        
        self.vehicles = []
        for team in self.gameConfig.teams:
            teamVehicles = self.gameConfig.initialPlayers / len(team.bases)
            vehiclesPerBase = self.gameConfig.initialPlayers / len(team.bases)
            for baseId in team.bases:
                base = self.level.bases[baseId]
                base.owner = team
                vehiclesThisBase = int(ceil(vehiclesPerBase))
                teamVehicles -= vehiclesThisBase
                vehiclePositions = self.getInitialVehiclePositions(base, vehiclesThisBase)
                for vehiclePosition in vehiclePositions:
                    # create and place the vehicle
                    vehicle = LightTank(VehicleType)
                    vehicle.init([vehiclePosition[0], vehiclePosition[1], 0], team)
                    self.vehicles.append(vehicle)
                    # the first vehicle is the players
                    if self.selectedVehicle == None:
                        self.selectedVehicle = vehicle
                        
        pathFinder = PathFinder()
        path = pathFinder.findPath(1,1,17,17)
        print path
    
    def update (self, millis):
        
        self.millis = millis
        
        self.level.update()
        
        # move vehicle
        if self.turnLeft and not self.turnRight:
            self.selectedVehicle.turnLeft()
        if self.turnRight and not self.turnLeft:
            self.selectedVehicle.turnRight()
        if self.moveForwald and not self.moveBackwald:
            self.selectedVehicle.moveForwald()
        if self.moveBackwald and not self.moveForwald:
            self.selectedVehicle.moveBackwald()
        for vehicle in self.vehicles:
            vehicle.update()
        
        # set camera
        self.camera.setPosition(*self.selectedVehicle.getCameraPosition());
        self.camera.setDirection(self.selectedVehicle.aimDirection);
        
    def paint (self):
        
        self.camera.loadIdentity()
        
        self.skyDome.paint()
        
        self.level.paint()
        
        glDisable(GL_TEXTURE_2D)
        
        for vehicle in self.vehicles:
            vehicle.paint()
        
        glEnable(GL_TEXTURE_2D)
    
    def moveMouse (self, x, y):
        
        self.selectedVehicle.moveAim(x, y);
    
    def getInitialVehiclePositions (self, base, vehiclesThisBase):
        
        # make list of drivable tiles around the base
        basePosition = base.position
        baseRoadTiles = []
        for y in range(-1, 2):
            for x in range(-1, 2):
                if self.level.isDriveable(base.position[0] + x, base.position[1] + y):
                    baseRoadTiles.append([base.position[0] + x, base.position[1] + y])
        
        # find out if there is enuph space
        maxVehicles = len(baseRoadTiles) * 4
        vehiclesToProduce = 0
        vehiclesToPlace = vehiclesThisBase
        if vehiclesThisBase > maxVehicles:
            vehiclesToProduce = vehiclesThisBase - maxVehicles
            vehiclesToPlace = maxVehicles
        
        # randomly choose a valid position
        vehiclePositions = []
        possiblePositions = [[0.1,0.1],[0.6,0.1],[0.1,0.6],[0.6,0.6]]
        for vehicle in xrange(vehiclesToPlace):
            foundPosition = False
            position = None
            while foundPosition == False:
                shuffle(possiblePositions)
                roadTile = choice(baseRoadTiles)
                if not self.isVehiclePositionTaken([roadTile[0] + possiblePositions[0][0], roadTile[1] + possiblePositions[0][1]], vehiclePositions):
                    position = [roadTile[0] + possiblePositions[0][0], roadTile[1] + possiblePositions[0][1]]
                    foundPosition = True
                elif not self.isVehiclePositionTaken([roadTile[0] + possiblePositions[1][0], roadTile[1] + possiblePositions[1][1]], vehiclePositions):
                    position = [roadTile[0] + possiblePositions[1][0], roadTile[1] + possiblePositions[1][1]]
                    foundPosition = True
                elif not self.isVehiclePositionTaken([roadTile[0] + possiblePositions[2][0], roadTile[1] + possiblePositions[2][1]], vehiclePositions):
                    position = [roadTile[0] + possiblePositions[2][0], roadTile[1] + possiblePositions[2][1]]
                    foundPosition = True
                elif not self.isVehiclePositionTaken([roadTile[0] + possiblePositions[3][0], roadTile[1] + possiblePositions[3][1]], vehiclePositions):
                    position = [roadTile[0] + possiblePositions[3][0], roadTile[1] + possiblePositions[3][1]]
                    foundPosition = True
            vehiclePositions.append(position)
        return vehiclePositions
    
    def isVehiclePositionTaken (self, vehiclePosition, takenPositions):
        
        for position in takenPositions:
            if position[0] == vehiclePosition[0] and position[1] == vehiclePosition[1]:
                return True
        return False