Exemple #1
0
    def create_cliff(self):
        self.cliffs = BatchNode()
        self.add(self.cliffs)

        for i, _ in enumerate(self.obstacle_map.cells):
            if not self.obstacle_map.cells[i][0].tile:
                self.cliffs.add(
                    Cliff(self.obstacle_map.cells[i][0].center,
                          self.obstacle_map))
Exemple #2
0
 def __init__( self, director, dificuldade ):
     super( GameLayer, self ).__init__()
     
     self.director = director
     self.tabuleiro = []
     self.offsetX = director.get_window_size()[0]/3
     self.offsetY = director.get_window_size()[1]/8
     lado = 45
     self.lado = lado
     self.dificuldade = dificuldade
     
     self.cpu = False
     
     self.prolog = Prolog()
     self.prolog.consult("reversi.pl")
     self.tabMatriz = list(self.prolog.query("novotab(X)"))[0]['X']
     self.matriz = deepcopy(self.tabMatriz)
     
     pyglet.font.add_directory('.')
     self.jogadorAtivo = Label("Jogador: Player1", font_name = 'Blood Of Dracula', font_size = 22,
                              x = 20, y = 350)
     self.add(self.jogadorAtivo)
     self.dif = Label("Dificuldade: " + self.dificuldade, font_name = 'Blood Of Dracula', font_size = 16,
                              x = 20, y = 300)
     self.add(self.dif)
     self.p = list(self.prolog.query("winner(" + str(self.tabMatriz) + ", P0, P1, P2)"))[0]
     self.p1 = Label("P1: " + str(self.p['P1']) + self.dificuldade, font_name = 'Bloodsuckers', font_size = 26,
                              x = 20, y = 200)
     self.p2 = Label("P1: " + str(self.p['P2']) + self.dificuldade, font_name = 'Bloodsuckers', font_size = 26,
                              x = 20, y = 150)
     self.add(self.p1)
     self.add(self.p2)
     
     #Batch que vai segurar todos os pecas
     self.spriteBatch = BatchNode()
     self.add(self.spriteBatch)
     
     size = 8*self.lado
     for i in range(8):
         l = []
         for j in range(8):
             peca = Peca(self.tabMatriz[i][j], (j*lado + lado/2, size - (i*lado + lado/2)))
             l.append(peca)
             self.spriteBatch.add(peca)
         self.tabuleiro.append(l)
         
     self.spriteBatch.add(Sprite("tabuleiro.png", 
                                 (self.tabuleiro[4][4].position[0] - lado/2, self.tabuleiro[4][4].position[1] + lado/2) 
                                 , 0, 1, 32), 0)
     
     self.spriteBatch.position = (self.offsetX, self.offsetY)
     self.spriteBatch.scale = 1.0        
     
     self.hud = GameHud()
     self.add(self.hud)
     
     self.schedule(self.gameLoop)
    def __init__(self, main_scene):
        self.bullets = BatchNode()
        self.walls = BatchNode()
        self.objects = BatchNode()
        self.backgrounds = BatchNode()
        self.tanks = BatchNode()
        # self.decorations = BatchNode()

        #main_scene = get_main_scene_layer()
        self.main_scene = main_scene
        self.main_scene.add(self.backgrounds, z=0)
        self.main_scene.add(self.bullets, z=1)
        # self.main_scene.add(self.decorations)
        self.main_scene.add(self.walls)
        self.main_scene.add(self.objects)
        self.main_scene.add(self.tanks)

        self.globalPanel = cocos.layer.Layer()
        self.main_scene.add(self.globalPanel, z=1)
