コード例 #1
0
ファイル: unit.py プロジェクト: ltsissykitty/Game
    def __init__( self, screen, unitname, spritesheet ):

        self.spritesheet = spritesheet
        self.unit_ss = Spritesheet( spritesheet )
        self.unit_sprite = (0, 0, 40, 40)
        self.unit_image = self.unit_ss.image_at( self.unit_sprite )
        
        self.move_tile_ss = Spritesheet('spritesheets/move_tile.bmp')
        self.move_tile_image = self.move_tile_ss.image_at((0, 0, 40, 40))
        
        self.screen = screen
        self.unitname = unitname
        
        self.frame = 0
  
        self.pos_x = 0
        self.pos_y = 0
        self.distance_x = 0
        self.distance_y = 0
        self.move_x = 0
        self.move_y = 0
        self.speed = 10
        self.unit_location = (self.pos_x, self.pos_y)
        
        self.state = 'idle'
        self.pressed_z = 0
コード例 #2
0
ファイル: cursor.py プロジェクト: ltsissykitty/Game
 def __init__(self, screen):  
     ss = Spritesheet('spritesheets/cursor.bmp')
     self.screen = screen
     self.pos_x = 0
     self.pos_y = 0
     self.location = (self.pos_x,self.pos_y)
     self.image = ss.image_at((0, 0, 40, 40))
コード例 #3
0
ファイル: background.py プロジェクト: ltsissykitty/Game
    def __init__(self, screen):  
        grass = Spritesheet('tiles/grass/grass.bmp')
        water = Spritesheet('tiles/water/water.bmp')

        self.grass = grass.image_at((0, 0, 40, 40))
        self.water = water.image_at((0, 0, 40, 40))

        self.tile = screen
        self.screen = screen
        
        self.mapdata = [line.strip() for line in open("maps/map0.txt", "r")]

        self.pos_x = 0
        self.pos_y = 0
        self.location = (self.pos_x, self.pos_y)
コード例 #4
0
ファイル: spacejaunt.py プロジェクト: z-van-baars/SpaceJaunt
    def __init__(self):
        super().__init__()
        self.state = 2

        sprite_sheet = Spritesheet("art/crosshair.png")

        self.states = []
        image = sprite_sheet.get_image(0, 0, 30, 30)
        self.states.append(image)
        image = sprite_sheet.get_image(0, 30, 30, 30)
        self.states.append(image)
        image = sprite_sheet.get_image(0, 60, 30, 30)
        self.states.append(image)

        self.image = self.states[self.state]

        self.rect = self.image.get_rect()
コード例 #5
0
ファイル: bullet.py プロジェクト: Vanya08/platformer
 def __init__(self, x, y):
     pygame.sprite.Sprite.__init__(self)
     ss = Spritesheet(bullet_image)
     self.bullet_images = ss.images_at([\
         (275, 69, 20, 10)\
     ], -1)
     self.bullets = []
     for bullet in self.bullet_images:
         self.bullets.append(pygame.transform.rotate(bullet, 90))
     self.idx = 0
     self.image = self.bullets[self.idx]
     self.last_idx = len(self.bullets) - 1
     self.rect = self.image.get_rect()
     self.rect.midbottom = (x, y)
     self.speed = 4
     self.frames_count = 0
     self.animate_each_frame = 10
コード例 #6
0
ファイル: player.py プロジェクト: xDetroUK/YoutubeTutorials
 def load_frames(self):
     my_spritesheet = Spritesheet('poppy_sheet.png')
     #pygame.image.load('MY_IMAGE_NAME.png').convert()
     self.idle_frames_left = [
         my_spritesheet.parse_sprite("poppy_idle1.png"),
         my_spritesheet.parse_sprite("poppy_idle2.png")
     ]
     self.walking_frames_left = [
         my_spritesheet.parse_sprite("poppywalk1.png"),
         my_spritesheet.parse_sprite("poppywalk2.png"),
         my_spritesheet.parse_sprite("poppywalk3.png"),
         my_spritesheet.parse_sprite("poppywalk4.png"),
         my_spritesheet.parse_sprite("poppywalk5.png"),
         my_spritesheet.parse_sprite("poppywalk6.png"),
         my_spritesheet.parse_sprite("poppywalk7.png"),
         my_spritesheet.parse_sprite("poppywalk8.png")
     ]
     self.idle_frames_right = []
     for frame in self.idle_frames_left:
         self.idle_frames_right.append(
             pygame.transform.flip(frame, True, False))
     self.walking_frames_right = []
     for frame in self.walking_frames_left:
         self.walking_frames_right.append(
             pygame.transform.flip(frame, True, False))
コード例 #7
0
    def on_init(self):
        self._running = True
        pygame.init()
        pygame.font.init()
        self.font = pygame.font.Font(None, 20)
        self.TILE_HEIGHT = 32
        self.TILE_WIDTH = 32
        self.MESSAGE_BOX_WIDTH = 400
        self.size = self.weight, self.height = self.gameMap.xSize * self.TILE_WIDTH + self.MESSAGE_BOX_WIDTH, \
          self.gameMap.ySize * self.TILE_HEIGHT
        self.msgBoxLeft = self.gameMap.xSize * self.TILE_WIDTH
        self.output = self
        self.screen = pygame.display.set_mode(
            self.size, pygame.HWSURFACE | pygame.DOUBLEBUF)
        #        msgBaseDelaySecs = self.msgBaseDelaySecs;

        # Default spritesheet assets
        self.sprites = Spritesheet(
            "assets/fantasy-tileset-8cols-26rows-32x32pixels.png")
        self.spritesPlural = Spritesheet(
            "assets/fantasy-tileset-8cols-26rows-32x32pixels-shadow.png")
        self.enemySprites = Spritesheet(
            "assets/fantasy-tileset-8cols-26rows-32x32pixels-red.png")

        output = self.output
        self.gameTime = 0

        output.log("Game begins!")

        self.dead = []
        output.dump()
        #        time.sleep(2 * msgBaseDelaySecs);

        # Position armies
        iX = 0
        iY = 2
        for oItemA in self.aAttackers:
            oItemA.x = iX
            oItemA.y = iY
            iX += 1
            if (iX == self.gameMap.xSize):
                iX = 0
                iY += 1
