Esempio n. 1
0
    def __init__(self, width, height, caption):
        pygame.init()
        # Размеры окна и заголовок
        self.width = width
        self.height = height
        self.size = (self.width, self.height)
        self.caption = caption
        pygame.display.set_caption(self.caption)
        # Экран с заданным размеров
        self.screen = pygame.display.set_mode(self.size)
        # Полноэкранный режим
        # self.screen = pygame.display.set_mode(self.size, pygame.FULLSCREEN)

        # Инициализация настроек
        self.config = Config()
        # Инициализация набора цветов
        self.colors = Colors()
        # Инициализация счетчика шагов
        self.step = 0
        # Инициализация списков объектов (Точки и трав)
        self.dotsList = []
        # Инициализация первой точки и добавление в список Точек
        self.firstDot = Dot()
        self.dotsList.append(self.firstDot)
        # Список координат трав
        self.grass = Grass()
        self.grassesCoords = self.grass.addGrass(self.width, self.height,
                                                 self.grass.startQuantity)

        self.font = pygame.font.SysFont(None, 16)
        self.screen_rect = self.screen.get_rect()

        pygame.mouse.set_visible(False)
Esempio n. 2
0
    def __init__(self, width, height, caption):
        pygame.init()
        # Размеры окна и заголовок
        self.width = width
        self.height = height
        self.size = (self.width, self.height)
        self.caption = caption
        pygame.display.set_caption(self.caption)
        # Экран с заданным размеров
        self.screen = pygame.display.set_mode(self.size)
        # Полноэкранный режим
        # self.screen = pygame.display.set_mode(self.size, pygame.FULLSCREEN)

        # Инициализация настроек
        self.config = Config()
        # Инициализация набора цветов
        self.colors = Colors()
        # Инициализация счетчика шагов
        self.step = 0
        # Инициализация списков объектов (Точки и трав)
        self.dotsList = []
        # Инициализация первой точки и добавление в список Точек
        self.firstDot = Dot()
        self.dotsList.append(self.firstDot)
        # Список координат трав
        self.grass = Grass()
        self.grassesCoords = self.grass.addGrass(self.width, self.height, self.grass.startQuantity)

        # Поверхность для создания графика статистики
        self.statsurf = pygame.Surface((240, 240))

        self.font_legend = pygame.font.SysFont("Roboto", 24)
        self.screen_rect = self.statsurf.get_rect()

        # Поверхность для создания симуляции
        self.simsurf = pygame.Surface((1040, 720))

        self.font_tooltip = pygame.font.SysFont("Roboto", 12)

        pygame.mouse.set_visible(False)

        self.filename = "stat.csv"
        self.frame = 0
        self.data = [["Time", "Population", "Resources", "Slows", "Middles", "Fasts"]]

        # Группы по скорости
        self.slowDots = []
        self.middleDots = []
        self.fastDots = []


        self.time = []
        self.population = []
        self.resources = []
        self.slows = []
        self.middles = []
        self.fasts = []
Esempio n. 3
0
 def show_score(self):
     self.screen.blit(self.score_grass, self.grass_score_rect)
     self.screen.blit(self.score_heart, self.heart_score_rect)
     # 绘制右上角的草的图案
     grass = Grass(self.screen, 1100, 10)
     grass.draw_grass()
     # 绘制右上角的心的图案
     heart = Heart(self.screen, 1000, 10)
     heart.draw_heart()
Esempio n. 4
0
def create_world():
    global boy, grass, balls, crowns, eventback
    boy = Boy()
    balls = [Ball() for i in range(10)]
    crowns = Crown()
    grass = Grass()
    eventback = EventBackground()
Esempio n. 5
0
def enter():
    global back_music
    image = load_image('ui\\title.png')
    back_music = load_music('Music\\ingame_Bgm.mp3')
    back_music.set_volume(64)
    back_music.repeat_play()
    get_time()
    global boy, boy1, grass, Inventory, bullet, score
    bullet = Bullet()
    boy = Boy()
    boy1 = Boy()

    score = game_Score()

    Inventory = inventory()
    grass = Grass()
    boy.Get_maptile(grass.line)
    boy1.Get_maptile(grass.line)
    boy.Get_inven(Inventory)
    boy1.Get_inven(Inventory)
    game_world.add_object(grass, 0)
    game_world.add_object(score, 0)
    game_world.add_object(Inventory, 0)
    game_world.add_object(boy, 1)
    game_world.add_object(boy1, 1)
    global Monster
Esempio n. 6
0
def enter():
    global slime
    slime = Slime()
    game_world.add_object(slime, 1)

    global grass
    grass = Grass()
    game_world.add_object(grass, 0)

    global blocks
    blocks = [BLOCK() for i in range(100)]
    for i in range(8):
        blocks[i].pos(check[i])
    game_world.add_objects(blocks, 1)

    global g_blocks
    g_blocks = [G_BLOCK() for i in range(100)]
    for i in range(5):
        g_blocks[i].pos(check2[i])
    game_world.add_objects(g_blocks, 1)

    global b_blocks
    b_blocks = [B_BLOCK() for i in range(100)]
    for i in range(5):
        b_blocks[i].pos(check3[i])
    game_world.add_objects(b_blocks, 1)

    global background
    background = Background()
    game_world.add_object(background, 0)
Esempio n. 7
0
def enter():
    global boy, ghost
    boy = Boy()
    ghost = Boy()
    grass = Grass()
    game_world.add_object(grass, 0)
    game_world.add_object(boy, 1)
Esempio n. 8
0
def enter():
    global boy
    global Die
    boy = Boy()
    grass = Grass()
    game_world.add_object(grass, 0)
    game_world.add_object(boy, 1)