Exemple #4
0
    def __init__(self, director):
        super(Tabuleiro, self).__init__()

        self.director = director
        self.tabuleiro = []
        self.offsetX = 100
        self.offsetY = 100
        lado = 32

        #montagem da matriz inicial
        self.tabMatriz = []
        for i in range(8):
            linha = []
            for j in range(8):
                linha.append(0)
            self.tabMatriz.append(linha)
        self.tabMatriz[3][3] = 1
        self.tabMatriz[3][4] = 2
        self.tabMatriz[4][3] = 2
        self.tabMatriz[4][4] = 1
        ###################################

        #Batch que vai segurar todos os pecas
        self.spriteBatch = BatchNode()
        self.add(self.spriteBatch)

        for i in range(8):
            l = []
            for j in range(8):
                if (self.tabMatriz[i][j] == 0):
                    peca = Peca("vazio.png",
                                (i * lado + lado / 2, j * lado + lado / 2))
                elif (self.tabMatriz[i][j] == 1):
                    peca = Peca("preto.png",
                                (i * lado + lado / 2, j * lado + lado / 2))
                elif (self.tabMatriz[i][j] == 2):
                    peca = Peca("branco.png",
                                (i * lado + lado / 2, j * lado + lado / 2))
                l.append(peca)
                self.spriteBatch.add(peca)
            self.tabuleiro.append(l)

        self.spriteBatch.position = (self.offsetX, self.offsetY)

        self.teste = Sprite("grossini.png", (300, 200))
        self.spriteBatch.add(self.teste)

        self.hud = GameHud()
        self.add(self.hud)

        for i in self.tabMatriz:
            print(i)
Exemple #5
0
    def __init__(self, minimap, w, h, size=10):
        super().__init__(0, 0, 0, 100, w * size, h * size)
        self.batch = BatchNode()
        for (i, j) in minimap:
            tmp = minimap[(i, j)]
            if tmp is not -1:
                img = 'grid/' + str(tmp) + '.png'
                pos = i * size, j * size
                spr = Sprite(image=img, position=pos)
                spr.scale_x, spr.scale_y = size / spr.width, size / spr.height
                spr.image_anchor = (0, 0)
                self.batch.add(spr)

        self.add(self.batch)
        self.frame = ColorLayer(0, 0, 100, 100, min(w * 10, 160),
                                min(h * 10, 90))
        self.add(self.frame)
Exemple #6
0
    def __init__(self, R):
        super(GameScene, self).__init__()
        self.R = R
        self.batch = BatchNode()
        self.collisionManager = CollisionModel.CollisionManagerBruteForce()
        #Main Background
        mainBack = Sprite(R._BACKGROUND[4])
        mainBack.position = (director._window_virtual_width / 2,
                             director._window_virtual_height / 2)
        self.add(mainBack)
        #Parallax-BackGround
        self.add(
            ParallaxBackground((0, 0, 800, 600),
                               [R._BACKGROUND[1], R._BACKGROUND[1]], 16, 10))
        self.add(
            ParallaxBackground((0, 0, 800, 600),
                               [R._BACKGROUND[2], R._BACKGROUND[2]], 4, 10))
        self.add(
            ParallaxBackground((0, 0, 800, 600),
                               [R._BACKGROUND[3], R._BACKGROUND[3]], 2, 10))

        #Add Player
        self.PLAYER = Player()
        self.ENEMY = Enemy()
        self.HUD = HUD()

        #set Data
        self.PLAYER.set(self)
        self.ENEMY.set(self)
        self.HUD.set(self)

        #Add layers
        self.add(self.PLAYER)
        self.add(self.ENEMY)
        self.add(self.HUD)

        #Adding Batch to Layer
        self.add(self.batch)
Exemple #7
0
    def __init__(self, *args):
        super().__init__()

        self.hud = args[0]
        self.obstacle_map = args[1]
        self.objects_map = args[2]
        self.tileset = args[3]

        self.create_mario()
        self.create_cliff()
        self.create_flag()

        self.enemies = BatchNode()
        self.add(self.enemies)
        self.enemy_objs = self.objects_map.match(label="enemy")
        self.exist_enemy_index = []

        width, height = director.get_window_size()
        self.cm = CollisionManagerGrid(0, width, 0, height, 20, 20)

        stats.reset_current_game()

        Sound.play("mario")