コード例 #8
0
ファイル: game.py プロジェクト: fernandosq/eoi
    def load_data(self):
        """Adding music & fx"""
        root_folder = path.dirname(__file__)
        img_folder = path.join(root_folder, "data", "img")
        music_folder = path.join(root_folder, "data", "music")
        fx_folder = path.join(root_folder, "data", "fx")

        sprites = Spritesheet(path.join(img_folder, "spritesheet_x2.png"))

        # IMAGES

        self.item_images = {}
        for item_name in ITEMS:
            sprite_at = ITEMS[item_name]['SPRITE_AT']
            self.item_images[item_name] = sprites.image_at(
                sprite_at[0], sprite_at[1], TILESIZE, 2, KEY_COLOR)

        self.player_img = sprites.image_at(PLAYER_SPRITE_AT[0],
                                           PLAYER_SPRITE_AT[1], TILESIZE, 2,
                                           KEY_COLOR)

        self.bee_img = sprites.image_at(BEE_SPRITE_AT[0], BEE_SPRITE_AT[1],
                                        TILESIZE, 2, KEY_COLOR)

        self.bee_nest_img = sprites.image_at(BEE_NEST_SPRITE_AT[0],
                                             BEE_NEST_SPRITE_AT[1], TILESIZE,
                                             2, KEY_COLOR)

        self.top_wall_img = sprites.image_at(TOP_WALL_SPRITE_AT[0],
                                             TOP_WALL_SPRITE_AT[1], TILESIZE,
                                             2, KEY_COLOR)

        self.front_wall_img = sprites.image_at(FRONT_WALL_SPRITE_AT[0],
                                               FRONT_WALL_SPRITE_AT[1],
                                               TILESIZE, 2, KEY_COLOR)

        # SOUND
        # Using arrays to add some variance
        pygame.mixer.music.load(path.join(music_folder, BG_MUSIC))
        self.basic_gun_fx = []
        for fx in BASIC_GUN_FX:
            pewpew = pygame.mixer.Sound(path.join(fx_folder, fx))
            pewpew.set_volume(0.1)
            self.basic_gun_fx.append(pewpew)
        self.critter_death_fx = []
        for fx in CRITTER_DEAD_FX:
            self.critter_death_fx.append(
                pygame.mixer.Sound(path.join(fx_folder, fx)))
        self.item_fx = {}
        for fx in ITEMS:
            self.item_fx[fx] = pygame.mixer.Sound(
                path.join(fx_folder, ITEMS[fx]['FX']))
コード例 #9
0
 def __init__(self, x, y):
     pygame.sprite.Sprite.__init__(self)
     ss = Spritesheet(shoot_image)
     self.bullets = ss.images_at([\
         (107, 272, 14, 14), \
         (126, 272, 15, 14), \
         (145, 273, 15, 13), \
         (165, 271, 14, 15), \
         (184, 272, 14, 14), \
         (201, 273, 16 ,14), \
         (221, 273, 15, 13), \
         (240, 271, 14, 15), \
         ], -1)
     self.image = self.bullets[0]
     self.idx = 0
     self.rect = self.image.get_rect()
     self.rect.center = (x, y)
     self.speed = 5
     self.frames_count = 0
     self.animate_each_frame = 10
コード例 #10
0
    def load_frames(self):
        bullet_spritesheet = Spritesheet('images/bullet/player/bullet.png')
        e_bullet_spritesheet = Spritesheet('images/bullet/enemy/bullet.png')
        self.bullet_frames = [
            bullet_spritesheet.parse_sprite('bullet1.png'),
            bullet_spritesheet.parse_sprite('bullet2.png'),
            bullet_spritesheet.parse_sprite('bullet3.png'),
            bullet_spritesheet.parse_sprite('bullet4.png'),
            bullet_spritesheet.parse_sprite('bullet5.png'),
            bullet_spritesheet.parse_sprite('bullet6.png'),
        ]

        self.enemy_bullet_frames = [
            e_bullet_spritesheet.parse_sprite('bullet1.png'),
            e_bullet_spritesheet.parse_sprite('bullet2.png'),
            e_bullet_spritesheet.parse_sprite('bullet3.png')
        ]
コード例 #11
0
ファイル: startscreen.py プロジェクト: avu916/space-invaders
    def __init__(self, settings, screen, button):
        self.screen = screen
        self.screen_rect = screen.get_rect()
        self.theSettings = Settings
        self.button = button

        ss = Spritesheet('images/space_invaders_spritesheet.png')

        # Load in alien images
        self.image = ss.image_at((65, 512, 64, 64))
        self.image2 = ss.image_at((65, 704, 64, 64))
        self.image3 = ss.image_at((65, 896, 64, 64))
        self.image4 = ss.image_at((65, 0, 64, 64))
        self.rect = self.image.get_rect()

        self.text_color = (30, 30, 30)
        self.font = pygame.font.SysFont(None, 48)

        screen = pygame.display.set_mode(
            (settings.screen_width, settings.screen_height))
        screen.fill(settings.bg_color)
コード例 #12
0
    def __init__(self):
        pygame.init()
        self.window = pygame.display.set_mode((WIDTH, HEIGHT))
        self.running = True

        victory_spritesheet = Spritesheet('sudoku_winner_spritesheet.png')
        border_sprites = Spritesheet('borders.png')
        VictoryAnimation.images = victory_spritesheet.imgsat(
            VictoryAnimation.img_rects, -1)
        self.border_images = border_sprites.imgsat(border_img_locs, -1)

        self.grid = [[0 for i in range(9)] for j in range(9)]
        self.grid_finished = [[0 for i in range(9)] for j in range(9)]
        # self.grid = test_board_2
        # self.grid_finished = test_board_2_finished

        self.selected = None
        self.mouse_pos = None
        self.mouse_click = None
        self.finished = False
        self.cell_changed = False
        self.show_victory = False
        self.status = ''
        self.incorrect_cells = []
        self.locked_cells = []
        self.state = "playing"
        self.playing_buttons = []
        self.menu_buttons = []
        self.end_buttons = []

        self.victory = VictoryAnimation(victory_pos)

        self.font = pygame.font.SysFont('arial', int(cell_size / 2))
        self.load()
コード例 #13
0
ファイル: player.py プロジェクト: xDetroUK/YoutubeTutorials
class Player(pygame.sprite.Sprite):
    def __init__(self):
        pygame.sprite.Sprite.__init__(self)
        self.image = Spritesheet('spritesheet.png').parse_sprite('chick.png')
        self.rect = self.image.get_rect()
        self.LEFT_KEY, self.RIGHT_KEY, self.FACING_LEFT = False, False, False
        self.is_jumping, self.on_ground = False, False
        self.gravity, self.friction = .35, -.12
        self.position, self.velocity = pygame.math.Vector2(
            0, 0), pygame.math.Vector2(0, 0)
        self.acceleration = pygame.math.Vector2(0, self.gravity)

    def draw(self, display):
        display.blit(self.image, (self.rect.x, self.rect.y))

    def update(self, dt):
        self.horizontal_movement(dt)
        self.vertical_movement(dt)

    def horizontal_movement(self, dt):
        self.acceleration.x = 0
        if self.LEFT_KEY:
            self.acceleration.x -= .3
        elif self.RIGHT_KEY:
            self.acceleration.x += .3
        self.acceleration.x += self.velocity.x * self.friction
        self.velocity.x += self.acceleration.x * dt
        self.limit_velocity(4)
        self.position.x += self.velocity.x * dt + (self.acceleration.x *
                                                   .5) * (dt * dt)
        self.rect.x = self.position.x

    def vertical_movement(self, dt):
        self.velocity.y += self.acceleration.y * dt
        if self.velocity.y > 7: self.velocity.y = 7
        self.position.y += self.velocity.y * dt + (self.acceleration.y *
                                                   .5) * (dt * dt)
        if self.position.y > 128:
            self.on_ground = True
            self.velocity.y = 0
            self.position.y = 128
        self.rect.bottom = self.position.y

    def limit_velocity(self, max_vel):
        min(-max_vel, max(self.velocity.x, max_vel))
        if abs(self.velocity.x) < .01: self.velocity.x = 0

    def jump(self):
        if self.on_ground:
            self.is_jumping = True
            self.velocity.y -= 8
            self.on_ground = False