Esempio n. 9
0
    def __init__(self, caption):
        """Инициализация основных параметров."""
        self.caption = caption
        self.config = Config()
        self.color = Colors()
        # Заголовок экрана
        pygame.display.set_caption(self.caption)
        # Экран с заданным размером
        self.screen = pygame.display.set_mode(self.config.screen_size)
        # Создается группа Точек/список спрайтов
        self.dot_list = pygame.sprite.Group()
        # Создается группа Травинок/список спрайтов
        self.grass_list = pygame.sprite.Group()
        # Создается группа всех спрайтов
        self.all_sprites_list = pygame.sprite.Group()

        for i in range(10):
            # Создание Точки
            self.dot = Dot()
            # Выбор случайных координат размещения Точки
            self.dot.rect.x = random.randrange(self.config.screen_width)
            self.dot.rect.y = random.randrange(self.config.screen_height)
            # Добавить точки в список точек
            self.dot_list.add(self.dot)
            self.all_sprites_list.add(self.dot)

        for i in range(100):
            # Создание травинки
            self.grass = Grass()
            # Выбор случайных координат размещения травинки
            self.grass.rect.x = random.randrange(self.config.screen_width)
            self.grass.rect.y = random.randrange(self.config.screen_height)
            # Добавить травинку в список травинок
            self.grass_list.add(self.grass)
            self.all_sprites_list.add(self.grass)
def enter():
    global boy
    grass = Grass()

    bird = Bird()
    game_world.add_object(grass, 0)
    game_world.add_object(bird, 1)
Esempio n. 11
0
def create_world():
    global boy, grass, balls, big_balls
    boy = Boy()
    big_balls = [BigBall() for i in range(10)]
    balls = [Ball() for i in range(10)]
    balls = big_balls + balls
    grass = Grass()
Esempio n. 12
0
def enter():
    global boy, grass, fire
    boy = Boy()
    grass = Grass()
    fire = Ball()
    game_world.add_object(grass, 0)
    game_world.add_object(boy, 1)
    game_world.add_object(fire, 1)
Esempio n. 13
0
def enter():
    global boy
    boy = Boy()
    game_world.add_object(boy, 1)

    global grass
    grass = Grass()
    game_world.add_object(grass, 0)
Esempio n. 14
0
    def getZeroField(self):
        field = np.zeros([self.face, self.face], dtype=object)

        for row in range(self.face):
            for col in range(self.face):
                field[row][col] = Grass(0, 0)

        return field
Esempio n. 15
0
def enter():
    server.boy = Boy()
    game_world.add_object(server.boy, 1)

    server.grass = Grass()
    game_world.add_object(server.grass, 0)

    server.balls = [Ball() for i in range(10)]
    game_world.add_objects(server.balls, 1)
Esempio n. 16
0
def enter():
    #global boy
    global bird
    #boy = Boy()
    bird = Bird()
    grass = Grass()
    game_world.add_object(grass, 0)
    #game_world.add_object(boy, 1)
    game_world.add_object(bird, 1)
Esempio n. 17
0
def generate_grass(amount):
    dx = size[0] / amount
    grass = []

    for x in range(amount):
        g = Grass(x * dx, 600, 300 + randint(-100, 100), 6)
        grass.append(g)

    return grass
Esempio n. 18
0
def enter():
    global boy
    boy = Boy()
    game_world.add_object(boy, 1)

    global grass
    grass = Grass()
    game_world.add_object(grass, 0)

    global bricks
    bricks = [Brick(300 + 300 * i, 100 + 50 * i) for i in range(5)]
    game_world.add_objects(bricks, 1)
Esempio n. 19
0
    def executeRule(self, const_grass: Grass, countNeighbours: int):
        grass = const_grass.copy()
        if grass.isLife():
            if countNeighbours in self.surv:
                grass.toAlive()
            else:
                grass.toDie()
        else:
            if countNeighbours in self.appear:
                grass.toAlive()

        return grass
Esempio n. 20
0
def enter():
    global boy
    boy = Boy()
    game_world.add_object(boy, 1)

    global grass
    grass = Grass()
    game_world.add_object(grass, 0)

    global balls
    balls = [Ball() for i in range(10)] + [BigBall() for i in range(10)] # 리스트 컴프리헨션
    game_world.add_objects(balls, 1)  # 게임월드에 집어넣음 add_objects() 함수가 추가됨 리스트에 있는 객체를 모두 게임월드에 집어넣음
Esempio n. 21
0
def enter():
    global boy
    boy = Boy()
    game_world.add_object(boy, 1)

    global grass
    grass = Grass()
    game_world.add_object(grass, 0)

    global balls
    balls = [Ball() for i in range(10)]
    game_world.add_objects(balls, 1)
Esempio n. 22
0
def create_world():
    global player, grass, stage, mobs, mobs2, mobs4, big_mobs, big_mobs2, big_mobs4, background, background2, bullet, bullets, bullet2, bullets2, grass2, score

    player = Player()
    grass = Grass()
    bullet = Bullet()
    bullets = [Bullet() for i in range(10)]
    bullet2 = Bullet2()
    bullets2 = [Bullet2() for i in range(10)]
    grass = Grass()
    grass2 = Grass2()
    background = Background()

    if (stage == 1):
        grass2 = Grass2()
        grass = Grass()
        background = Background()
        background2 = False
        big_mobs = [BigMob() for i in range(410)]
        big_mobs2 = [BigMob2() for i in range(0)]
        big_mobs4 = [BigMob4() for i in range(1)]

    if (stage == 2):
        grass2 = Grass2()
        grass = Grass()
        background = False
        background2 = Background2()
        big_mobs = [BigMob() for i in range(0)]
        big_mobs2 = [BigMob2() for i in range(800)]
        big_mobs4 = [BigMob4() for i in range(1)]

    mobs = [Mob() for i in range(0)]
    mobs = big_mobs + mobs

    mobs2 = [Mob2() for i in range(0)]
    mobs2 = big_mobs2 + mobs2

    mobs4 = [Mob4() for i in range(0)]
    mobs4 = big_mobs4 + mobs4