Exemple #8
0
    def __init__(self, battle_mech):
        super(MechSprite, self).__init__()

        self.battle_mech = battle_mech

        mech_img = pyglet.resource.image(self.battle_mech.getImagePath())
        mech_img_grid = pyglet.image.ImageGrid(mech_img, 1, 6)

        self.static = True

        img_static = Sprite(mech_img_grid[0])

        self.width = img_static.width
        self.height = img_static.height

        # TODO: setup the non square friendly/enemy indicators based on team of current player's turn
        if battle_mech.player.is_bot:
            indicator = Sprite(Resources.enemy_indicator_img)
        else:
            indicator = Sprite(Resources.friendly_indicator_img)

        indicator.visible = False
        indicator.position = 0, -img_static.height // 2 + indicator.height // 2 + 1
        self.indicator = indicator
        self.add(indicator, z=0)

        shadow = Sprite(MechSprite.shadow_img_grid[battle_mech.getSize() - 1])
        shadow_rect = shadow.get_rect()
        shadow_rect.bottomleft = (self.battle_mech.col * Board.TILE_SIZE), \
                                 (self.battle_mech.row * Board.TILE_SIZE)
        shadow.position = shadow_rect.center
        self.shadow = shadow

        rect = img_static.get_rect()
        rect.bottomleft = (self.battle_mech.col * Board.TILE_SIZE) - (img_static.width//2 - shadow.width//2), \
                          (self.battle_mech.row * Board.TILE_SIZE)
        self.position = rect.center

        self.node = BatchNode()
        self.add(self.node, z=2)

        img_static.y = Board.TILE_SIZE//4
        self.node.add(img_static)
        self.img_static = img_static

        img_ct = Sprite(mech_img_grid[1])
        img_ct.y = Board.TILE_SIZE//4
        self.img_ct = img_ct

        img_ll = Sprite(mech_img_grid[4])
        img_ll.y = Board.TILE_SIZE//4
        self.img_ll = img_ll

        img_rl = Sprite(mech_img_grid[5])
        img_rl.y = Board.TILE_SIZE//4
        self.img_rl = img_rl

        img_la = Sprite(mech_img_grid[2])
        img_la.y = Board.TILE_SIZE//4
        self.img_la = img_la

        img_ra = Sprite(mech_img_grid[3])
        img_ra.y = Board.TILE_SIZE//4
        self.img_ra = img_ra

        # testing the stats stuff
        self.stats = BatchNode()
        self.updateStatsIndicators()
Exemple #9
0
 def __init__(self, image):
     self.image = image
     self.batch = BatchNode()
     self.create_background()
Exemple #10
0
    def __init__(self):
        super(Board, self).__init__()

        Board.BOARD = self

        self.boardMap = {}
        self.cellMap = {}

        # add basic ground
        ground_img = Resources.ground_img
        node = BatchNode()
        self.add(node, z=0)

        for row in range(self.numRows):
            for col in range(self.numCols):
                cell = Cell(ground_img)
                rect = cell.get_rect()
                rect.bottomleft = col * 32, row * 32
                cell.position = rect.center
                node.add(cell, z=0)

                self.cellMap[(col, row)] = cell

        # add buildings
        buildings_tex = Resources.buildings_tex

        # test 3x2 Building at 1,4
        self.boardMap[(1, 4)] = {self.KEY_TYPE: self.TYPE_BUILDING,
                                 self.KEY_COLUMNS: 3,
                                 self.KEY_ROWS: 2,
                                 self.KEY_LEVEL: 1,
                                 self.KEY_ELEVATION: 0,
                                 self.KEY_IMAGES: buildings_tex[(0, 0):(3, 3)]}
        self.boardMap[(2, 4)] = {self.KEY_REF: (1, 4)}
        self.boardMap[(3, 4)] = {self.KEY_REF: (1, 4)}
        self.boardMap[(1, 5)] = {self.KEY_REF: (1, 4)}
        self.boardMap[(2, 5)] = {self.KEY_REF: (1, 4)}
        self.boardMap[(3, 5)] = {self.KEY_REF: (1, 4)}

        # test 2x2 Building at 5,4
        self.boardMap[(5, 4)] = {self.KEY_TYPE: self.TYPE_BUILDING,
                                 self.KEY_COLUMNS: 2,
                                 self.KEY_ROWS: 2,
                                 self.KEY_LEVEL: 1,
                                 self.KEY_ELEVATION: 0,
                                 self.KEY_IMAGES: buildings_tex[(3, 0):(7, 2)]}
        self.boardMap[(6, 4)] = {self.KEY_REF: (5, 4)}
        self.boardMap[(5, 5)] = {self.KEY_REF: (5, 4)}
        self.boardMap[(6, 5)] = {self.KEY_REF: (5, 4)}

        # test 2x2 Building at 10,6
        self.boardMap[(10, 6)] = {self.KEY_TYPE: self.TYPE_BUILDING,
                                  self.KEY_COLUMNS: 2,
                                  self.KEY_ROWS: 2,
                                  self.KEY_LEVEL: 1,
                                  self.KEY_ELEVATION: 0,
                                  self.KEY_IMAGES: buildings_tex[(3, 2):(7, 4)]}
        self.boardMap[(11, 6)] = {self.KEY_REF: (10, 6)}
        self.boardMap[(10, 7)] = {self.KEY_REF: (10, 6)}
        self.boardMap[(11, 7)] = {self.KEY_REF: (10, 6)}

        # test 3x2 Building at 10,2
        self.boardMap[(10, 2)] = {self.KEY_TYPE: self.TYPE_BUILDING,
                                  self.KEY_COLUMNS: 3,
                                  self.KEY_ROWS: 2,
                                  self.KEY_LEVEL: 1,
                                  self.KEY_ELEVATION: 0,
                                  self.KEY_IMAGES: buildings_tex[(3, 5):(7, 8)]}
        self.boardMap[(11, 2)] = {self.KEY_REF: (10, 2)}
        self.boardMap[(12, 2)] = {self.KEY_REF: (10, 2)}
        self.boardMap[(10, 3)] = {self.KEY_REF: (10, 2)}
        self.boardMap[(11, 3)] = {self.KEY_REF: (10, 2)}
        self.boardMap[(12, 3)] = {self.KEY_REF: (10, 2)}

        # test 2x2x2 Building at 12,12
        self.boardMap[(12, 12)] = {self.KEY_TYPE: self.TYPE_BUILDING,
                                   self.KEY_COLUMNS: 2,
                                   self.KEY_ROWS: 2,
                                   self.KEY_LEVEL: 2,
                                   self.KEY_ELEVATION: 0,
                                   self.KEY_IMAGES: buildings_tex[(3, 10):(8, 12)]}
        self.boardMap[(13, 12)] = {self.KEY_REF: (12, 12)}
        self.boardMap[(12, 13)] = {self.KEY_REF: (12, 12)}
        self.boardMap[(13, 13)] = {self.KEY_REF: (12, 12)}

        # test 3x3 Building at 15,10
        self.boardMap[(15, 10)] = {self.KEY_TYPE: self.TYPE_BUILDING,
                                   self.KEY_COLUMNS: 3,
                                   self.KEY_ROWS: 3,
                                   self.KEY_LEVEL: 1,
                                   self.KEY_ELEVATION: 0,
                                   self.KEY_IMAGES: buildings_tex[(7, 10):(13, 13)]}
        self.boardMap[(16, 10)] = {self.KEY_REF: (15, 10)}
        self.boardMap[(17, 10)] = {self.KEY_REF: (15, 10)}
        self.boardMap[(15, 11)] = {self.KEY_REF: (15, 10)}
        self.boardMap[(16, 11)] = {self.KEY_REF: (15, 10)}
        self.boardMap[(17, 11)] = {self.KEY_REF: (15, 10)}
        self.boardMap[(15, 12)] = {self.KEY_REF: (15, 10)}
        self.boardMap[(16, 12)] = {self.KEY_REF: (15, 10)}
        self.boardMap[(17, 12)] = {self.KEY_REF: (15, 10)}

        # test 5x2 Building at 3,14
        self.boardMap[(3, 14)] = {self.KEY_TYPE: self.TYPE_BUILDING,
                                  self.KEY_COLUMNS: 5,
                                  self.KEY_ROWS: 2,
                                  self.KEY_LEVEL: 0,
                                  self.KEY_ELEVATION: 0,
                                  self.KEY_IMAGES: buildings_tex[(9, 0):(11, 5)]}
        self.boardMap[(4, 14)] = {self.KEY_REF: (3, 14)}
        self.boardMap[(5, 14)] = {self.KEY_REF: (3, 14)}
        self.boardMap[(6, 14)] = {self.KEY_REF: (3, 14)}
        self.boardMap[(7, 14)] = {self.KEY_REF: (3, 14)}
        self.boardMap[(3, 15)] = {self.KEY_REF: (3, 14)}
        self.boardMap[(4, 15)] = {self.KEY_REF: (3, 14)}
        self.boardMap[(5, 15)] = {self.KEY_REF: (3, 14)}
        self.boardMap[(6, 15)] = {self.KEY_REF: (3, 14)}
        self.boardMap[(7, 15)] = {self.KEY_REF: (3, 14)}

        for col, row in self.boardMap:
            loc = (col, row)
            cell_data = self.boardMap[loc]

            cell_images = cell_data.get(self.KEY_IMAGES)

            if cell_images is not None:
                cell_level = cell_data[self.KEY_LEVEL]
                cell_z = (self.numCols - row - cell_level) * 10

                cell_batch = BatchNode()
                cell_batch.position = col * self.TILE_SIZE, row * self.TILE_SIZE
                self.add(cell_batch, z=cell_z)

                cell_cols = cell_data[self.KEY_COLUMNS]
                cell_rows = cell_data[self.KEY_ROWS]
                for this_row in range(cell_rows + cell_level):
                    for this_col in range(cell_cols):
                        cell_index = this_col + (this_row * cell_cols)
                        cell_sprite = Sprite(cell_images[cell_index])

                        cell_rect = cell_sprite.get_rect()
                        cell_rect.bottomleft = this_col * self.TILE_SIZE, this_row * self.TILE_SIZE
                        cell_sprite.position = cell_rect.center

                        cell_batch.add(cell_sprite)
Exemple #11
0
    def __init__(self):
        """
        label:
        players:
        grass:
        projectiles:
        controllers:
        robots:
        castle:


        """
        super().__init__()

        width, height = game_board["size"]

        self.label = Label("debug")
        self.label.position = 100, 100

        # players...
        self.players = [
            #Actor(item_types["player1"], (500, 100), self.label),
            Actor(item_types["player2"], (100, 600)),
            #Actor(item_types["player3"], (250, 600)),
            #Actor(item_types["player4"], (900, 600)),
        ]
        last_player_id = 0

        # controllers...
        self.controllers = [Player(p) for p in self.players]
        for controller in self.controllers:
            controller.id = last_player_id
            last_player_id += 1

        # grass...
        grass_distance = 50
        x_margin, y_margin, width, height = (width // 2, grass_distance, width,
                                             height -
                                             game_board["castle_depth"])
        self.grass = [[
            Actor(item_types["grass" + str(randint(1, 3))], (x, y))
            for x in range(-x_margin, width + x_margin, grass_distance)
        ] for y in range(-y_margin, height, grass_distance)]

        # projectiles...
        self.projectiles = []

        # robots...
        self.robots = [
            Actor(item_types["robot1"], (200, 700)),
            Actor(item_types["robot1"], (800, 400)),
            Actor(item_types["robot1"], (300, 500)),
            Actor(item_types["robot1"], (600, 600)),
            Actor(item_types["robot2"], (500, 800)),
            Actor(item_types["robot3"], (800, 900)),
        ]

        # castle...
        self.castle = Actor(item_types["castle1"], (500, 1000))

        # add to game layer...

        # create grass in batches to speed up game
        from cocos.batch import BatchNode
        for grass_batch in self.grass:
            batch = BatchNode()
            for grass in grass_batch:
                grass.alpha = 0.8
                batch.add(grass)
            self.add(batch, -grass_batch[0].coord.y)

        self.add(self.label)

        for robot in self.robots:
            self.add(robot, -robot.coord.y)

        for player in self.players:
            self.add(player, -player.coord.y)

        for controller in self.controllers:
            self.add(controller)

        self.add(self.castle, -self.castle.coord.y)

        print("Game Layer Children" + str(len(self.children)))

        self.do(CollisionAction())
Exemple #12
0
    def updatePlayerUnitStats(self, battle_unit):
        if self.unit_display is not None:
            self.unit_display.kill()
            self.unit_name.kill()
            self.unit_variant.kill()
            self.unit_stats.kill()
            self.unit_values.kill()

        if battle_unit is None:
            # Hide player unit stats at bottom left
            self.unit_display = None
            self.unit_name = None
            self.unit_variant = None
            self.unit_stats = None
            self.unit_values = None
            return

        size = director.get_window_size()
        width = size[0]
        height = size[1]

        self.unit_display = BatchNode()
        self.unit_display.position = 0, 0

        mech_img_grid = pyglet.image.ImageGrid(
            pyglet.resource.image(battle_unit.getImagePath()), 1, 6)
        mech_img_static = mech_img_grid[0]
        pitch = -(mech_img_static.width * len('RGBA'))
        img_data = mech_img_static.get_image_data()

        # testing with masking only a portion of the image
        damage_height = int(
            mech_img_static.height)  # int(mech_img_static.height * 0.67)
        data = img_data.get_region(0, 0, mech_img_static.width,
                                   damage_height).get_data('RGBA', pitch)

        mask = Image.frombytes('RGBA', (mech_img_static.width, damage_height),
                               data)
        # the first image is the color that the stamp will be
        img1 = Image.new('RGBA', mask.size, color=(0, 0, 0, 255))
        # second image is the background
        img2 = Image.new('RGBA', mask.size, color=(225, 225, 225, 200))
        img1 = img1.convert('RGBA')

        # apply mask to background image
        img = Image.composite(img1, img2, mask)

        raw_image = img.tobytes()
        img_x = mask.size[0]
        img_y = mask.size[1]
        pyg_img = pyglet.image.ImageData(img_x,
                                         img_y,
                                         'RGBA',
                                         raw_image,
                                         pitch=-img_x * len('RGBA'))

        mech_sprite = Sprite(pyg_img)
        mech_sprite.position = Board.TILE_SIZE // 2 + mech_sprite.width // 2, \
                               Board.TILE_SIZE + mech_sprite.height // 2

        self.unit_display.add(mech_sprite)
        self.add(self.unit_display)

        # Show unit name above the image
        self.unit_name = floaters.TextFloater(battle_unit.getName(),
                                              font_name='TranscendsGames',
                                              font_size=Board.TILE_SIZE // 2,
                                              anchor_x='left',
                                              anchor_y='bottom')
        self.unit_name.position = Board.TILE_SIZE // 2, mech_sprite.get_rect(
        ).topleft[1]
        self.add(self.unit_name)

        # Show unit variant below the image
        self.unit_variant = floaters.TextFloater(
            battle_unit.getVariant().upper(),
            font_name='TranscendsGames',
            font_size=Board.TILE_SIZE // 3,
            anchor_x='left',
            anchor_y='top')

        self.unit_variant.position = Board.TILE_SIZE // 2, Board.TILE_SIZE - 4
        self.add(self.unit_variant)

        # Show armor, structure, heat stats next to the image (top)
        self.unit_stats = UnitStats(battle_unit)
        stats_pos = mech_sprite.get_rect().topright
        self.unit_stats.position = 4 + stats_pos[0], stats_pos[
            1] - self.unit_stats.height
        self.add(self.unit_stats)

        # Show move and attack numbers next to the image (bottom)
        values = "MV %i  ATK %i/%i/%i" % (battle_unit.getTurnMove(),
                                          battle_unit.short,
                                          battle_unit.medium, battle_unit.long)
        self.unit_values = floaters.TextFloater(values,
                                                font_name='TranscendsGames',
                                                font_size=Board.TILE_SIZE // 4,
                                                anchor_x='left',
                                                anchor_y='bottom')
        values_pos = mech_sprite.get_rect().bottomright
        self.unit_values.position = 4 + values_pos[0], values_pos[1] - 2
        self.add(self.unit_values)
Exemple #13
0
# pr.print_stats()

benchmark(1)

import sys
sys.path.extend(['/home/andrei/Python/tanks'])
sys.path.extend(['/home/andrei/Python/tanks/assets'])

import numpy as np
from cocos import director
from cocos import scene
from cocos.batch import BatchNode
from cocos import sprite
from objects.Tank import Tank
director.director.init(width=2048, height=960, resizable=True, autoscale=False)
layer = BatchNode()
c = sprite.Sprite('gil-brazo2.png')
c.position = (12, 11)
layer.add(c)
layer.add(c)
layer.get_children()

t = tanks_list[3]

tanks_list.index(t)

tanks_list = layer.get_children()
tanks = np.array(list(map(lambda obj: obj.position, tanks_list)))
dist_sq = np.sum((tanks[:, np.newaxis] - tanks[np.newaxis, :])**2, axis=-1)
K = 3
nearest_sorted = np.argsort(dist_sq, axis=1)[:, :K + 1]