コード例 #14
0
 def __init__(self, game, pos_x, pos_y):
     self.game = game
     groups = game.all_sprites, game.character_sprites
     pg.sprite.Sprite.__init__(self, groups)
     self.pos = vec2(pos_x, pos_y)
     self.health = 100
     self.moving_out_counter = 0
     self.moving_out_wait_start_time = None
     self.moved_out = False
     self._idle_sprites = []
     self._hit_sprites = []
     self._angry_sprites = []
     self._spritesheet_file = 'assets/moose.png'
     self._spritesheet = Spritesheet(self._spritesheet_file)
     self._load_default_sprite()
     self._load_sprites()
     self.rect = self.image.get_rect(topleft=self.pos)
     self.state = CharacterState.IDLE
     self._animation_counter = 0
     self._animation_index = 0
     self._hit_animation_counter = 0
     self._angry_animation_counter = 0
コード例 #15
0
    def get_unscaled_portal_sprites():
        portalsheet = Spritesheet('images/portals.png')
        portal_images_unscaled = [
            portalsheet.get_image(x=364, y=7, w=177, h=176),
            portalsheet.get_image(x=553, y=14, w=163, h=163),
            portalsheet.get_image(x=7, y=222, w=161, h=159),
            portalsheet.get_image(x=193, y=220, w=155, h=158),
            portalsheet.get_image(x=373, y=222, w=159, h=158),
            portalsheet.get_image(x=553, y=220, w=163, h=163)
        ]

        return portal_images_unscaled
コード例 #16
0
ファイル: game.py プロジェクト: gkotas/Scrabble
    def __init__(self):
        SceneBase.__init__(self)
        self.scrabble = Scrabble(True)
        self.board = Board('imgs/board.jpg', [0, 0])
        self.letter_ss = Spritesheet('imgs/letters.jpg')
        self.player_tiles = []
        self.game_tiles = []
        self.selected_tile = None
        self.offset_x = 0
        self.offset_y = 0

        for i, letter in enumerate(self.scrabble.get_rack()):
            self.player_tiles.append(
                Tile(letter, self.letter_ss, PLAYER_TILE_POSITIONS[i]))
コード例 #17
0
class Tilemap(object):
    def __init__(self, levelfile, spritesheetfile):
        self.Level = Level()
        self.Level.load_file(levelfile)
        self.Spritesheet = Spritesheet(spritesheetfile)

    def get_tilesize(self):
        return self.Level.tilesize

    def get_tile(self, x, y):
        t = self.Level.get_tuple(x, y, "tile")
        if t != None and t[0] != -1:
            return self.Spritesheet.image_at(t)
        return None
コード例 #18
0
ファイル: ship.py プロジェクト: avu916/space-invaders
    def __init__(self, ai_settings, screen):
        """Initialize the ship, and set its starting position."""
        super(Ship, self).__init__()
        self.screen = screen
        self.ai_settings = ai_settings

        ss = Spritesheet('images/space_invaders_spritesheet.png')

        # Load the ship image, and get its rect.
        self.image = ss.image_at((0, 192, 64, 64))
        self.rect = self.image.get_rect()
        self.screen_rect = screen.get_rect()

        # Start each new ship at the bottom center of the screen.
        self.rect.centerx = self.screen_rect.centerx
        self.rect.bottom = self.screen_rect.bottom

        # Store a decimal value for the ship's center.
        self.center = float(self.rect.centerx)

        # Movement flags.
        self.moving_right = False
        self.moving_left = False
コード例 #19
0
ファイル: alien.py プロジェクト: GabeMags/AlienInvasion
    def __init__(self, ai_settings, screen):
        #initialize the alien and set its starting position
        super(Alien, self).__init__()
        self.screen = screen
        self.ai_settings = ai_settings
        self.image = Spritesheet('images/spritesheet.png')
        self.images = []
        self.index = 0
        self.images.append(
            self.image.image_at((640, 0, 64, 64), colorkey=(0, 0, 0, 1)))
        self.images.append(
            self.image.image_at((704, 0, 64, 64), colorkey=(0, 0, 0, 1)))
        self.image = self.images[self.index]
        self.score = 10

        #load the alien image and set its rect attribute
        self.rect = self.image.get_rect()

        #start each new alien near the top left of the screen
        self.rect.x = self.rect.width
        self.rect.y = self.rect.height

        #store the alien's exact position
        self.x = float(self.rect.x)
コード例 #20
0
    def load_data(self):
        """Let's create more sensible data structures for each group"""
        root_folder = path.dirname(__file__)
        img_folder = path.join(root_folder, "data", "img")
        music_folder = path.join(root_folder, "data", "music")
        fx_folder = path.join(root_folder, "data", "fx")

        sprites = Spritesheet(path.join(img_folder, "spritesheet_x2.png"))

        # IMAGES & SOUND

        self.images = {}
        self.fx = {}

        for item in ITEMS:
            sprite_at = ITEMS[item]['SPRITE']
            self.images[item] = sprites.image_at(sprite_at[0], sprite_at[1],
                                                 TILESIZE, 2, KEY_COLOR)
            fx = pygame.mixer.Sound(
                path.join(fx_folder, ITEMS[item]['FX_PICKUP']))
            fx.set_volume(0.1)
            self.fx[item] = fx

        for mob in MOBS:
            sprite_at = MOBS[mob]['SPRITE']
            self.images[mob] = sprites.image_at(sprite_at[0], sprite_at[1],
                                                TILESIZE, 2, KEY_COLOR)
            fx = pygame.mixer.Sound(path.join(fx_folder,
                                              MOBS[mob]['FX_DEATH']))
            fx.set_volume(0.1)
            self.fx[mob] = fx

        for nest in NESTS:
            sprite_at = NESTS[nest]['SPRITE']
            self.images[nest] = sprites.image_at(sprite_at[0], sprite_at[1],
                                                 TILESIZE, 2, KEY_COLOR)
            fx = pygame.mixer.Sound(
                path.join(fx_folder, NESTS[nest]['FX_DEATH']))
            fx.set_volume(0.1)
            self.fx[nest] = fx

        for weapon in WEAPONS:
            fx = pygame.mixer.Sound(path.join(fx_folder,
                                              WEAPONS[weapon]['FX']))
            fx.set_volume(0.1)
            self.fx[weapon] = fx

        self.tiles = {}
        for wall in WALLS:
            for orientation in ['TOP', 'FRONT']:
                sprite_at = WALLS[wall][orientation]
                self.tiles[f"{wall}_{orientation}"] = sprites.image_at(
                    sprite_at[0], sprite_at[1], TILESIZE, 2, KEY_COLOR)

        # MUSIC
        pygame.mixer.music.load(path.join(music_folder, BG_MUSIC))
コード例 #21
0
    def load_data(self):
        """Loads pertinent data for the game"""
        # Map initialization
        self.map = TiledMap(r'../assets/stage_1.tmx')
        self.map_image = self.map.make_map()
        map_rect = self.map_image.get_rect()

        # Sprite initialization
        pacman_sprites = Spritesheet(r'../assets/sprites.png')
        self.open_mouth = pacman_sprites.get_sprite(0, 0, TILESIZE, TILESIZE)

        pellet_sprites = Spritesheet(r'../assets/small_pellet.png')
        self.pellet_sprite = pellet_sprites.get_sprite(0, 0, TILESIZE, TILESIZE)