Esempio n. 23
0
def enter():
    global boy
    boy = Boy()
    game_world.add_object(boy, 1)

    global grass
    grass = Grass()
    game_world.add_object(grass, 0)

    global balls
    balls = [Ball() for i in range(10)] + [BigBall() for i in range(20)]
    game_world.add_objects(balls, 1)

    brick.image = load_image('brick180x40.png')
Esempio n. 24
0
def enter():
    global boy
    boy = Boy()
    game_world.add_object(boy, 1)

    global grass
    grass = Grass()
    game_world.add_object(grass, 0)

    # fill here for balls
    global balls
    #balls = [Ball() for i in range(10)]
    balls = [Ball() for i in range(10)] + [BigBall() for i in range(10)]
    game_world.add_objects(balls, 1)
Esempio n. 25
0
def enter():
    global boy
    boy = Boy()
    game_world.add_object(boy, 1)

    global grass
    grass = Grass()
    game_world.add_object(grass, 0)

    global balls
    balls = [Ball() for i in range(10)] + [BigBall() for i in range(10)]

    global brick
    brick = Brick()
    game_world.add_object(brick, 1)
    for i in range(20):
        game_world.add_object(balls[i], 1)
Esempio n. 26
0
def init_game():
    for y, row in enumerate(settings.field):
        for x, column in enumerate(row):
            if column == 1:
                settings.grass.append(
                    Grass(settings.main_surf, settings.field_size,
                          settings.cells_size, (x, y)))
            elif column == 2:
                settings.armor.append(
                    Armor(settings.main_surf, settings.field_size,
                          settings.cells_size, (x, y)))
            elif type(column) is list:

                for add_nums in column:
                    if add_nums[0] == 0:
                        if add_nums[1] % 2 == 0:
                            ind = 0
                        else:
                            ind = 3
                    else:
                        if add_nums[1] % 2 == 0:
                            ind = 2
                        else:
                            ind = 1

                    settings.bricks.append(
                        Brick(settings.main_surf, settings.field_size,
                              settings.cells_size,
                              (50 + settings.cells_size * x +
                               add_nums[0] * settings.cells_size // 2,
                               50 + settings.cells_size * y +
                               add_nums[1] * settings.cells_size // 4), ind))
            elif column == 4:
                settings.fin.append(
                    Fin(settings.main_surf, settings.field_size,
                        settings.cells_size, (x, y)))
                settings.fin_pos.append([x, y])

            elif column == 5:
                settings.spawns.append([x, y])
            elif column == 6:
                settings.bots_spawn.append([x, y])
            elif column == 7:
                settings.water.append(
                    Water(settings.main_surf, settings.field_size,
                          settings.cells_size, (x, y)))
Esempio n. 27
0
def enter():
    global boy
    boy = Boy()
    game_world.add_object(boy, 1)

    global grass
    grass = Grass()
    game_world.add_object(grass, 0)

    #global bird
    #Birds = [Bird() for i in range(5)]
    #for bird in Birds:
    #    bird = Bird()
    #    game_world.add_object(bird,2)

    global balls
    balls=[Ball() for i in range(10)]+[BigBall() for i in range(10)]
    game_world.add_objects(balls,1)
Esempio n. 28
0
def enter():
    global by, BGM, metronom, EnterTime, gameOverImage

    grass = Grass()
    metronom = Metro()
    game_world.add_object(grass, 0)
    game_world.add_object(metronom, 4)
    mapper()
    bulletRegister()
    if BGM is None:
        BGM = Stage1_Bgm()
    else:
        BGM.bgm.repeat_play()
    EnterTime = get_time()
    by = boy.Boy()
    game_world.add_object(by, 2)
    gameOverImage = GameOverImage()
    game_world.add_object(gameOverImage, 4)
def enter():
    global boy
    boy = Boy()
    game_world.add_object(boy, 1)

    global grass
    grass = Grass()
    game_world.add_object(grass, 0)

    global balls
    balls = [Ball() for i in range(10)]
    game_world.add_objects(balls, 1)

    global background
    background = Background()
    game_world.add_object(background, 0)

    background.set_center_object(boy)
Esempio n. 30
0
    def __init__(self,
                 width=800,
                 height=600,
                 food_size=5,
                 n_agents=1,
                 caption='Mundo das ovelhas',
                 food_energy=10,
                 time_to_growth=400,
                 flat=False,
                 mutation=1,
                 speed=4,
                 energy=20,
                 reproduction_energy=40):

        self.width = width
        self.height = height
        self.food_size = food_size
        self.n_agents = n_agents
        self.sheeps = list()
        self.foods = list()
        self.world = World(width, height, caption, flat)
        self.mutation = mutation

        # Instancia os recursos
        for x in range(0, self.world.width, food_size):
            for y in range(0, self.world.height, food_size):
                self.foods.append(
                    Grass(x, y, food_size, food_energy, time_to_growth))

        # Instancia os agentes
        for i in range(N_AGENTS):
            self.sheeps.append(
                Sheep(
                    randint(0, self.world.width),
                    randint(0, self.world.height),
                    #random(width),
                    #random(height),
                    choice(SHEEP_COLORS),
                    speed,
                    energy,
                    reproduction_energy))
Esempio n. 31
0
 def insertGrass(self, world_grid, y, x):
     grass = Grass(world_grid, y, x)
     world_grid.insertBotany(y, x, grass)
     grass.stepper()
Esempio n. 32
0
    def setup(self):
        self.worldNP = render.attachNewNode('World')

        # World
        self.debugNP = self.worldNP.attachNewNode(BulletDebugNode('Debug'))
        self.debugNP.hide()

        self.world = BulletWorld()
        self.world.setGravity(Vec3(0, 0, -9.81))
        self.world.setDebugNode(self.debugNP.node())

        # Plane
        #shape = BulletPlaneShape(Vec3(0, 0, 1), 0)        
        #mesh = BulletTriangleMesh()
        #geomNodes = loader.loadModel('levels/test1/collision').findAllMatches('**/+GeomNode')
        #geomNode = geomNodes.getPath(0).node()
        #geom = geomNode.getGeom(0)
        #mesh.addGeom(geom)
        #shape = BulletTriangleMeshShape(mesh, dynamic=False, bvh=True )                
        #np = self.worldNP.attachNewNode(BulletRigidBodyNode('Ground'))
        #np.node().addShape(shape)
        #np.setPos(0, 0, 20.0)
        #np.setCollideMask(BitMask32.allOn())
        #self.world.attachRigidBody(np.node())

        #sky dome
        self.sun_sky=Sky()
        self.sun_sky.setTime(17.0)
        
        #terrain
        self.ground=Terrain(self.world, self.worldNP)
        self.ground.loadMesh(path+'levels/gandg2/collision')
        self.ground.setMaps(path+'levels/gandg2/')
        self.ground.setTextures((39, 1, 2, 15, 4, 5))
        
        #grass
        self.grass=Grass()
        self.grass.setMap(path+'levels/gandg2/grass.png')     
        self.grass_to_cut=self.grass.getStatus()
        # Car
        self.car=Car(self.world, self.worldNP)
        self.car.setPos(161.0,160.0,26)
        #camera
        self.camera=FlyingCamera()
        
        #car to character scale 0.0128        
        self.char=Character(self.world, self.worldNP)        
        self.char.enterCar()
        #self.char.setPos(256, 250, 80)
        
        #filter manager, post process
        self.filters=Postprocess()        
        #self.filters.setupFxaa() 
        #no time to make it work, sorry...
        self.filters.setupFilters()
        
        
        #map objects .. hardcoded because of time
        self.object_root=render.attachNewNode('object_root')
        obj=[
            (path+'models/pyweek_wall1',0.0,(303.0,405.0,25.0980415344238),path+'models/pyweek_wall1_collision'),
            (path+'models/pyweek_wall1',0.0,(301.0,405.0,25.0980434417725),path+'models/pyweek_wall1_collision'),
            (path+'models/pyweek_wall1',0.0,(299.0,405.0,25.0980415344238),path+'models/pyweek_wall1_collision'),
            (path+'models/pyweek_wall1',0.0,(297.0,405.0,25.0980415344238),path+'models/pyweek_wall1_collision'),
            (path+'models/pyweek_wall1',0.0,(295.0,405.0,25.0980415344238),path+'models/pyweek_wall1_collision'),
            (path+'models/pyweek_wall1',0.0,(293.0,405.0,25.0980434417725),path+'models/pyweek_wall1_collision'),
            (path+'models/pyweek_wall1',0.0,(291.0,405.0,25.0980415344238),path+'models/pyweek_wall1_collision'),
            (path+'models/pyweek_wall1',0.0,(289.0,405.0,25.0980415344238),path+'models/pyweek_wall1_collision'),
            (path+'models/pyweek_wall1',0.0,(287.0,405.0,25.0980415344238),path+'models/pyweek_wall1_collision'),
            (path+'models/pyweek_wall1',0.0,(285.0,405.0,25.0980415344238),path+'models/pyweek_wall1_collision'),
            (path+'models/pyweek_wall1',0.0,(283.0,405.0,25.0980415344238),path+'models/pyweek_wall1_collision'),
            (path+'models/pyweek_wall1',0.0,(281.0,405.0,25.0980415344238),path+'models/pyweek_wall1_collision'),
            (path+'models/pyweek_wall1',0.0,(281.0,385.0,25.0980415344238),path+'models/pyweek_wall1_collision'),
            (path+'models/pyweek_wall1',0.0,(283.0,385.0,25.0980453491211),path+'models/pyweek_wall1_collision'),
            (path+'models/pyweek_wall1',0.0,(285.0,385.0,25.0980415344238),path+'models/pyweek_wall1_collision'),
            (path+'models/pyweek_wall1',90.0,(304.0,404.0,25.0980415344238),path+'models/pyweek_wall1_collision'),
            (path+'models/pyweek_wall1',90.0,(304.0,402.0,25.0980415344238),path+'models/pyweek_wall1_collision'),
            (path+'models/pyweek_wall1',90.0,(304.0,400.0,25.0980415344238),path+'models/pyweek_wall1_collision'),
            (path+'models/pyweek_wall1',90.0,(304.0,398.0,25.0980415344238),path+'models/pyweek_wall1_collision'),
            (path+'models/pyweek_wall1',90.0,(304.0,396.0,25.0980415344238),path+'models/pyweek_wall1_collision'),
            (path+'models/pyweek_wall1',90.0,(304.0,394.0,25.0980415344238),path+'models/pyweek_wall1_collision'),
            (path+'models/pyweek_wall1',90.0,(304.0,392.0,25.237850189209),path+'models/pyweek_wall1_collision'),
            (path+'models/pyweek_wall1',90.0,(280.0,404.0,25.0980415344238),path+'models/pyweek_wall1_collision'),
            (path+'models/pyweek_wall1',90.0,(280.0,398.0,25.0980415344238),path+'models/pyweek_wall1_collision'),
            (path+'models/pyweek_wall1',90.0,(280.0,396.0,25.0980415344238),path+'models/pyweek_wall1_collision'),
            (path+'models/pyweek_wall1',90.0,(280.0,394.0,25.0980415344238),path+'models/pyweek_wall1_collision'),
            (path+'models/pyweek_wall1',90.0,(280.0,392.0,25.0980415344238),path+'models/pyweek_wall1_collision'),
            (path+'models/pyweek_wall1',90.0,(280.0,390.0,25.0980415344238),path+'models/pyweek_wall1_collision'),
            (path+'models/pyweek_wall1',90.0,(280.0,388.0,25.0980415344238),path+'models/pyweek_wall1_collision'),
            (path+'models/pyweek_wall1',90.0,(280.0,386.0,25.0980415344238),path+'models/pyweek_wall1_collision'),
            (path+'models/pyweek_wall1',90.0,(286.0,386.0,25.0980415344238),path+'models/pyweek_wall1_collision'),
            (path+'models/pyweek_wall1',90.0,(286.0,388.0,25.0980415344238),path+'models/pyweek_wall1_collision'),
            (path+'models/pyweek_wall1',90.0,(286.0,390.0,25.0980434417725),path+'models/pyweek_wall1_collision'),
            (path+'models/pyweek_wall1',0.0,(287.0,391.0,25.0980415344238),path+'models/pyweek_wall1_collision'),
            (path+'models/pyweek_wall1',0.0,(289.0,391.0,25.1190624237061),path+'models/pyweek_wall1_collision'),
            (path+'models/pyweek_wall1',0.0,(291.0,391.0,25.1960334777832),path+'models/pyweek_wall1_collision'),
            (path+'models/pyweek_wall1',0.0,(293.0,391.0,25.1596641540527),path+'models/pyweek_wall1_collision'),
            (path+'models/pyweek_wall1',0.0,(295.0,391.0,25.2697868347168),path+'models/pyweek_wall1_collision'),
            (path+'models/pyweek_wall1',0.0,(297.0,391.0,25.3282146453857),path+'models/pyweek_wall1_collision'),
            (path+'models/pyweek_wall1',0.0,(299.0,391.0,25.3496627807617),path+'models/pyweek_wall1_collision'),
            (path+'models/pyweek_wall1',0.0,(301.0,391.0,25.2688617706299),path+'models/pyweek_wall1_collision'),
            (path+'models/pyweek_wall1',0.0,(303.0,391.0,25.2534332275391),path+'models/pyweek_wall1_collision'),
            (path+'models/pyweek_wall1',90.0,(280.0,402.0,25.0980415344238),path+'models/pyweek_wall1_collision'),
            (path+'models/pyweek_box',0.0,(279.600006103516,401.700012207031,25.0980415344238),None),
            (path+'models/pyweek_box',0.0,(279.399993896484,402.200012207031,25.0980415344238),None),
            (path+'models/pyweek_box',0.0,(279.600006103516,402.700012207031,25.0980415344238),None),
            (path+'models/pyweek_box',0.0,(279.399993896484,403.399993896484,25.0980415344238),None),
            (path+'models/pyweek_box',0.0,(278.799987792969,402.799987792969,25.0980415344238),None),
            (path+'models/pyweek_box',0.0,(278.799987792969,402.100006103516,25.0980415344238),None),
            (path+'models/pyweek_box',0.0,(279.0,401.5,25.0980415344238),None),
            (path+'models/pyweek_box',0.0,(278.5,401.600006103516,25.0980415344238),None),
            (path+'models/pyweek_box',0.0,(278.799987792969,401.899993896484,25.5980415344238),None),            
            (path+'models/pyweek_box',90.0,(279.5,402.600006103516,25.5980415344238),None),
            (path+'models/pyweek_box',90.0,(279.0,402.5,25.5980415344238),None),
            (path+'models/pyweek_box',90.0,(279.399993896484,402.0,25.5980415344238),None),
            (path+'models/pyweek_box',90.0,(278.100006103516,402.299987792969,25.0980415344238),None),
            (path+'models/pyweek_box',90.0,(277.799987792969,401.700012207031,25.0980415344238),None),
            (path+'models/pyweek_box',90.0,(278.200012207031,401.899993896484,25.5980415344238),None),
            (path+'models/pyweek_box',90.0,(279.399993896484,402.399993896484,26.0980415344238),None),
            (path+'models/pyweek_box',90.0,(279.0,401.899993896484,26.0980415344238),None),
            (path+'models/pyweek_box',90.0,(278.799987792969,402.399993896484,26.0980415344238),None)
            ]
        for i in obj:
            loadObject(model=i[0], H=i[1], pos=i[2], world=self.world, worldNP=self.worldNP, root=self.object_root, collision_solid=i[3])
        self.object_root.flattenStrong()
        
        #models/pyweek_gate,90.0,(280.0,399.0,25.0980415344238))
                
        #gui    
        self.hud=HUD()
        
        #volume
        sfxMgr = base.sfxManagerList[0]
        sfxMgr.setVolume(cfg['sound-volume']*0.01)
        musicMgr = base.musicManager
        musicMgr.setVolume(cfg['music-volume']*0.01)
        
        #music
        self.driving_music=loader.loadMusic(path+'music/driving.ogg')
        self.driving_music.setLoop(True) 
        self.driving_music.play()
        self.walking_music=loader.loadMusic(path+'music/walking.ogg')
        self.walking_music.setLoop(True) 
        
        print self.char.actor.getScale(render)    
Esempio n. 33
0
class Game(DirectObject):
    def __init__(self):      
        #the window props
        wp = WindowProperties.getDefault()                  
        wp.setUndecorated(False)          
        wp.setFullscreen(False)     
        wp.setSize(cfg['win-size'][0], cfg['win-size'][1])  
        wp.setOrigin(-2,-2)  
        wp.setFixedSize(False)  
        wp.setTitle("Grass and Gas - wezu -PyWeek 21")
        #open the window
        base.openMainWindow(props = wp)  
          
        base.setBackgroundColor(0, 0, 0, 1)
        base.disableMouse()   
        
        self.mode=DRIVING
        
        #make sure the config is ok
        cfg['hardware-skinning']=ConfigVariableBool('hardware-skinning', True).getValue()     
        cfg['srgb']=ConfigVariableBool('framebuffer-srgb', False).getValue()
        cfg['win-size']=[ConfigVariableInt('win-size', '640 480').getWord(0), ConfigVariableInt('win-size', '640 480').getWord(1)] 
        cfg['music-volume']=ConfigVariableInt('music-volume', '50').getValue()
        cfg['sound-volume']=ConfigVariableInt('sound-volume', '100').getValue()
        cfg['key-forward']=ConfigVariableString('key-forward','w').getValue()
        cfg['key-back']=ConfigVariableString('key-back','s').getValue()
        cfg['key-left']=ConfigVariableString('key-left','a').getValue()
        cfg['key-right']=ConfigVariableString('key-right','d').getValue()
        cfg['key-jump']=ConfigVariableString('key-jump','space').getValue()
        cfg['key-cut-grass']=ConfigVariableString('key-cut-grass','shift').getValue()
        cfg['key-enter-exit-car']=ConfigVariableString('key-enter-exit-car','tab').getValue()
        cfg['shadow-size']=ConfigVariableInt('shadow-size',1024).getValue()
        cfg['shadow-area']=ConfigVariableInt('shadow-area',50).getValue()
        
       
        
        self.accept('escape', self.doExit)
        self.accept('f1', self.hideHelp)
        self.accept(cfg['key-jump'], self.doFlip)
        self.accept( cfg['key-enter-exit-car'], self.changeMode)
        self.accept(cfg['key-cut-grass'], self.shear)
        self.accept( 'window-event', self.onWindowEvent)
        
        inputState.watchWithModifiers('forward', cfg['key-forward'])
        inputState.watchWithModifiers('reverse', cfg['key-back'])
        inputState.watchWithModifiers('turnLeft', cfg['key-left'])
        inputState.watchWithModifiers('turnRight', cfg['key-right'])

        # Task
        taskMgr.add(self.update, 'updateWorld') 
        taskMgr.doMethodLater(5.0, self.countGrass, 'grass_counter')
        
        # Physics
        self.setup()
        
        # _____HANDLER_____
    def hideHelp(self):        
        if self.hud.help_frame.isHidden():
            self.hud.help_frame.show()
        else:
            self.hud.help_frame.hide()
            
    def doExit(self):
        self.cleanup()
        sys.exit(1)

    def doReset(self):
        self.cleanup()
        self.setup()

    def toggleWireframe(self):
        base.toggleWireframe()

    def toggleTexture(self):
        base.toggleTexture()

    def toggleDebug(self):
        if self.debugNP.isHidden():
            self.debugNP.show()
        else:
            self.debugNP.hide()

    def doScreenshot(self):
        base.screenshot('Bullet')
        
    def onWindowEvent(self,window=None):
        if window is not None: # window is none if panda3d is not started             
            self.filters.update()            
            self.hud.updateGuiNodes() 
            

    def countGrass(self, task):
        current=self.grass.getStatus()
        if self.grass_to_cut ==0:
            self.grass_to_cut=current
        if current == 0:   
            return
        v= (float(current)/float(self.grass_to_cut))
        #print self.grass_to_cut,  current
        self.hud.counter['text']= str(int(v*100.0))+"%"
        return task.again
        
    def update(self, task):
        dt = globalClock.getDt()
        
        if self.mode==DRIVING:
            self.car.drive(dt)
            self.hud.showSpeed(self.car.getKmph())
            self.hud.showFuel(self.car.fuel)
            self.grass.setMowerPos(self.car.blade_node)
            self.hud.grradar_display['frameTexture']=self.grass.gradar['tex']
            node_to_follow=self.car.node
            speed=0.3
        elif self.mode==WALKING:    
            self.char.walk(dt)
            node_to_follow=self.char.actor_node
            speed=0.03
        self.world.doPhysics(dt, 10, 0.001)
        if self.mode!=EXITING:
            self.camera.follow(node_to_follow, dt, speed)
            
        self.sun_sky.sun_node.setPos(self.camera.cam_node.getPos(render))    
        return task.cont

    def cleanup(self):
        self.world = None
        self.worldNP.removeNode()
    
    def _setMode(self, mode):
        self.mode=mode
        #self.camera.zoomIn()
        
    def changeMode(self):
        if self.mode==DRIVING:
            if self.car.stopEngine():
                self.car.exitCar()
                self.char.exitCar(self.car.node)
                #self.char.getOutOfCar(self.car.node)
                Sequence(Wait(3.6), Func(self._setMode, WALKING)).start()
                self.mode=EXITING
                #self.camera.zoomIn()
                self.hud.hide()
                self.driving_music.stop()
                self.walking_music.play()
        elif self.mode==WALKING:
            if abs(self.char.node.getDistance(self.car.node))<2.0:
                #if self.char
                self.mode=DRIVING
                #self.camera.zoomOut()
                self.hud.show()
                self.char.enterCar()
                self.car.enterCar()
                self.driving_music.play()
                self.walking_music.stop()
                #self.car.node.node().setMass(self.car.mass)
            
    def doFlip(self):
        if self.mode==DRIVING:
            self.car.flip()
            self.grass.getStatus()
        if self.mode==WALKING:
            self.char.jump()
    
    def shear(self):
        if self.mode==DRIVING:
            if self.car.blade_spining:
                self.car.blade_spining=False
                self.grass.mower_blade.hide()
            else:    
                self.car.blade_spining=True
                self.grass.mower_blade.show()
                
    def setup(self):
        self.worldNP = render.attachNewNode('World')

        # World
        self.debugNP = self.worldNP.attachNewNode(BulletDebugNode('Debug'))
        self.debugNP.hide()

        self.world = BulletWorld()
        self.world.setGravity(Vec3(0, 0, -9.81))
        self.world.setDebugNode(self.debugNP.node())

        # Plane
        #shape = BulletPlaneShape(Vec3(0, 0, 1), 0)        
        #mesh = BulletTriangleMesh()
        #geomNodes = loader.loadModel('levels/test1/collision').findAllMatches('**/+GeomNode')
        #geomNode = geomNodes.getPath(0).node()
        #geom = geomNode.getGeom(0)
        #mesh.addGeom(geom)
        #shape = BulletTriangleMeshShape(mesh, dynamic=False, bvh=True )                
        #np = self.worldNP.attachNewNode(BulletRigidBodyNode('Ground'))
        #np.node().addShape(shape)
        #np.setPos(0, 0, 20.0)
        #np.setCollideMask(BitMask32.allOn())
        #self.world.attachRigidBody(np.node())

        #sky dome
        self.sun_sky=Sky()
        self.sun_sky.setTime(17.0)
        
        #terrain
        self.ground=Terrain(self.world, self.worldNP)
        self.ground.loadMesh(path+'levels/gandg2/collision')
        self.ground.setMaps(path+'levels/gandg2/')
        self.ground.setTextures((39, 1, 2, 15, 4, 5))
        
        #grass
        self.grass=Grass()
        self.grass.setMap(path+'levels/gandg2/grass.png')     
        self.grass_to_cut=self.grass.getStatus()
        # Car
        self.car=Car(self.world, self.worldNP)
        self.car.setPos(161.0,160.0,26)
        #camera
        self.camera=FlyingCamera()
        
        #car to character scale 0.0128        
        self.char=Character(self.world, self.worldNP)        
        self.char.enterCar()
        #self.char.setPos(256, 250, 80)
        
        #filter manager, post process
        self.filters=Postprocess()        
        #self.filters.setupFxaa() 
        #no time to make it work, sorry...
        self.filters.setupFilters()
        
        
        #map objects .. hardcoded because of time
        self.object_root=render.attachNewNode('object_root')
        obj=[
            (path+'models/pyweek_wall1',0.0,(303.0,405.0,25.0980415344238),path+'models/pyweek_wall1_collision'),
            (path+'models/pyweek_wall1',0.0,(301.0,405.0,25.0980434417725),path+'models/pyweek_wall1_collision'),
            (path+'models/pyweek_wall1',0.0,(299.0,405.0,25.0980415344238),path+'models/pyweek_wall1_collision'),
            (path+'models/pyweek_wall1',0.0,(297.0,405.0,25.0980415344238),path+'models/pyweek_wall1_collision'),
            (path+'models/pyweek_wall1',0.0,(295.0,405.0,25.0980415344238),path+'models/pyweek_wall1_collision'),
            (path+'models/pyweek_wall1',0.0,(293.0,405.0,25.0980434417725),path+'models/pyweek_wall1_collision'),
            (path+'models/pyweek_wall1',0.0,(291.0,405.0,25.0980415344238),path+'models/pyweek_wall1_collision'),
            (path+'models/pyweek_wall1',0.0,(289.0,405.0,25.0980415344238),path+'models/pyweek_wall1_collision'),
            (path+'models/pyweek_wall1',0.0,(287.0,405.0,25.0980415344238),path+'models/pyweek_wall1_collision'),
            (path+'models/pyweek_wall1',0.0,(285.0,405.0,25.0980415344238),path+'models/pyweek_wall1_collision'),
            (path+'models/pyweek_wall1',0.0,(283.0,405.0,25.0980415344238),path+'models/pyweek_wall1_collision'),
            (path+'models/pyweek_wall1',0.0,(281.0,405.0,25.0980415344238),path+'models/pyweek_wall1_collision'),
            (path+'models/pyweek_wall1',0.0,(281.0,385.0,25.0980415344238),path+'models/pyweek_wall1_collision'),
            (path+'models/pyweek_wall1',0.0,(283.0,385.0,25.0980453491211),path+'models/pyweek_wall1_collision'),
            (path+'models/pyweek_wall1',0.0,(285.0,385.0,25.0980415344238),path+'models/pyweek_wall1_collision'),
            (path+'models/pyweek_wall1',90.0,(304.0,404.0,25.0980415344238),path+'models/pyweek_wall1_collision'),
            (path+'models/pyweek_wall1',90.0,(304.0,402.0,25.0980415344238),path+'models/pyweek_wall1_collision'),
            (path+'models/pyweek_wall1',90.0,(304.0,400.0,25.0980415344238),path+'models/pyweek_wall1_collision'),
            (path+'models/pyweek_wall1',90.0,(304.0,398.0,25.0980415344238),path+'models/pyweek_wall1_collision'),
            (path+'models/pyweek_wall1',90.0,(304.0,396.0,25.0980415344238),path+'models/pyweek_wall1_collision'),
            (path+'models/pyweek_wall1',90.0,(304.0,394.0,25.0980415344238),path+'models/pyweek_wall1_collision'),
            (path+'models/pyweek_wall1',90.0,(304.0,392.0,25.237850189209),path+'models/pyweek_wall1_collision'),
            (path+'models/pyweek_wall1',90.0,(280.0,404.0,25.0980415344238),path+'models/pyweek_wall1_collision'),
            (path+'models/pyweek_wall1',90.0,(280.0,398.0,25.0980415344238),path+'models/pyweek_wall1_collision'),
            (path+'models/pyweek_wall1',90.0,(280.0,396.0,25.0980415344238),path+'models/pyweek_wall1_collision'),
            (path+'models/pyweek_wall1',90.0,(280.0,394.0,25.0980415344238),path+'models/pyweek_wall1_collision'),
            (path+'models/pyweek_wall1',90.0,(280.0,392.0,25.0980415344238),path+'models/pyweek_wall1_collision'),
            (path+'models/pyweek_wall1',90.0,(280.0,390.0,25.0980415344238),path+'models/pyweek_wall1_collision'),
            (path+'models/pyweek_wall1',90.0,(280.0,388.0,25.0980415344238),path+'models/pyweek_wall1_collision'),
            (path+'models/pyweek_wall1',90.0,(280.0,386.0,25.0980415344238),path+'models/pyweek_wall1_collision'),
            (path+'models/pyweek_wall1',90.0,(286.0,386.0,25.0980415344238),path+'models/pyweek_wall1_collision'),
            (path+'models/pyweek_wall1',90.0,(286.0,388.0,25.0980415344238),path+'models/pyweek_wall1_collision'),
            (path+'models/pyweek_wall1',90.0,(286.0,390.0,25.0980434417725),path+'models/pyweek_wall1_collision'),
            (path+'models/pyweek_wall1',0.0,(287.0,391.0,25.0980415344238),path+'models/pyweek_wall1_collision'),
            (path+'models/pyweek_wall1',0.0,(289.0,391.0,25.1190624237061),path+'models/pyweek_wall1_collision'),
            (path+'models/pyweek_wall1',0.0,(291.0,391.0,25.1960334777832),path+'models/pyweek_wall1_collision'),
            (path+'models/pyweek_wall1',0.0,(293.0,391.0,25.1596641540527),path+'models/pyweek_wall1_collision'),
            (path+'models/pyweek_wall1',0.0,(295.0,391.0,25.2697868347168),path+'models/pyweek_wall1_collision'),
            (path+'models/pyweek_wall1',0.0,(297.0,391.0,25.3282146453857),path+'models/pyweek_wall1_collision'),
            (path+'models/pyweek_wall1',0.0,(299.0,391.0,25.3496627807617),path+'models/pyweek_wall1_collision'),
            (path+'models/pyweek_wall1',0.0,(301.0,391.0,25.2688617706299),path+'models/pyweek_wall1_collision'),
            (path+'models/pyweek_wall1',0.0,(303.0,391.0,25.2534332275391),path+'models/pyweek_wall1_collision'),
            (path+'models/pyweek_wall1',90.0,(280.0,402.0,25.0980415344238),path+'models/pyweek_wall1_collision'),
            (path+'models/pyweek_box',0.0,(279.600006103516,401.700012207031,25.0980415344238),None),
            (path+'models/pyweek_box',0.0,(279.399993896484,402.200012207031,25.0980415344238),None),
            (path+'models/pyweek_box',0.0,(279.600006103516,402.700012207031,25.0980415344238),None),
            (path+'models/pyweek_box',0.0,(279.399993896484,403.399993896484,25.0980415344238),None),
            (path+'models/pyweek_box',0.0,(278.799987792969,402.799987792969,25.0980415344238),None),
            (path+'models/pyweek_box',0.0,(278.799987792969,402.100006103516,25.0980415344238),None),
            (path+'models/pyweek_box',0.0,(279.0,401.5,25.0980415344238),None),
            (path+'models/pyweek_box',0.0,(278.5,401.600006103516,25.0980415344238),None),
            (path+'models/pyweek_box',0.0,(278.799987792969,401.899993896484,25.5980415344238),None),            
            (path+'models/pyweek_box',90.0,(279.5,402.600006103516,25.5980415344238),None),
            (path+'models/pyweek_box',90.0,(279.0,402.5,25.5980415344238),None),
            (path+'models/pyweek_box',90.0,(279.399993896484,402.0,25.5980415344238),None),
            (path+'models/pyweek_box',90.0,(278.100006103516,402.299987792969,25.0980415344238),None),
            (path+'models/pyweek_box',90.0,(277.799987792969,401.700012207031,25.0980415344238),None),
            (path+'models/pyweek_box',90.0,(278.200012207031,401.899993896484,25.5980415344238),None),
            (path+'models/pyweek_box',90.0,(279.399993896484,402.399993896484,26.0980415344238),None),
            (path+'models/pyweek_box',90.0,(279.0,401.899993896484,26.0980415344238),None),
            (path+'models/pyweek_box',90.0,(278.799987792969,402.399993896484,26.0980415344238),None)
            ]
        for i in obj:
            loadObject(model=i[0], H=i[1], pos=i[2], world=self.world, worldNP=self.worldNP, root=self.object_root, collision_solid=i[3])
        self.object_root.flattenStrong()
        
        #models/pyweek_gate,90.0,(280.0,399.0,25.0980415344238))
                
        #gui    
        self.hud=HUD()
        
        #volume
        sfxMgr = base.sfxManagerList[0]
        sfxMgr.setVolume(cfg['sound-volume']*0.01)
        musicMgr = base.musicManager
        musicMgr.setVolume(cfg['music-volume']*0.01)
        
        #music
        self.driving_music=loader.loadMusic(path+'music/driving.ogg')
        self.driving_music.setLoop(True) 
        self.driving_music.play()
        self.walking_music=loader.loadMusic(path+'music/walking.ogg')
        self.walking_music.setLoop(True) 
        
        print self.char.actor.getScale(render)