コード例 #22
0
    def get_fruit_sprites():
        spritesheet = Spritesheet('images/spritesheet.png')

        fruit_images = [
            spritesheet.get_image(x=(24 * 0), y=(24 * 5), w=24,
                                  h=24),  # cherries
            spritesheet.get_image(x=(24 * 1), y=(24 * 5), w=24,
                                  h=24),  # strawberry
            spritesheet.get_image(x=(24 * 2), y=(24 * 5), w=24,
                                  h=24),  # orange
            spritesheet.get_image(x=(24 * 3), y=(24 * 5), w=24, h=24),  # ?????
            spritesheet.get_image(x=(24 * 4), y=(24 * 5), w=24, h=24),  # apple
            spritesheet.get_image(x=(24 * 5), y=(24 * 5), w=24,
                                  h=24),  # grapes
        ]

        return fruit_images
コード例 #23
0
ファイル: unit.py プロジェクト: ltsissykitty/Game
    def update( self, cursor_x, cursor_y ):
        self.unit_ss = Spritesheet( self.spritesheet )
        
        if self.state == 'idle':
            self._animate('idle')
            if self.pressed_z and self.pos_x == cursor_x and self.pos_y == cursor_y:
                self.state = 'selected'
                self.pressed_z = 0
        elif self.state == 'selected':
            self._animate('selected')
            if self.pressed_z:
                self.state = 'moving'
        elif self.state == 'moving':
            self._animate('moving')
            self._move( cursor_x, cursor_y )

        self.pressed_z = 0
        self.unit_location = (self.pos_x,self.pos_y)
        self.unit_image = self.unit_ss.image_at( self.unit_sprite )
コード例 #24
0
ファイル: main.py プロジェクト: xdaku/TileGame-Lua
 def __init__(self, arg):
     pygame.init()
     self.opt = Setting()
     self.name_map = arg.name_map
     self.screen = pygame.display.set_mode((self.opt.WIDTH + self.opt.TILE_SIZE*15,self.opt.HEIGHT + self.opt.TILE_SIZE*3))
     self.set_grill_surface()
     pygame.display.set_caption(self.opt.TITLE)
     self.path = os.path.dirname(__file__)
     self.path_img = os.path.join(self.path, ".." , "src", "img")
     self.images = Spritesheet(self)
     self.path_maps = os.path.join(self.path, ".." , "src", "maps", self.name_map + self.opt.LUA_FORMAT)
     self.create = not os.path.exists(self.path_maps)
     self.builder = Builder(self)
     self.clock = pygame.time.Clock()
     self.converter = Converter(self)
     self.map = Map(self)
     self.selector = Selector(self)
     self.toolbar = Toolbar(self)
     self.loop()
     pygame.quit()
コード例 #25
0
class Tileset(object):
    def __init__(self, tileset, assetdir):
        self._imageCache = {}
        self.tileset = tileset
        self.tile_count = self.tileset.tile_count
        self.usecache = True

        fp = os.path.join(assetdir, tileset.image.source)
        self._spriteSheet = Spritesheet(fp)

    def image_at_index(self, index):
        rawIndex = index - 1
        # assumes using tileset w/h
        w = self.tileset.max_tile_size.width
        h = self.tileset.max_tile_size.height
        y = math.floor(rawIndex / self.tileset.columns) * h
        x = (rawIndex % self.tileset.columns) * w
        return self.image_at([x, y, w, h])

    def image_at(self, rectangle, colorkey=None):
        return self._spriteSheet.image_at(rectangle)
コード例 #26
0
ファイル: game.py プロジェクト: fernandosq/eoi
    def load_data(self):
        root_folder = path.dirname(__file__)

        sprites = Spritesheet(
            path.join(root_folder, "data", "img", "spritesheet.png"))

        self.player_img = sprites.image_at(
            PLAYER_SPRITE_AT[0], PLAYER_SPRITE_AT[1], TILESIZE, 1, KEY)

        self.bee_img = sprites.image_at(
            BEE_SPRITE_AT[0], BEE_SPRITE_AT[1], TILESIZE, 1, KEY)

        self.top_wall_img = sprites.image_at(
            TOP_WALL_SPRITE_AT[0], TOP_WALL_SPRITE_AT[1], TILESIZE, 1, KEY)
        self.front_wall_img = sprites.image_at(
            FRONT_WALL_SPRITE_AT[0], FRONT_WALL_SPRITE_AT[1], TILESIZE, 1, KEY)
コード例 #27
0
class Floor(pg.sprite.Sprite):
    """Class for the floor in levels

    Attributes:
        pos_x: x position on the map
        pos_y: y position on the map
    """
    def __init__(self, pos_x, pos_y):
        """Constructs a new floor class

        Args:
            pos_x: x position on the map
            pos_y: y position on the map
        """
        super().__init__()

        self.sprite_sheet = Spritesheet("floor.png")
        self.image = choice(self.sprite_sheet.load_strip((0, 0, 50, 50), 4))
        self.rect = self.image.get_rect()

        self.rect.x = pos_x
        self.rect.y = pos_y
コード例 #28
0
class tree(object):
    def __init__(self, tree, x, y):
        self.tree = tree
        self.get = Spritesheet(tree)
        self.image = self.get.get_spritte()
        self.rect = self.image[0].get_rect()
        self.rect.x = x
        self.rect.y = y
        self.vel = pygame.math.Vector2(0, 0)
        self.acceleration = pygame.math.Vector2(0, .1)
        self.on_ground = False
        self.drop = False
        self.col = False

    def draw(self, win):
        if not self.col and not self.drop:
            win.blit(self.image[random.randint(1, 10)],
                     (self.rect.x, self.rect.y))
        elif self.col or self.drop:
            self.rect.x = random.randint(100, 1700)
            self.rect.y = 40
            self.col = False

    def update(self, dt, plat):
        self.checkCollisionspy(plat)

    def checkCollisionspy(self, platform):
        if not self.on_ground:
            self.rect.bottom += 4
        if self.rect.y >= 1000:
            self.col = True

    def get_hits(self, players):
        hits = []
        for player in players:
            if self.rect.colliderect(player):
                hits.append(player)
        return hits
コード例 #29
0
 def create_animations(self,
                       sheet_name,
                       agrandissement=192 / 19,
                       w_normal=True):
     setattr(self, sheet_name + "_sheet",
             Spritesheet(self.dir + sheet_name + "-sheet.png"))
     setattr(self, sheet_name + "_right_sprites", [])
     setattr(self, sheet_name + "_left_sprites", [])
     for i in range(getattr(self, sheet_name + "_sheet").get_nb_sprites()):
         sprite, duration = getattr(
             self,
             sheet_name + "_sheet").parse_sprites(f"{sheet_name}{i}.png")
         w, h = sprite.get_width(), sprite.get_height()
         if w_normal:
             size = round(sprite.get_width() * agrandissement)
             size2 = round(h * size / w)
         else:
             size2 = round(sprite.get_height() * agrandissement)
             size = round(w * size2 / h)
         sprite = pygame.transform.scale(sprite, (size, size2))
         getattr(self,
                 sheet_name + "_right_sprites").append([sprite, duration])
         getattr(self, sheet_name + "_left_sprites").append(
             [pygame.transform.flip(sprite, True, False), duration])
コード例 #30
0
ファイル: game.py プロジェクト: fernandosq/eoi
    def load_data(self):
        """Lets add an image for bee's nests"""
        root_folder = path.dirname(__file__)

        sprites = Spritesheet(
            path.join(root_folder, "data", "img", "spritesheet_x2.png"))

        self.player_img = sprites.image_at(PLAYER_SPRITE_AT[0],
                                           PLAYER_SPRITE_AT[1], TILESIZE, 2,
                                           KEY)

        self.bee_img = sprites.image_at(BEE_SPRITE_AT[0], BEE_SPRITE_AT[1],
                                        TILESIZE, 2, KEY)

        self.bee_nest_img = sprites.image_at(BEE_NEST_SPRITE_AT[0],
                                             BEE_NEST_SPRITE_AT[1], TILESIZE,
                                             2, KEY)

        self.top_wall_img = sprites.image_at(TOP_WALL_SPRITE_AT[0],
                                             TOP_WALL_SPRITE_AT[1], TILESIZE,
                                             2, KEY)
        self.front_wall_img = sprites.image_at(FRONT_WALL_SPRITE_AT[0],
                                               FRONT_WALL_SPRITE_AT[1],
                                               TILESIZE, 2, KEY)
コード例 #31
0
 def test_multi(self):
     ss = Spritesheet(self.TILES)
     [wall, floor] = ss.images_at([self.WALL, self.FLOOR])
コード例 #32
0
 def test_init(self):
     ss = Spritesheet(self.TILES)
     floor = ss.image_at(self.FLOOR, -1)
コード例 #33
0
ファイル: player.py プロジェクト: z-van-baars/SpaceJaunt
    def __init__(self):
        super().__init__()
        self.change_x = 0
        self.change_y = 0
        self.current_level = None
        self.weapon_list = []
        self.current_weapon = 0
        self.weapon = None
        self.speed = 5
        self.face = 'R'
        self.frame = 0
        self.firing = False
        self.max_health = 100
        self.health = 100
        self.arm_state = 3
        self.webcounter = 0
        self.crouched = False
        self.try_stand = False

        pistol = weapons.Pistol()
        self.weapon_list.append(pistol)

        self.weapon = self.weapon_list[self.current_weapon]

        self.arm_images = []
        sprite_sheet = Spritesheet("art/shootman_arms.png")
        image = sprite_sheet.get_image(0, 0, 65, 72)
        self.arm_images.append(image)
        image = sprite_sheet.get_image(65, 0, 65, 72)
        self.arm_images.append(image)
        image = sprite_sheet.get_image(130, 0, 65, 72)
        self.arm_images.append(image)
        image = sprite_sheet.get_image(195, 0, 65, 72)
        self.arm_images.append(image)
        image = sprite_sheet.get_image(260, 0, 65, 72)
        self.arm_images.append(image)
        image = sprite_sheet.get_image(325, 0, 65, 72)
        self.arm_images.append(image)
        image = sprite_sheet.get_image(390, 0, 65, 72)
        self.arm_images.append(image)

        sprite_sheet = Spritesheet("art/shootman_sheet.png")

        self.walking_frames_r = []

        image = sprite_sheet.get_image(10, 0, 50, 85)
        self.walking_frames_r.append(image)
        image = sprite_sheet.get_image(75, 0, 50, 85)
        for x in range(7):
            self.walking_frames_r.append(image)
        image = sprite_sheet.get_image(140, 0, 50, 85)
        for x in range(7):
            self.walking_frames_r.append(image)
        image = sprite_sheet.get_image(205, 0, 50, 85)
        for x in range(7):
            self.walking_frames_r.append(image)
        image = sprite_sheet.get_image(140, 0, 50, 85)
        for x in range(7):
            self.walking_frames_r.append(image)

        image = sprite_sheet.get_image(270, 0, 50, 85)
        self.walking_frames_r.append(image)

        image = sprite_sheet.get_image(335, 0, 50, 85)
        self.walking_frames_r.append(image)

        self.image = self.walking_frames_r[self.frame]

        self.crouched_frames_r = []

        image = sprite_sheet.get_image(10, 95, 50, 75)
        self.crouched_frames_r.append(image)
        image = sprite_sheet.get_image(75, 95, 50, 75)
        for x in range(7):
            self.crouched_frames_r.append(image)
        image = sprite_sheet.get_image(140, 95, 50, 75)
        for x in range(7):
            self.crouched_frames_r.append(image)
        image = sprite_sheet.get_image(205, 95, 50, 75)
        for x in range(7):
            self.crouched_frames_r.append(image)
        image = sprite_sheet.get_image(140, 95, 50, 75)
        for x in range(7):
            self.crouched_frames_r.append(image)
        image = sprite_sheet.get_image(10, 95, 50, 75)
        self.crouched_frames_r.append(image)

        self.rect = self.image.get_rect()

        self.rect.x = 120
        self.rect.y = 520
コード例 #34
0
 def __init__(self, levelfile, spritesheetfile):
     self.Level = Level()
     self.Level.load_file(levelfile)
     self.Spritesheet = Spritesheet(spritesheetfile)
コード例 #35
0
ファイル: enemy.py プロジェクト: z-van-baars/SpaceJaunt
    def __init__(self):
        super().__init__()
        self.health = 30
        self.speed = 1
        self.change_x = 0
        self.change_y = 1
        self.frame = 0
        self.dead = False
        self.death_sound = assets.spider_death_sound
        self.shoot_timer = 5
        self.alt_shoot_timer = 20
        self.fire_sound = assets.web_shoot_sound
        self.altfire_sound = assets.blob_shoot_sound

        self.walking_frames = []
        self.death_frames = []

        sprite_sheet = Spritesheet("art/spider_sheet.png")
        image = sprite_sheet.get_image(0, 0, 90, 45)
        self.walking_frames.append(image)
        self.walking_frames.append(image)
        self.walking_frames.append(image)
        self.walking_frames.append(image)
        self.walking_frames.append(image)
        self.walking_frames.append(image)

        image = sprite_sheet.get_image(90, 0, 90, 45)
        self.walking_frames.append(image)
        self.walking_frames.append(image)
        self.walking_frames.append(image)
        self.walking_frames.append(image)
        self.walking_frames.append(image)
        self.walking_frames.append(image)

        image = sprite_sheet.get_image(0, 0, 90, 45)
        self.walking_frames.append(image)
        self.walking_frames.append(image)
        self.walking_frames.append(image)
        self.walking_frames.append(image)
        self.walking_frames.append(image)
        self.walking_frames.append(image)

        image = sprite_sheet.get_image(180, 0, 90, 45)
        self.walking_frames.append(image)
        self.walking_frames.append(image)
        self.walking_frames.append(image)
        self.walking_frames.append(image)
        self.walking_frames.append(image)
        self.walking_frames.append(image)

        sprite_sheet = Spritesheet("art/spider_death_sheet.png")
        image = sprite_sheet.get_image(0, 0, 105, 90)
        self.death_frames.append(image)
        self.death_frames.append(image)
        self.death_frames.append(image)
        self.death_frames.append(image)
        self.death_frames.append(image)

        image = sprite_sheet.get_image(105, 0, 105, 90)
        self.death_frames.append(image)
        self.death_frames.append(image)
        self.death_frames.append(image)
        self.death_frames.append(image)
        self.death_frames.append(image)

        image = sprite_sheet.get_image(210, 0, 105, 90)
        self.death_frames.append(image)
        self.death_frames.append(image)
        self.death_frames.append(image)
        self.death_frames.append(image)
        self.death_frames.append(image)
        self.death_frames.append(image)

        self.image = self.walking_frames[self.frame]
        self.rect = self.image.get_rect()
コード例 #36
0
ファイル: goblin.py プロジェクト: z-van-baars/fishtank
    def __init__(self, x, y, current_room):
        super().__init__((x - 7), (y - 7), current_room, colors.green, 15, 15)
        self.speed = 2
        self.coins_collected = 0
        self.lifetime_coins = 0
        self.target_coin = None
        self.max_age = 2000
        self.max_hunger = 300
        self.change_x = 0
        self.change_y = 0
        self.age = 0
        self.ticks_without_food = 0
        self.food_type = coin.Coin
        self.pit = None

        self.frame = 0

        self.walking_frames_r = []
        self.walking_frames_l = []
        self.walking_frames_d = []
        self.walking_frames_u = []

        sprite_sheet = Spritesheet("art/goblin_spritesheet.png")
        # Load all the right facing images into a list

        image = sprite_sheet.get_image(0, 0, 15, 15)
        self.walking_frames_d.append(image)
        self.walking_frames_d.append(image)
        self.walking_frames_d.append(image)
        image = sprite_sheet.get_image(16, 0, 15, 15)
        self.walking_frames_d.append(image)
        self.walking_frames_d.append(image)
        self.walking_frames_d.append(image)
        image = sprite_sheet.get_image(0, 0, 15, 15)
        self.walking_frames_d.append(image)
        self.walking_frames_d.append(image)
        self.walking_frames_d.append(image)
        image = sprite_sheet.get_image(32, 0, 15, 15)
        self.walking_frames_d.append(image)
        self.walking_frames_d.append(image)
        self.walking_frames_d.append(image)

        image = sprite_sheet.get_image(0, 16, 15, 15)
        self.walking_frames_u.append(image)
        self.walking_frames_u.append(image)
        self.walking_frames_u.append(image)
        image = sprite_sheet.get_image(16, 16, 15, 15)
        self.walking_frames_u.append(image)
        self.walking_frames_u.append(image)
        self.walking_frames_u.append(image)
        image = sprite_sheet.get_image(0, 16, 15, 15)
        self.walking_frames_u.append(image)
        self.walking_frames_u.append(image)
        self.walking_frames_u.append(image)
        image = sprite_sheet.get_image(32, 16, 15, 15)
        self.walking_frames_u.append(image)
        self.walking_frames_u.append(image)
        self.walking_frames_u.append(image)

        image = sprite_sheet.get_image(0, 32, 15, 15)
        self.walking_frames_r.append(image)
        self.walking_frames_r.append(image)
        self.walking_frames_r.append(image)
        image = sprite_sheet.get_image(16, 32, 15, 15)
        self.walking_frames_r.append(image)
        self.walking_frames_r.append(image)
        self.walking_frames_r.append(image)
        image = sprite_sheet.get_image(0, 32, 15, 15)
        self.walking_frames_r.append(image)
        self.walking_frames_r.append(image)
        self.walking_frames_r.append(image)
        image = sprite_sheet.get_image(32, 32, 15, 15)
        self.walking_frames_r.append(image)
        self.walking_frames_r.append(image)
        self.walking_frames_r.append(image)

        image = sprite_sheet.get_image(0, 32, 15, 15)
        image = pygame.transform.flip(image, True, False)
        self.walking_frames_l.append(image)
        self.walking_frames_l.append(image)
        self.walking_frames_l.append(image)
        image = sprite_sheet.get_image(16, 32, 15, 15)
        image = pygame.transform.flip(image, True, False)
        self.walking_frames_l.append(image)
        self.walking_frames_l.append(image)
        self.walking_frames_l.append(image)
        image = sprite_sheet.get_image(0, 32, 15, 15)
        image = pygame.transform.flip(image, True, False)
        self.walking_frames_l.append(image)
        self.walking_frames_l.append(image)
        self.walking_frames_l.append(image)
        image = sprite_sheet.get_image(32, 32, 15, 15)
        image = pygame.transform.flip(image, True, False)
        self.walking_frames_l.append(image)
        self.walking_frames_l.append(image)
        self.walking_frames_l.append(image)

        self.face = 'R'
        self.image = self.walking_frames_d[self.frame]
コード例 #37
0
ファイル: trackedsheet.py プロジェクト: undercase/Hooded
 def __init__(self, width, height, fullimage, starting_position=(0, 0)):
     Spritesheet.__init__(self, width, height, fullimage, starting_position)
     self.current_x = 0
     self.current_y = 0
コード例 #38
0
    def __init__(self, width, height):
        """
        Configure display-wide settings and one-time
        setup work here.
        """
        BaseDisplay.__init__(self, width, height)

        # There are other fonts available, but they are not
        # the same on every computer.  You can read more about
        # fonts at http://www.pygame.org/docs/ref/font.html
        self.font_size = 12
        self.font = pygame.font.SysFont("Courier New",self.font_size)

        # Colors are specified as a triple of integers from 0 to 255.
        # The values are how much red, green, and blue to use in the color.
        # Check out http://www.colorpicker.com/ if you want to try out
        # colors and find their RGB values.   Be sure to use the `R`, `G`,
        # `B` values at the bottom, not the H, S, B values at the top.
        self.player_color     = (0, 255, 0)
        self.opponent_color   = (255, 0, 0)
        self.missile_color    = (0, 255, 255)
        self.npc_color        = (255, 255, 0)
        self.wall_color       = (255, 255, 255)
        self.text_color       = (255, 255, 255)
        self.background_color = (0, 0, 0)
        buttonF = 'code camp buttons.png'
        sheet = Spritesheet(buttonF)

        
        self.tourneyB = sheet.image_at(pygame.Rect(5,5,200,97),(255,255,255))
        self.singleB = sheet.image_at(pygame.Rect(5,134,200,97),(255,255,255))
        self.dualB = sheet.image_at(pygame.Rect(5,264,200,97),(255,255,255))
        self.demoB = sheet.image_at(pygame.Rect(5,394,200,97),(255,255,255))

        # self.logo = pygame.image.load("display\imgs\game pngs '\code camp logo-01")


        self.filenames = ["code camp kirby-01.png", "code camp kirby-02.png", "code camp link-01-01.png", "code camp link-02-01.png", "code camp mario-01.png","code camp mario-04.png", "code camp mario-02.png","code camp mario-03.png"]
        self.imgs = []

        self.filename2 = ["code camp castle small.png", "forest background code camp small.png", "haunted house code camp small.png"]
        self.arena = []

        self.filenames2 = ["code camp logo-01.png"]
        self.logo = []


        for f in self.filenames:
            f = os.path.join('display','imgs',f)
            self.imgs.append(pygame.image.load(f))

        for a in self.filename2:
            a = os.path.join("display","imgs",a)
            self.arena.append(pygame.image.load(a))


        for l in self.filenames2:
            l = os.path.join("display", "imgs", l)
            self.logo.append(pygame.image.load(l))


        # playerStates {'walk':['walk','walkdown','walkleft','walkup','walkright'],'throw':['throw','throwdown','throwleft','throwup','throwright'], 'death':['death'],'victory':['victory'],'hp':['victory']}

        # filename = os.path.join('display', 'imgs', 'Link Sprites with coordinates.png')
        # self.image = pygame.image.load(filename)
        # self.rect = self.obj_to_rect(obj)
        # self.image = pygame.image.load(filename)
        # ss = Spritesheet(filename)
        # for s in playerStates:
            # if len(s) == 1:

            # for d in s:
                # if len()
                

        # playerStates {'walk':['walkdown','walkleft','walkup','walkright'],'throw':['throwdown','throwleft','throwup','throwright'], 'death':['death'],'victory':['victory'],'hp':['victory']}

        
        # self.image = pygame.image.load(filename)
        # self.rect = self.obj_to_rect(obj)
        # self.image = pygame.image.load(filename)
        

        
       
        return
コード例 #39
0
ファイル: enemy.py プロジェクト: z-van-baars/SpaceJaunt
    def __init__(self):
        super().__init__()
        self.health = 80
        self.speed = 0.1
        self.change_x = 0
        self.change_y = 1
        self.frame = 0
        self.dead = False
        self.death_sound = assets.spider_death_sound
        self.shoot_timer = 60
        self.alt_shoot_timer = 10
        self.fire_sound = assets.missile_fire

        self.walking_frames = []
        self.death_frames = []

        sprite_sheet = Spritesheet("art/robot_sheet.png")
        image = sprite_sheet.get_image(0, 0, 45, 47)
        self.walking_frames.append(image)
        self.walking_frames.append(image)
        self.walking_frames.append(image)
        self.walking_frames.append(image)
        self.walking_frames.append(image)
        self.walking_frames.append(image)

        image = sprite_sheet.get_image(45, 0, 45, 47)
        self.walking_frames.append(image)
        self.walking_frames.append(image)
        self.walking_frames.append(image)
        self.walking_frames.append(image)
        self.walking_frames.append(image)
        self.walking_frames.append(image)

        image = sprite_sheet.get_image(0, 0, 45, 47)
        self.walking_frames.append(image)
        self.walking_frames.append(image)
        self.walking_frames.append(image)
        self.walking_frames.append(image)
        self.walking_frames.append(image)
        self.walking_frames.append(image)

        image = sprite_sheet.get_image(135, 0, 45, 47)
        self.walking_frames.append(image)
        self.walking_frames.append(image)
        self.walking_frames.append(image)
        self.walking_frames.append(image)
        self.walking_frames.append(image)
        self.walking_frames.append(image)

        sprite_sheet = Spritesheet("art/robot_death_sheet.png")
        image = sprite_sheet.get_image(0, 0, 50, 60)
        self.death_frames.append(image)
        self.death_frames.append(image)
        self.death_frames.append(image)
        self.death_frames.append(image)

        image = sprite_sheet.get_image(50, 0, 50, 60)
        self.death_frames.append(image)
        self.death_frames.append(image)
        self.death_frames.append(image)
        self.death_frames.append(image)

        image = sprite_sheet.get_image(100, 0, 50, 60)
        self.death_frames.append(image)
        self.death_frames.append(image)
        self.death_frames.append(image)
        self.death_frames.append(image)

        image = sprite_sheet.get_image(150, 0, 50, 60)
        self.death_frames.append(image)
        self.death_frames.append(image)
        self.death_frames.append(image)
        self.death_frames.append(image)

        image = sprite_sheet.get_image(200, 0, 50, 60)
        self.death_frames.append(image)
        self.death_frames.append(image)
        self.death_frames.append(image)
        self.death_frames.append(image)

        image = sprite_sheet.get_image(250, 0, 50, 60)
        self.death_frames.append(image)
        self.death_frames.append(image)
        self.death_frames.append(image)
        self.death_frames.append(image)

        image = sprite_sheet.get_image(300, 0, 50, 60)
        self.death_frames.append(image)
        self.death_frames.append(image)
        self.death_frames.append(image)
        self.death_frames.append(image)

        image = sprite_sheet.get_image(350, 0, 50, 60)
        self.death_frames.append(image)
        self.death_frames.append(image)
        self.death_frames.append(image)
        self.death_frames.append(image)

        self.image = self.walking_frames[self.frame]
        self.rect = self.image.get_rect()
コード例 #40
0
 def test_strips(self):
     ss = Spritesheet(self.TILES)
     result = ss.load_strip((0, 0, self.STEP, self.STEP), 8)
     assert len(result) == 8
コード例 #41
0
 def __init__(self, image, width, height, coordinates):
     pygame.sprite.Sprite.__init__(self)
     sheet = Spritesheet(image)
     self.image = sheet.get_image(coordinates)
     self.image = pygame.transform.scale(self.image, (width, height))
     self.rect = self.image.get_rect()
コード例 #42
0
ファイル: babaiswin.py プロジェクト: CamilleHuynh/babaiswin
         [["no"], ["bo"], ["ro"], ["ro"], ["no"]],
         [["no"], ["is"], ["wo"], ["no"], ["no"]],
         [["no"], ["no"], ["no"], ["no"], ["fo"]]]

states = [deepcopy(state)]

nrow = len(state)
ncol = len(state[0])

# Create the window
screen = pg.display.set_mode((ncol * 90, nrow * 90))
pg.display.set_caption('')

# Import images

images = Spritesheet("spritesheet.png")

test = pg.transform.scale(images.get_sprite(0 * 24, 57 * 24, 24, 24), (90, 90))
baba = pg.transform.scale(images.get_sprite(1 * 24, 0 * 24, 24, 24), (90, 90))
baba_text = pg.transform.scale(images.get_sprite(6 * 24, 27 * 24, 24, 24),
                               (90, 90))
flag = pg.transform.scale(images.get_sprite(6 * 24, 21 * 24, 24, 24), (90, 90))
flag_text = pg.transform.scale(images.get_sprite(1 * 24, 30 * 24, 24, 24),
                               (90, 90))
is_text = pg.transform.scale(images.get_sprite(18 * 24, 30 * 24, 24, 24),
                             (90, 90))
you_text = pg.transform.scale(images.get_sprite(20 * 24, 42 * 24, 24, 24),
                              (90, 90))
win_text = pg.transform.scale(images.get_sprite(17 * 24, 42 * 24, 24, 24),
                              (90, 90))
wall = pg.transform.scale(images.get_sprite(0 * 24, 57 * 24, 24, 24), (90, 90))
コード例 #43
0
ファイル: ogre.py プロジェクト: z-van-baars/fishtank
    def __init__(self, x, y, current_room):
        super().__init__((x - 10), (y - 10), current_room, colors.red, 20, 20)
        self.target_goblin = None
        self.speed = 3
        self.goblins_eaten = 0
        self.lifetime_goblins_eaten = 0
        self.change_x = 0
        self.change_y = 0
        self.age = 0
        self.ticks_without_food = 0
        self.food_type = goblin.Goblin
        self.home_hut = None
        self.frame = 0
        self.killing = 'No'

        self.walking_frames_r = []
        self.walking_frames_l = []
        self.kill_frames_r = []
        self.kill_frames_l = []

        sprite_sheet = Spritesheet("art/ogre_spritesheet.png")
        # Load all the right facing images into a list

        image = sprite_sheet.get_image(0, 0, 20, 20)
        self.walking_frames_r.append(image)
        self.walking_frames_r.append(image)
        self.walking_frames_r.append(image)
        image = sprite_sheet.get_image(21, 0, 20, 20)
        self.walking_frames_r.append(image)
        self.walking_frames_r.append(image)
        self.walking_frames_r.append(image)
        image = sprite_sheet.get_image(0, 0, 20, 20)
        self.walking_frames_r.append(image)
        self.walking_frames_r.append(image)
        self.walking_frames_r.append(image)
        image = sprite_sheet.get_image(42, 0, 20, 20)
        self.walking_frames_r.append(image)
        self.walking_frames_r.append(image)
        self.walking_frames_r.append(image)

        image = sprite_sheet.get_image(0, 0, 20, 20)
        image = pygame.transform.flip(image, True, False)
        self.walking_frames_l.append(image)
        self.walking_frames_l.append(image)
        self.walking_frames_l.append(image)
        image = sprite_sheet.get_image(21, 0, 20, 20)
        image = pygame.transform.flip(image, True, False)
        self.walking_frames_l.append(image)
        self.walking_frames_l.append(image)
        self.walking_frames_l.append(image)
        image = sprite_sheet.get_image(0, 0, 20, 20)
        image = pygame.transform.flip(image, True, False)
        self.walking_frames_l.append(image)
        self.walking_frames_l.append(image)
        self.walking_frames_l.append(image)
        image = sprite_sheet.get_image(42, 0, 20, 20)
        image = pygame.transform.flip(image, True, False)
        self.walking_frames_l.append(image)
        self.walking_frames_l.append(image)
        self.walking_frames_l.append(image)

        image = sprite_sheet.get_image(21, 42, 20, 20)
        self.kill_frames_r.append(image)
        self.kill_frames_r.append(image)
        self.kill_frames_r.append(image)

        image = sprite_sheet.get_image(42, 42, 20, 20)
        self.kill_frames_r.append(image)
        self.kill_frames_r.append(image)
        self.kill_frames_r.append(image)
        self.kill_frames_r.append(image)
        self.kill_frames_r.append(image)
        self.kill_frames_r.append(image)

        image = sprite_sheet.get_image(21, 42, 20, 20)
        image = pygame.transform.flip(image, True, False)
        self.kill_frames_l.append(image)
        self.kill_frames_l.append(image)
        self.kill_frames_l.append(image)

        image = sprite_sheet.get_image(42, 42, 20, 20)
        image = pygame.transform.flip(image, True, False)
        self.kill_frames_l.append(image)
        self.kill_frames_l.append(image)
        self.kill_frames_l.append(image)
        self.kill_frames_l.append(image)
        self.kill_frames_l.append(image)
        self.kill_frames_l.append(image)

        self.face = 'R'
        self.image = self.walking_frames_r[self.frame]
コード例 #44
0
ファイル: unit.py プロジェクト: ltsissykitty/Game
class Unit(object):
    def __init__( self, screen, unitname, spritesheet ):

        self.spritesheet = spritesheet
        self.unit_ss = Spritesheet( spritesheet )
        self.unit_sprite = (0, 0, 40, 40)
        self.unit_image = self.unit_ss.image_at( self.unit_sprite )
        
        self.move_tile_ss = Spritesheet('spritesheets/move_tile.bmp')
        self.move_tile_image = self.move_tile_ss.image_at((0, 0, 40, 40))
        
        self.screen = screen
        self.unitname = unitname
        
        self.frame = 0
  
        self.pos_x = 0
        self.pos_y = 0
        self.distance_x = 0
        self.distance_y = 0
        self.move_x = 0
        self.move_y = 0
        self.speed = 10
        self.unit_location = (self.pos_x, self.pos_y)
        
        self.state = 'idle'
        self.pressed_z = 0


    def get_data( self, unit, data ):
        self.i = 0
        self.char = ''
        self.value = 0
        
        self.path = "units/" + unit + "/" + unit + ".txt"
        self.tiledata = [ line.strip() for line in open( self.path, "r") ]

        if data == 'move_range':
            self.char = self.tiledata[1][13]
            self.value = int( self.char )

        return self.value


    def _move_diamond( self ):

        self.coordinates = []
        self.radius = self.get_data( self.unitname, 'move_range' )

        self.y = 0
        self.x = 0
        self.x_limit = 0

        self.x0 = self.pos_x
        self.y0 = self.pos_y + self.radius*40

        while self.y <= self.radius*2:
            while self.x <= self.x_limit:
                self.coordinates.append( ( self.x0 - self.x*40, self.y0 - self.y*40 ) )
                if self.y >= 0:
                    self.coordinates.append( ( self.x0 + self.x*40, self.y0 - self.y*40 ) )
                self.x += 1
            self.x = 0
            if self.y < self.radius:
                self.x_limit += 1
            elif self.y >= self.radius:
                self.x_limit -= 1
            self.y += 1

        return self.coordinates
        self.coordinates = []

        
    def update( self, cursor_x, cursor_y ):
        self.unit_ss = Spritesheet( self.spritesheet )
        
        if self.state == 'idle':
            self._animate('idle')
            if self.pressed_z and self.pos_x == cursor_x and self.pos_y == cursor_y:
                self.state = 'selected'
                self.pressed_z = 0
        elif self.state == 'selected':
            self._animate('selected')
            if self.pressed_z:
                self.state = 'moving'
        elif self.state == 'moving':
            self._animate('moving')
            self._move( cursor_x, cursor_y )

        self.pressed_z = 0
        self.unit_location = (self.pos_x,self.pos_y)
        self.unit_image = self.unit_ss.image_at( self.unit_sprite )


    def draw( self ):

        self.i = 0
        self.coordinates = self._move_diamond()
        
        while self.state == 'selected' and self.i < len(self.coordinates):
            self.screen.blit(self.move_tile_image, self.coordinates[self.i])
            self.i += 1
            
        self.screen.blit(self.unit_image, self.unit_location)
        
        
    def action( self ):
        self.pressed_z = 1

       
    def _move( self, cursor_x, cursor_y ):
        self.distance_x = cursor_x - self.pos_x
        self.distance_y = cursor_y - self.pos_y

        if self.distance_x == 0 and self.distance_y == 0:
            self.state = 'idle'

        if self.distance_x != 0:
            if self.distance_x > 0:
                self.pos_x += self.speed
            elif self.distance_x < 0:
                self.pos_x -= self.speed

        if self.distance_y != 0:
            if self.distance_y > 0:
                self.pos_y += self.speed
            elif self.distance_y < 0:
                self.pos_y -= self.speed


    def _animate( self, state ):
           
        if state == 'idle':
            if self.frame == 0:
                self.frame += 1
            else:
                self.frame = 0

        if state == 'selected' or state == 'moving':
            if self.frame < 5:
                self.frame += 1
            else:
                self.frame = 2

        self.unit_sprite = ( self.frame*40, 0, 40, 40 )