def update(self):
		Sprite.update(self)

		# Keyboard Input
		
		if (App.Keys[pygame.K_LEFT] or App.Keys[pygame.K_a] or 
		    App.Keys[pygame.K_RIGHT] or App.Keys[pygame.K_d]):
			if (App.Keys[pygame.K_LEFT] or App.Keys[pygame.K_a]):
				self.velocity -= self.accel
			if (App.Keys[pygame.K_RIGHT] or App.Keys[pygame.K_d]):
				self.velocity += self.accel
			if (abs(self.velocity) > self.maxVelocity):
				self.velocity = self.maxVelocity * math.copysign(1, self.velocity)
		
		else:
			self.velocity *= 0.80
			if (abs(self.velocity) < 0.1):
				self.velocity = 0.0
		
		self.shootTimer += App.Elapsed
		if (App.Keys[pygame.K_UP] or App.Keys[pygame.K_w] or App.Keys[pygame.K_SPACE]):
			self.shoot()

		# Move the player
		self.angle += self.velocity * App.Elapsed

		# Set Position
		self.position = Vector.FromAngle(self.angle, self.distance)
		self.position.x += (App.Width / 2) - (self.image.get_width() / 2)
		self.position.y += (App.Height / 2) - (self.image.get_height() / 2)
Exemple #2
0
 def __init__( self, x, y, width, height, fname ):
     Sprite.__init__( self, x, y, width, height )
     bitmap = pygame.image.load( fname ).convert_alpha()
     self.images[ self.UP ] = (
             bitmap.subsurface( ( width * 0, height * 0, width, height ) ),
             bitmap.subsurface( ( width * 0, height * 1, width, height ) ),
             bitmap.subsurface( ( width * 0, height * 2, width, height ) ),
             bitmap.subsurface( ( width * 0, height * 3, width, height ) )
         )
     self.images[ self.DOWN ] = (
             bitmap.subsurface( ( width * 1, height * 0, width, height ) ),
             bitmap.subsurface( ( width * 1, height * 1, width, height ) ),
             bitmap.subsurface( ( width * 1, height * 2, width, height ) ),
             bitmap.subsurface( ( width * 1, height * 3, width, height ) )
         )
     self.images[ self.LEFT ] = (
             bitmap.subsurface( ( width * 2, height * 0, width, height ) ),
             bitmap.subsurface( ( width * 2, height * 1, width, height ) ),
             bitmap.subsurface( ( width * 2, height * 2, width, height ) ),
             bitmap.subsurface( ( width * 2, height * 3, width, height ) )
         )
     self.images[ self.RIGHT ] = (
             bitmap.subsurface( ( width * 3, height * 0, width, height ) ),
             bitmap.subsurface( ( width * 3, height * 1, width, height ) ),
             bitmap.subsurface( ( width * 3, height * 2, width, height ) ),
             bitmap.subsurface( ( width * 3, height * 3, width, height ) )
         )
     self.setHeading( self.LEFT )
     self.setSteps( 2, 2 )
     self.setUpdateInterval( 16 )
     self.setRefreshInterval( 16 )
class GameObject:
    def __init__(self, x, y, width, height, images, fps, looping):
        self.x = x
        self.y = y
        self.width = width
        self.height = height
        self.sprite = Sprite(images, fps, looping)

    def update(self, gameTime):
        self.sprite.update(gameTime)

    def draw(self, surface):
        surface.blit(self.getImage(), self.getRect())

    def getRect(self):
        return Rect(self.x, self.y, self.width, self.height)

    def getImage(self):
        return self.sprite.getImage()

    def setSprite(self, sprite):
        self.sprite = sprite

    def getHitMask(self):
        return pygame.surfarray.array_alpha(self.sprite.getImage())
Exemple #4
0
    def _loadLevel(self, file):
        rect = pygame.Rect(0,0,32,32)
        level = open(file,'r')
        x, y = 0, 0

        for i,line in enumerate(level):
            for tile in list(line):
                if tile == '\n':
                    break
                elif self._tiles.has_key(tile):

                    #create sprite
                    sprite = Sprite()
                    sprite.rect = rect.move(x,y)
                    sprite.image = self._tiles[tile].image
                    sprite.image.set_colorkey([255,0,255])
                    sprite.flags = self._tiles[tile].flags
                    self._group.add(sprite)

                    #add to managers based on flags
                    for flag in self._tiles[tile].flags:
                        if flag in self._managers.keys():
                            self._managers[flag].add(sprite)
                x+=32
            y += 32
            x = 0
Exemple #5
0
    def __init__(self, image):
        Sprite.__init__(self, image, 0, 0, randint(1,5))
        self.Index = randint(0,1)
        self.XPosition = randint(0, 768)
        self.YPosition = randint(0, 15) * 32
        self.LastFired = randint(0,50)
        self.Score = self.Speed
        if(randint(0,1) == 1):
            self.Left = False
        else:
            self.Left = True

        self.Right = not self.Left
        
        if(Sprite.MonsterFrames == []):
            Sprite.MonsterFrames.append(pygame.Surface((32,32)).convert_alpha())
            Sprite.MonsterFrames.append(pygame.Surface((32,32)).convert_alpha())
            Sprite.MonsterFrames.append(pygame.Surface((32,32)).convert_alpha())
            Sprite.MonsterFrames.append(pygame.Surface((32,32)).convert_alpha())
            Sprite.MonsterFrames[0].fill((0,0,0,0))
            Sprite.MonsterFrames[1].fill((0,0,0,0))
            Sprite.MonsterFrames[2].fill((0,0,0,0))
            Sprite.MonsterFrames[3].fill((0,0,0,0))
            Sprite.MonsterFrames[0].blit(image,(0,0),(32,0,32,32))
            Sprite.MonsterFrames[1].blit(image,(0,0),(32,32,32,32))
            Sprite.MonsterFrames[2].blit(image,(0,0),(64,0,32,32))
            Sprite.MonsterFrames[3].blit(image,(0,0),(64,32,32,32))
Exemple #6
0
 def __init__(self, filename):
     self._movie = pygame.movie.Movie(filename)
     surf = pygame.surface.Surface(self._movie.get_size())
     self._movie.set_display(surf)
     self._lastFrame = None
     self._movie.set_volume(0.0)
     Sprite.__init__(self, surf)
Exemple #7
0
 def update(self):
     """
     Updates the plant sprite
     Just decreases health until death
     """
     Sprite.button_ops(self)
     self.health_monitor()
     self.blit()
	def __init__(self, angle, playerDist, speed=100):
		Sprite.__init__(self, 0, 0, "assets/game/bullet")
		self.distance = playerDist + self.image.get_width()
		self.angle = angle
		self.speed = speed
		self.position = Vector.FromAngle(self.angle, self.distance)
		self.position.x += (App.Width / 2) - (self.image.get_width() / 2)
		self.position.y += (App.Height / 2) - (self.image.get_height() / 2)
 def __init__(self, x, y, w, h, model):
     Sprite.__init__(self, x, y, w, h,
                     model)  #Calls super constructor in sprite class
     #Initializes Member Variables
     self.jumpFrame = 0  #Checks to see how many frames Mario has jumped
     self.prevX = 0
     self.prevY = 0
     self.coinPop = 0  #Makes sure only one coin pops out
     marioImages = None
	def update(self):
		Sprite.update(self)
		self.distance += self.speed * App.Elapsed
		self.speed += 3
		if self.distance > 600:
			self.kill()
		self.position = Vector.FromAngle(self.angle, self.distance)
		self.position.x += (App.Width / 2) - (self.image.get_width() / 2)
		self.position.y += (App.Height / 2) - (self.image.get_height() / 2)
Exemple #11
0
 def update(self):
     """
     Updates the bee sprite
     Either dies, calls Sprite.hunt for plants or calls Sprite.update
     """
     Sprite.button_ops(self)
     if self.health_monitor():
         return
     if not Sprite.hunt(self, Global.plant_group):
         Sprite.update(self)
	def __init__(self,sprites,locationX,locationY):
		Sprite.__init__(self,sprites,locationX,locationY)
		#self.vx = 0
		#self.vy = 0
		#self.pvx = 0 #previous velocity, stored to help out its snake followers
		#self.pvy = 0
		self.movingto = None
		self.backlog = None #If recieves a move command while still moving, goes here
		self.follower = None #a Movable is a Snake.  This links to its follower
		self.smoothtransitioncounter = 0#from 0-1 representing sprite inbetween thingies
Exemple #13
0
 def update(self):
     """
     Updates the deer sprite
     Either dies, hunts deer,  or calls Sprite.update
     """
     Sprite.button_ops(self)
     if self.health_monitor():
         return
     if not Sprite.hunt(self, Global.deer_group):
         Sprite.update(self)
Exemple #14
0
 def __init__(self, image_rect):
     """
     Calls Spite.init as super
     Sets speed and radius
     Adds to global bee_group
     """
     Sprite.__init__(self, pygame.image.load("Resources/sprites/bees.png"), image_rect, "bees")
     self.speed = 15
     self.radius = 250
     Global.bee_group.add_internal(self)
Exemple #15
0
 def __init__( self , boat, line):
     Sprite.__init__( self , 32 , 32 , 0 , 0 )
     hookImage = pygame.image.load( "res/hook.png" );
     hookImage = pygame.transform.scale( hookImage , ( 50 , 50 ) );
     self.setImage( hookImage );
     self.boat = boat
     self.line = line
     self.setHeight( 35 )
     self.setWidth( 30 )
     pass
Exemple #16
0
 def update(self, bullets):
     """Updates the player"""
     if(self.Firing and self.LastFired > 40):
         self.LastFired = 0
         self.Frame = 2
         self.FrameTicks = 0
         s = Fireball(self.spriteSheet, self.XPosition, self.YPosition, 0)
         bullets.add(s)
         Player.SEffect.play()
     Sprite.update(self)
     self.image = Sprite.PlayerFrames[self.Frame]
	def __init__(self):
		Sprite.__init__(self, 0, 0, "assets/game/player")
		self.angle = 0
		self.distance = 100
		self.velocity = 0
		self.accel = 17.0
		self.maxVelocity = 450.0
		self.bullets = pygame.sprite.Group()
		self.shootTimer = 0
		self.shootRate = 0.35
		self.shootSound = pygame.mixer.Sound("assets/game/shoot.wav")
Exemple #18
0
 def __init__(self, image_rect):
     """
     Calls Spite.init as super
     Sets speed, radius and runningAway (a boolean)
     Adds to global deer_group
     """
     Sprite.__init__(self, pygame.image.load("Resources/sprites/wolf.png"), image_rect, "wolf")
     self.speed = 15
     self.radius = 100
     self.stealth = 60
     Global.wolf_group.add_internal(self)
Exemple #19
0
 def __init__(self, name, init_x, init_y, image, stats, other):
     self.utils = Utils()
     self.name = name
     self.x = init_x
     self.y = init_y
     self.sprite = Sprite((self.x * self.utils.MAP_TILE_WIDTH,
                           self.y * self.utils.MAP_TILE_HEIGHT), image,
                          self.name)
     self.stats = stats
     self.exp_given = other['exp']
     self.difficulty = other['difficulty']
Exemple #20
0
 def __init__(self, rect, is_pollinated=False):
     """
     Calls Spite.init as super
     Sets speed, radius and is_pollinated (a boolean)
     Adds to global plant_group
     Loads pollinated image if is_pollinated
     """
     Sprite.__init__(self, pygame.image.load("Resources/sprites/plant.png"), rect, "plant")
     self.screen = Utils.screen
     self.is_pollinated = is_pollinated
     Global.plant_group.add_internal(self)
     if self.is_pollinated:
         self.image = pygame.image.load("Resources/sprites/plantpollinated.png")
Exemple #21
0
 def __init__(self, name, init_x, init_y, image, stats, equipment,
              inventory, skills):
     self.utils = Utils()
     self.name = name
     self.x = init_x
     self.y = init_y
     self.sprite = Sprite((self.x * self.utils.MAP_TILE_WIDTH,
                           self.y * self.utils.MAP_TILE_HEIGHT), image,
                          self.name)
     self.stats = stats
     self.equipment = equipment
     self.inventory = inventory
     self.skills = skills
Exemple #22
0
 def update(self, bullets):
     Sprite.update(self)
     if(self.Left and self.XPosition <= 0):
         self.Left = False
         self.Right = True
     if(self.Right and self.XPosition >= 768):
         self.Right = False
         self.Left = True
     if(self.LastFired >= 50 and randint(0,25) == 5):
         b = Fireball(self.spriteSheet, self.XPosition, self.YPosition, 1)
         bullets.add(b)
         self.LastFired = 0
     self.image = Sprite.MonsterFrames[2 * self.Index + self.Frame]
Exemple #23
0
 def randomFood(self):
     row = int(self.HEIGHT/self.IMAGE_SIZE)
     col = int(self.WIDTH/self.IMAGE_SIZE)
     allPos = [i for i in range(row*col)]
     invalidPos = []
     for sprite in self.snake.spriteList:
         invalidPos.append(int(sprite.y/self.IMAGE_SIZE) * row + int(sprite.x/self.IMAGE_SIZE))
     valid = []
     for x in allPos:
         if x not in invalidPos:
             valid.append(x)
     x = int(valid[random.randint(0, len(valid)-1)]%col) * self.IMAGE_SIZE
     y = int(valid[random.randint(0, len(valid)-1)]/col) * self.IMAGE_SIZE
     self.food = Sprite("goomba.gif", self.__canvas, x,y)
    def __init__(self, x, y, state, tower_type):
        # For cycle detection
        self.is_powered = False

        self.x = x
        self.y = y
        self.tower_type = tower_type
        # pos is placeholder
        self.sprite = Sprite(x=x, y=y, frames=[[pygame.image.load('sprites/lighthouse/LH1.png')]])
        self.sprite.rect.x = x*PIXEL_RESOLUTION
        self.sprite.rect.y = y*PIXEL_RESOLUTION
        self.light_sprite = Sprite(x=x, y=y, frames=[[pygame.image.load('sprites/lighthouse/weakstraight1.png')]], can_rotate=True)
        self.light_sprite.rect.x = x*PIXEL_RESOLUTION
        self.light_sprite.rect.y = y*PIXEL_RESOLUTION
Exemple #25
0
    def __init__(self, location, velocity, direction):
        """ Bullet class for the Asteroids game

        Parameters
        ----------
        location : list of ints
            x, y pixel position of the center of the bullet
        velocity : int
            velocity of the bullet (always 30)
        direction : int
            0-19 direction of travel of the bullet
        """
        Sprite.__init__(self, location, velocity, direction)
        self.lifetime = 20
Exemple #26
0
    def __init__(self, image):
        Sprite.__init__(self, image, 300, 568, 3)

        if(Sprite.PlayerFrames == []):
            Sprite.PlayerFrames.append(pygame.Surface((32,32)).convert_alpha())
            Sprite.PlayerFrames.append(pygame.Surface((32,32)).convert_alpha())
            Sprite.PlayerFrames.append(pygame.Surface((32,32)).convert_alpha())
            Sprite.PlayerFrames[0].fill((0,0,0,0))
            Sprite.PlayerFrames[1].fill((0,0,0,0))
            Sprite.PlayerFrames[2].fill((0,0,0,0))
            Sprite.PlayerFrames[0].blit(image,(0,0),(0,0,32,32))
            Sprite.PlayerFrames[1].blit(image,(0,0),(0,32,32,32))
            Sprite.PlayerFrames[2].blit(image,(0,0),(0,64,32,32))
        if(Player.SEffect == None):
            Player.SEffect = pygame.mixer.Sound("Fireball1.wav")
Exemple #27
0
    def __init__(self, screen, sprite_sheet):
        self.screen = screen
        self.screen_area = screen.get_rect()
        self.sprite_sheet = sprite_sheet

        self.space_invaders_title = Text(screen, "SPACE INVADERS", (0, 255, 0),
                                         (0, 0, 0), self.screen_area.w,
                                         self.screen_area.h, 100)
        self.set_text_position_menu(self.space_invaders_title, 4, 6)

        self.press_enter_text = Text(screen, "Press Enter To Start Game",
                                     (0, 255, 0), (0, 0, 0),
                                     self.screen_area.w, self.screen_area.h,
                                     30)
        self.set_text_position_menu(self.press_enter_text, 2, 4)

        self.press_highscores_text = Text(screen,
                                          "Press H To View High Scores",
                                          (0, 255, 0), (0, 0, 0),
                                          self.screen_area.w,
                                          self.screen_area.h, 30)
        self.set_text_position_menu(self.press_highscores_text, 2, 4, 0, 50)

        self.alien_points_1_text = Text(screen, "10 Points", (255, 255, 255),
                                        (0, 0, 0), self.screen_area.w,
                                        self.screen_area.h, 48)
        self.set_text_position_menu(self.alien_points_1_text, 2, 2, 0, -50)

        self.alien_points_2_text = Text(screen, "20 Points", (255, 255, 255),
                                        (0, 0, 0), self.screen_area.w,
                                        self.screen_area.h, 48)
        self.set_text_position_menu(self.alien_points_2_text, 2, 2)

        self.alien_points_3_text = Text(screen, "30 Points", (255, 255, 255),
                                        (0, 0, 0), self.screen_area.w,
                                        self.screen_area.h, 48)
        self.set_text_position_menu(self.alien_points_3_text, 2, 2, 0, 50)

        self.alien_points_4_text = Text(screen, "????????", (255, 255, 255),
                                        (0, 0, 0), self.screen_area.w,
                                        self.screen_area.h, 48)
        self.set_text_position_menu(self.alien_points_4_text, 2, 2, 0, 100)

        self.alien_1_sprite = Sprite(screen, sprite_sheet, 5,
                                     self.screen_area.w, self.screen_area.h)
        self.set_sprite_position_menu(self.alien_1_sprite, 2, 2, -100, -50)

        self.alien_2_sprite = Sprite(screen, sprite_sheet, 11,
                                     self.screen_area.w, self.screen_area.h)
        self.set_sprite_position_menu(self.alien_2_sprite, 2, 2, -100)

        self.alien_3_sprite = Sprite(screen, sprite_sheet, 17,
                                     self.screen_area.w, self.screen_area.h)
        self.set_sprite_position_menu(self.alien_3_sprite, 2, 2, -100, 50)

        self.alien_4_sprite = Sprite(screen, sprite_sheet, 0,
                                     self.screen_area.w, self.screen_area.h)
        self.set_sprite_position_menu(self.alien_4_sprite, 2, 2, -100, 100)
Exemple #28
0
def createLevel():
    GameState.clean()
    GameState.level += 1
    
    stairUp = Item("stairs_up.png", (SCALE, SCALE), GameState.triggerLoad)
    GameState.dynamics.add(stairUp)
    playerPos = None
    maze = genMaze(MAPSIZE+GameState.level)
    
    floors = sum(sum(maze.data))
    spawns = [lambda pos: HealItem(pos, 1) for _ in range(int(0.02*floors))]
    spawns += [lambda pos: Enemy("enemy_placeholder.png", pos) for _ in range(int(0.05*floors))]
    
    for x in range(maze.M+2):
        for y in range(maze.N+2):
            if not maze[x-1,y-1]:
                GameState.statics.add(Sprite(wallimg, (x*SCALE, y*SCALE)))
            elif playerPos is None:
                playerPos = x*SCALE, y*SCALE
            elif random.random() < .01 and x < maze.M/2 and y < maze.N:
                playerPos = x*SCALE, y*SCALE
            else:
                if random.random() < max(len(spawns)/floors, .05) and spawns:
                    i = random.randrange(len(spawns))
                    GameState.dynamics.add(spawns[i]((x*SCALE,y*SCALE)))
                    del spawns[i]
                floors -= 1
                stairUp.rect.x, stairUp.rect.y = x*SCALE, y*SCALE

    GameState.initBackground()    
    GameState.player.rect.topleft = playerPos
Exemple #29
0
    def init(self):
        # hearts component
        temp_sprite = Sprite("heart", 50, 50, 0, 0, ui_sprite=True)
        new_heart_comp = HeartsComp(0, 0, 0, 0, temp_sprite)
        self.add_component(new_heart_comp)

        Camera.set_follows(self)
Exemple #30
0
 def __init__(self, canvas, length, x, y):
     self.__canvas = canvas
     self.spriteList = []
     self.addOne = False
     for i in range(length):
         newSprite = Sprite("mario.gif", self.__canvas, x, y + i * 50)
         self.spriteList.append(newSprite)
Exemple #31
0
    def move(self):
        STEP_SIZE = 30
        theta = self.rotation()  # degrees
        theta = theta * pi / 180  # radians
        dx = STEP_SIZE * cos(theta)
        dy = STEP_SIZE * sin(theta)

        if self.distance_traveled > self.max_range:
            if not self.scene():
                return
            self.scene().removeItem(self)
            del self
        else:
            # move bullet
            self.setPos(self.x() + dx, self.y() + dy)
            self.distance_traveled += STEP_SIZE

            # if bullet collides with enemy, destroy both
            self.colliding_items = self.collidingItems()
            for i in self.colliding_items:
                if hasattr(i, 'team') and i.team != self.owner.team:
                    # substract health
                    if i.is_damageable():
                        i.decrease_health(self.damage)

                    # animate
                    self.scene().addItem(Sprite(self.pos()))
                    self.scene().removeItem(self)
                    del self
                    return
Exemple #32
0
    def __init__(self, stats, fishingHook, fishingLine, eelSpeed):
        Sprite.__init__(self, 32, 32, 0, 0)
        eelImage = pygame.image.load("res/eel.png").convert_alpha()
        #eelImage = pygame.image.load( "res/eel1.png" ).convert()
        #eelImage = pygame.transform.scale( eelImage , (100 , 50) )
        #eelImage.set_colorkey( (255,255,255) )
        self.setImage(eelImage)
        self.stats = stats

        self.fishingHook = fishingHook
        self.fishingLine = fishingLine

        #slightly offset eel picture's extra whitespace width
        self.setWidth(48)
        #self.setHeight( 15 )
        self.speed = eelSpeed
Exemple #33
0
class Bullet:
    bulletSprite = Sprite(
        'https://github.com/NJHewadewa/DebtRunners/blob/master/Sprites/Bullet.png?raw=true'
    )

    def __init__(self,
                 pos=Vector(),
                 vel=Vector(),
                 homing=False,
                 enemyPos=Vector(),
                 bulletSpeed=7):
        self.pos = pos
        self.vel = vel
        self.homing = homing
        self.enemyPos = enemyPos
        self.bulletSpeed = bulletSpeed
        self.counter = 0

    def update(self):
        if self.homing == False:
            self.pos.add(self.vel)
        elif self.homing == True:
            if self.counter < 30:
                #Goes in the direction of the mouse for 30 frames(half a second) then locks onto enemy and fires at the enemy
                self.counter += 1
                self.pos.add(self.vel)
            else:
                self.vel = self.enemyPos.copy().subtract(
                    self.pos.copy()).normalize().multiply(self.bulletSpeed)
                self.pos.add(self.vel)
Exemple #34
0
    def parse_key(self, node):
        # in self.key there should be only ref nodes
        # the point is at start to create all nodes that have NO parent
        starter = self.get_from_key_with_parent(node.get_bone_id())

        if len(starter) == 0:
            print 'WARNING: found a bone with no children attached:', node.get_name(
            ), 'id:', node.get_bone_id()
#            Utils.print_error('There are no nodes with this node as parent', [node, self.key, self.timeline])

        for st in starter:
            obj = None
            if st.get_type() == BoneRef.type:
                obj = Node()
            elif st.get_type() == ObjectRef.type:
                obj = Sprite(self.fileKeeper)

            if obj is None:
                Utils.print_error('Unable to generate node nor sprite from',
                                  [obj, self.key, self.timeline])

            objTime = obj.build(st, self.timeline)

            if math.fabs(self.key.time - objTime) > 1e-4:
                obj.set_active(False)

            node.add_child(obj)

            newPath = obj.get_bone_id()
            if newPath is not None:
                self.parse_key(obj)
def SetUpCloudSprite(x,y, towerEntity):
    towerEntity.tower_type.is_passable = False;
    img = pygame.image.load('sprites/fake_cloud.png')
    towerEntity.sprite = Sprite(x=x, y=y, frames=[[img]])
    towerEntity.sprite.rect.x = x*PIXEL_RESOLUTION;
    towerEntity.sprite.rect.y = y*PIXEL_RESOLUTION;
    towerEntity.light_sprite = None;
Exemple #36
0
 def __init__(self, source, scale, pos, angle):
     super().__init__(pos=pos)
     self.scale = scale
     self.images = Atlas('images/hat.atlas')  ## Atlas initialization
     self.keys = list(
         self.images.textures.keys())  ## atlas keys into a list
     print('keys in Hat', self.keys)
     self.kys = ('hat_burnt0', 'hat_burnt1', 'hat_burnt2', 'hat_burnt3',
                 'hat_burnt4', 'hat_burnt-final')
     print('hat keys list', self.kys)
     self.image = Sprite(texture=self.images['hat'],
                         scale=self.scale,
                         pos=pos)
     #self.image = Sprite(source=source, scale=self.scale, pos=pos)
     self.size = self.image.size
     self.add_widget(self.image)
     self.inhand = False
     self.onhead = False
     self.onhead_timer = 0
     self.moving = False
     #burning status
     self.burning = False
     self.burnt = False
     self.burn_counter = 0
     self.sprite = 0
     self.animation_value = int(200 / (len(self.kys) - 1))
     print('animation value', self.animation_value)
     self.vy = 0
     self.combust = SoundLoader.load('audio/combust-both.wav')
Exemple #37
0
    def __init__(self, location, velocity, direction):
        """ Ship class for Asteroids game

        Parameters
        ----------
        location : list of ints
            x, y pixel position of the center of the ship
        velocity : int
            velocity of the ship
        direction : int
            0-19 direction of travel of the ship
        """
        Sprite.__init__(self, location, velocity, direction)
        self.rotation_map = self.rotation_map_constructor()
        self.rotation = 0
        self.update_point_list()
        self.thruster = 0
    def clone(self):

        toReturn = Sprite.clone(self)
        toReturn.passable = self.passable
        toReturn.damage = self.damage
        toReturn.pickup = self.pickup.clone() if self.pickup else None
        toReturn.moveable = self.moveable.clone() if self.moveable else None
        return toReturn
def SetUpShipSprite(x,y, towerEntity):
    img = pygame.image.load('sprites/ship1.png')
    # @TODO anthonyluu: remove this after we switch to 64x64
    smaller_img = pygame.transform.scale(img, (PIXEL_RESOLUTION, PIXEL_RESOLUTION))

    towerEntity.sprite = Sprite(x=x, y=y, frames=[[smaller_img]])
    towerEntity.sprite.rect.x = x*PIXEL_RESOLUTION;
    towerEntity.sprite.rect.y = y*PIXEL_RESOLUTION;
    towerEntity.light_sprite = None;
Exemple #40
0
    def translate(self):
        Sprite.translate(self)

        glPushMatrix()
        # This assumes that the camera is at (0, 0, 0)!  Really this is not a good assumption.
        objToCamProj = self._normalize(array([-self.x, 0, -self.z], 'd'))
        lookAt = array([0, 0, 1], 'd')
        upAux = self._cross(lookAt, objToCamProj)
        angleCosine = add.reduce(lookAt * objToCamProj)
        if angleCosine < 0.99990 and angleCosine > -0.9999:
            glRotatef(math.acos(angleCosine) * 180 / 3.14, *upAux)

        objToCam = self._normalize(array([-self.x, -self.y, -self.z], 'd'))
        angleCosine = add.reduce(objToCamProj * objToCam)
        if angleCosine < 0.99990 and angleCosine > -0.9999:
            glRotatef(math.acos(angleCosine)*180/3.14, 1, 0, 0)
        else:
            glRotatef(math.acos(angleCosine)*180/3.14, -1, 0, 0)
Exemple #41
0
	def __init__(self, yFaceDirection, **kwArgs):
		super().__init__(**kwArgs)
		
		rm = ResourceManager.activeManager

		#	Set Systems
		self._yFaceDirection = yFaceDirection
		
		#	Set Characteristics
		self._alive = True
		self._armor  = 3
		self._health = 1000
		self._speed = 550
		self._velocity = vec(0,0)
		
		#	Set Rendering and Physics Data
		self._sprite = Sprite(rm.request("SpaceJet.anim"), t=self.getTransform().createChild())
		self._sprite.setFrame(1+3)
		
		self._explosionSprite = Sprite(rm.request("Explosion.anim"), t=self.getTransform().createChild())
		self._explosionSprite.isDrawn = False
		self._explosionSound = rm.request("Explosion.mp3")
		
		self._bounds = CollisionRect(self._sprite.getWidth(), self._sprite.getHeight(), t=self.getTransform().createChild())
		self._bounds.addEntity(self)
		
		#self._boundsDisplay = SceneObject(dataSrc = self._bounds, t=self._bounds.getTransform(), color=Color.Green, \
		#	batch=pyglet.graphics.Batch(), group=LinePolygonMode)
		
		#	Set Flight Area
		self._flightAreaEdges = [-400+self._sprite.getWidth()/2, 400-self._sprite.getWidth()/2, \
			yFaceDirection*(-300+self._sprite.getHeight()/2), -100*yFaceDirection]
		if yFaceDirection == -1:
			s = self._flightAreaEdges[2]
			self._flightAreaEdges[2] = self._flightAreaEdges[3]
			self._flightAreaEdges[3] = s
		
		#	Create the default weapon
		from Weapon import LaserGun
		from Weapon import MissleLauncher
		
		self._velocity = vec(0,0)
		self._weapon = LaserGun(self, t=self.getTransform().createChild())
		self._secondaryWep = MissleLauncher(self, t=self.getTransform().createChild())
Exemple #42
0
class Player(object):
    def __init__(self, name, init_x, init_y, image, stats, equipment,
                 inventory, skills):
        self.utils = Utils()
        self.name = name
        self.x = init_x
        self.y = init_y
        self.sprite = Sprite((self.x * self.utils.MAP_TILE_WIDTH,
                              self.y * self.utils.MAP_TILE_HEIGHT), image,
                             self.name)
        self.stats = stats
        self.equipment = equipment
        self.inventory = inventory
        self.skills = skills

    def gain_stat(self, stat, gain):
        if stat in self.stats:
            self.stats[stat] += gain

    def equip(self, equipment):
        self.equipment[equipment.equip_type] = equipment
        equipment.is_equipped = True

    def unequip(self, equip_slot):
        self.equipment[equip_slot].is_equipped = False
        self.equipment.pop(equip_slot)

    def add_item(self, item):
        self.inventory.update(item)

    def remove_item(self, item):
        self.inventory.pop(item)

    def add_skill(self, skill):
        self.skills.update(skill)

    def remove_skill(self, skill):
        self.skills.pop(skill)

    def move(self, dx, dy):
        self.x += dx
        self.y += dy
        self.sprite.move(dx * self.utils.MAP_TILE_WIDTH,
                         dy * self.utils.MAP_TILE_HEIGHT)
Exemple #43
0
    def __init__(self, location, velocity, direction, size, color):
        """ Asteroid class for Asteroids game

        Parameters
        ----------
        location : list of ints
            x, y pixel position of center of the asteroid
        velocity : int
            velocity of the asteroid (possible values 3, 6, 12)
        direction : int
            0-19 direction of travel of the asteroid
        size : int
            size of the asteroid (possible values 60, 30, 15)
        color : tuple of ints
            RGB values for asteroid color
        """
        Sprite.__init__(self, location, velocity, direction)
        self.size = size
        self.color = color
Exemple #44
0
def main():

    scene = Scene()
    scene.setTitle("Demo")
    scene.setSize(800, 600)

    # image by sujit1717
    player = Player(scene, 'player.png', 50, 100)
    player.setPosition(400, 300)

    box = Sprite(scene, 'box.png', 50, 50)
    box.setPosition(500, 500)

    #  define custom update method that'll be passed to the game loop
    def checkPlayerCollisions():
        if player.checkCollision():
            box.setPosition(randint(0, scene.width), randint(0, scene.height))

    #  start the game loop
    scene.startScene(checkPlayerCollisions)
Exemple #45
0
 def __init__(self, player: int, location: tuple, floor_height: float):
     """ctor"""
     self.sprite = Sprite("assets/Sprites", (70, 80), 2.5, player != 1,
                          Player.SPRITE_SHEET_STATES)
     if player == 1:
         self.controls = Player.PLAYER_ONE_CONTROLS
     else:
         self.controls = Player.PLAYER_TWO_CONTROLS
     self.location = Vector(location)
     self.sprite_state = "IDLE"
     self.speed = 0
     self.ResetSpeed()
     self.frame_counter = 0
     self.floor_height = floor_height
     self.velocity = Vector((0, 0))
     self.acceleration = Vector((0, GRAVITY))
     self.sprite_state_counter = 0
     self.damage_time = 0
     self.health = 100
     self.imports_done = False
Exemple #46
0
 def make_button(self, title, surf, x, y, image=None):
     pos = surf.get_offset()
     print 'offset for this surface is: ' + str(pos)
     font = pygame.font.Font(None, 16)
     f = font.render(title, 1, (0, 0, 0))
     t = pygame.Surface((f.get_width() + 2, f.get_height() + 2))
     t.fill((255, 255, 255))
     t.blit(f, (0, 0))
     sp = Sprite((x + pos[0], y + pos[1]), t, title)
     print "Sprite is at " + str(sp.rect.topleft)
     self.sprites.add(sp)
     return sp
Exemple #47
0
 def __init__(self, image, xPos, yPos, index):
     pygame.sprite.Sprite.__init__(self)
     Sprite.__init__(self, image, 0, 0, 0)
     self.image = pygame.Surface((32, 32))
     self.Index = index
     self.XPosition = xPos
     self.YPosition = yPos
     self.Left = False
     self.Right = False
     if (Sprite.FBFrames == []):
         Sprite.FBFrames.append(pygame.Surface((32, 32)).convert_alpha())
         Sprite.FBFrames.append(pygame.Surface((32, 32)).convert_alpha())
         Sprite.FBFrames.append(pygame.Surface((32, 32)).convert_alpha())
         Sprite.FBFrames.append(pygame.Surface((32, 32)).convert_alpha())
         Sprite.FBFrames[0].fill((0, 0, 0, 0))
         Sprite.FBFrames[1].fill((0, 0, 0, 0))
         Sprite.FBFrames[2].fill((0, 0, 0, 0))
         Sprite.FBFrames[3].fill((0, 0, 0, 0))
         Sprite.FBFrames[0].blit(image, (0, 0), (96, 0, 32, 32))
         Sprite.FBFrames[1].blit(image, (0, 0), (96, 32, 32, 32))
         Sprite.FBFrames[2].blit(image, (0, 0), (128, 0, 32, 32))
         Sprite.FBFrames[3].blit(image, (0, 0), (128, 32, 32, 32))
Exemple #48
0
	def __init__(self, controller, ship, startPos, vel, dAccel, accel, maxVel, damage, animation, **kwArgs):
		super().__init__(**kwArgs)
		
		# Controller
		self._controller = controller
		
		#	Generic state
		self._ship = ship
		self._damage = damage
		self._alive = True
		
		#	Set Movement state
		self.setTransform(r.activeRenderer.getSceneGraph().newTransform(t=startPos.getTranslation(), r=startPos.getRotation()))
		self._velocity = vel
		self._dAccel = dAccel
		self._accel = accel
		self._maxVelocity = maxVel
		
		#	Create Sprite and Bounds
		self._sprite = Sprite(animation, t=self.getTransform())
		self._bounds = CollisionRect(self._sprite.getWidth(), self._sprite.getHeight(), t=self.getTransform().createChild())
		self._bounds.addEntity(self)
Exemple #49
0
pygame.init()
screen = pygame.display.set_mode(resolution)
pygame.display.set_caption("Flappy Bird")

clock = pygame.time.Clock()

background      = pygame.image.load("bg.jpg").convert()
player_image    = pygame.image.load("player.png").convert_alpha()

pipe_down_image = pygame.image.load("Pipe_Down.png").convert_alpha()
pipe_up_image   = pygame.image.load("Pipe_Up.png").convert_alpha()

player_down = pygame.transform.rotate(player_image, -30)
player_dead = pygame.transform.rotate(player_image, -90)

player    = Sprite(player_image, (100, 100))
player.set_gravity(True, fall_speed)


pipe_down = Sprite(pygame.transform.scale(pipe_down_image, (pipe_down_image.get_width(), pipe_down_image.get_height() + randrange(50, range_grow))), (400, 0))
pipe_up   = Sprite(pygame.transform.scale(pipe_up_image, (pipe_up_image.get_width(), pipe_up_image.get_height() - 50)), (400, 520))


pipe_down1 = Sprite(pygame.transform.scale(pipe_down_image, (pipe_down_image.get_width(), pipe_down_image.get_height() + randrange(50, range_grow))), (600, 0))
pipe_up1   = Sprite(pygame.transform.scale(pipe_up_image, (pipe_up_image.get_width(), pipe_up_image.get_height() - 50)), (600, 520))


pipe_down2 = Sprite(pygame.transform.scale(pipe_down_image, (pipe_down_image.get_width(), pipe_down_image.get_height() + randrange(50, range_grow))), (800, 0))
pipe_up2   = Sprite(pygame.transform.scale(pipe_up_image, (pipe_up_image.get_width(), pipe_up_image.get_height() - 50)), (800, 520))

pipe_down3 = Sprite(pygame.transform.scale(pipe_down_image, (pipe_down_image.get_width(), pipe_down_image.get_height() + randrange(50, range_grow))), (1000, 0))
Exemple #50
0
 def draw(self):
     if self.get_frame() != self._lastFrame:
         self.updateFromSurface()
         self._lastFrame = self.get_frame()
     Sprite.draw(self)
Exemple #51
0
class RemoteSpaceJet(Transformable):

	_frameMap = {vec(-1, -1):0, vec(0, -1):1, vec(1, -1):2,	\
				vec(-1, 0):3, vec(0,0):4, vec(1,0):5,	\
				vec(-1, 1):6, vec(0, 1):7, vec(1, 1):8}
	
	def __init__(self, remoteController, yFaceDirection, **kwArgs):
		super().__init__(**kwArgs)
		
		rm = ResourceManager.activeManager

		#	Set Systems
		self._controller = remoteController
		self._yFaceDirection = yFaceDirection
		
		#	Set Characteristics
		self._alive = True
		self._armor  = 3
		self._health = 1000
		self._velocity = vec(0,0)
		
		#	Set Rendering and Physics Data
		self._sprite = Sprite(rm.request("SpaceJet.anim"), t=self.getTransform().createChild())
		self._sprite.setFrame(1+3)
		
		self._explosionSprite = Sprite(rm.request("Explosion.anim"), t=self.getTransform().createChild())
		self._explosionSprite.isDrawn = False
		self._explosionSound = rm.request("Explosion.mp3")
		
		self._bounds = CollisionRect(self._sprite.getWidth(), self._sprite.getHeight(), t=self.getTransform().createChild())
		self._bounds.addEntity(self)
		
		#self._boundsDisplay = SceneObject(dataSrc = self._bounds, t=self._bounds.getTransform(), color=Color.Green, \
		#	batch=pyglet.graphics.Batch(), group=LinePolygonMode)
		
		#	Set Flight Area
		self._flightAreaEdges = [-400+self._sprite.getWidth()/2, 400-self._sprite.getWidth()/2, \
			yFaceDirection*(-300+self._sprite.getHeight()/2), -100*yFaceDirection]
		if yFaceDirection == -1:
			s = self._flightAreaEdges[2]
			self._flightAreaEdges[2] = self._flightAreaEdges[3]
			self._flightAreaEdges[3] = s
			
		self.rotate(math.pi)
		

	''''''''''''''''''''''''''''''''''''''''''''''''

	# Update State Remotely
	def remoteUpdate(self, controlStruc):
		if(controlStruc):
			# Read Data From Control Structure
			health = controlStruc.get('health', self._health)
			position = controlStruc.get('position', self.getPosition())
			velocity = controlStruc.get('velocity', self._velocity)
			frameNum = controlStruc.get('frame', self._sprite.getFrame())
		
			# Set Alive and Position
			self._health = health
			self.setTranslation(position)
			
			# Set Velocity and Check for Movement
			self._velocity = velocity*self._yFaceDirection
			if(self._health > 0 and self._velocity != vec(0,0)):
				self._sprite.setFrame(frameNum)
				
				
	# Update State Locally -> No Message Received
	def update(self, dt):
		
		if self._alive:
			# Move according to last received velocity (aka 'Dead Reckoning')
			self.translate(self._velocity*dt)
		
			#	Check Flight Area
			p = self.getPosition();		np = p.copy()
			fa = self._flightAreaEdges
			
			if p.x < fa[0]:
				np.x = fa[0]
			if p.x > fa[1]:
				np.x = fa[1]
			if p.y < fa[2]:
				np.y = fa[2]
			if p.y > fa[3]:
				np.y = fa[3]
				
			if p != np:
				self.setTranslation(np)
			
			# Update Sprite Data
			moving = False;	direc = vec(0, 0)
			if(self._velocity != vec(0,0)):
				moving = True
				if(self._velocity.x != 0):
					direc.x = math.copysign(1, self._velocity.x)
				if(self._velocity.y != 0):
					direc.y = math.copysign(1, self._velocity.y)
			
			# Draw Sprite Accordingly
			self._sprite.setFrame(self._frameMap[vec(direc.x if self._yFaceDirection==1 else -direc.x, direc.y*self._yFaceDirection)])
			if not moving and self._sprite.getFrame() != 4:
				self._sprite.setFrame(4)
		
		# Update Sprite and Bounds
		if self._sprite.update(dt):
			self._updateDimensions()
		
		self._bounds.update(dt)
		self._checkDeath(dt)
			
		
	def notifyCollisions(self, primitive, colliderSet):
		pass
		
	
	''''''''''''''''''''''''''''''''''''''''''''''''
	
	def _checkDeath(self, dt):
		if self._health <= 0 and self._alive:
			self._explosionSprite.setAnimation("Iterating")
			self._explosionSprite.isDrawn = True
			self._explosionSound.play()
			self._alive = False
			
		self._explosionSprite.update(dt)
		if(self._explosionSprite.hasEnded()):
			self.removeFromWorld()
			
	def removeFromWorld(self):
		self._controller.removeEntity(self)
		self._bounds.removeEntity(self)
		
		self.getTransform().killSubtree()
		self.removeTransform()


	''''''''''''''''''''''''''''''''''''''''''''''''
	
	def _updateDimensions(self):
		w, h = self._sprite.getDimensions()
		self._bounds.resize(w, h)

	def getCollisionPrimitive(self):
		return self._bounds
		
	def explosionEnded(self):
		return self._explosionSprite.hasEnded()
Exemple #52
0
 def __del__(self):
     self._movie.stop()
     Sprite.__del__(self)
	def __init__(self, x, y, path=""):
		Sprite.__init__(self, x, y, path, 3)
		self.state = NONE
		self.down = False
		self.justPressed = False
Exemple #54
0
class SpaceJet(Transformable):

	_frameMap = {vec(-1, -1):0, vec(0, -1):1, vec(1, -1):2,	\
				vec(-1, 0):3, vec(0,0):4, vec(1,0):5,	\
				vec(-1, 1):6, vec(0, 1):7, vec(1, 1):8}
	
	def __init__(self, yFaceDirection, **kwArgs):
		super().__init__(**kwArgs)
		
		rm = ResourceManager.activeManager

		#	Set Systems
		self._yFaceDirection = yFaceDirection
		
		#	Set Characteristics
		self._alive = True
		self._armor  = 3
		self._health = 1000
		self._speed = 550
		self._velocity = vec(0,0)
		
		#	Set Rendering and Physics Data
		self._sprite = Sprite(rm.request("SpaceJet.anim"), t=self.getTransform().createChild())
		self._sprite.setFrame(1+3)
		
		self._explosionSprite = Sprite(rm.request("Explosion.anim"), t=self.getTransform().createChild())
		self._explosionSprite.isDrawn = False
		self._explosionSound = rm.request("Explosion.mp3")
		
		self._bounds = CollisionRect(self._sprite.getWidth(), self._sprite.getHeight(), t=self.getTransform().createChild())
		self._bounds.addEntity(self)
		
		#self._boundsDisplay = SceneObject(dataSrc = self._bounds, t=self._bounds.getTransform(), color=Color.Green, \
		#	batch=pyglet.graphics.Batch(), group=LinePolygonMode)
		
		#	Set Flight Area
		self._flightAreaEdges = [-400+self._sprite.getWidth()/2, 400-self._sprite.getWidth()/2, \
			yFaceDirection*(-300+self._sprite.getHeight()/2), -100*yFaceDirection]
		if yFaceDirection == -1:
			s = self._flightAreaEdges[2]
			self._flightAreaEdges[2] = self._flightAreaEdges[3]
			self._flightAreaEdges[3] = s
		
		#	Create the default weapon
		from Weapon import LaserGun
		from Weapon import MissleLauncher
		
		self._velocity = vec(0,0)
		self._weapon = LaserGun(self, t=self.getTransform().createChild())
		self._secondaryWep = MissleLauncher(self, t=self.getTransform().createChild())
		
		
	''''''''''''''''''''''''''''''''''''''''''''''''
	
	def update(self, dt):
		self.readKeyboardInput(dt)
		
		if self._sprite.update(dt):
			self._updateDimensions()
			
		self._bounds.update(dt)
		self._weapon.update(dt)
		self._secondaryWep.update(dt)
		
		return self._checkDeath(dt)

		
	def notifyCollisions(self, primitive, colliderSet):
		pass
		
	
	''''''''''''''''''''''''''''''''''''''''''''''''
	
	def _checkDeath(self, dt):
		if self._health <= 0 and self._alive:
			self._explosionSprite.setAnimation("Iterating")
			self._explosionSprite.isDrawn = True
			self._explosionSound.play()
			self._alive = False
			
		self._explosionSprite.update(dt)
		if not self._alive and self._explosionSprite.hasEnded():
			self.removeFromWorld()
			
	def removeFromWorld(self):
		from GameWorld import GameWorld
		GameWorld.activeWorld.removeEntity(self)
		self._bounds.removeEntity(self)
		
		self.getTransform().killSubtree()
		self.removeTransform()
			
	
	def readKeyboardInput(self, dt):
		if not self._alive:
			return
			
		actions = Keyboard.localKeyboard.getActions()
		moving = False
		for action in actions:
			if action.name == "Move":
				direc = action.params[0]
				direc = direc*self._yFaceDirection
				
				self._sprite.setFrame(self._frameMap[vec(direc.x if self._yFaceDirection==1 else -direc.x, direc.y*self._yFaceDirection)])
				self.translate(direc*self._speed*dt)
				self._velocity = direc*self._speed
				
				#	Check Flight Area
				p = self.getPosition();		np = p.copy()
				fa = self._flightAreaEdges
				
				if p.x < fa[0]:
					np.x = fa[0]
				if p.x > fa[1]:
					np.x = fa[1]
				if p.y < fa[2]:
					np.y = fa[2]
				if p.y > fa[3]:
					np.y = fa[3]
					
				if p != np:
					self.setTranslation(np)
				moving = True
				
			elif action.name == "FirePrimary":
				self._weapon.fire(vec(0, self._yFaceDirection))
			elif action.name == "FireSecondary":
				self._secondaryWep.fire(vec(0, self._yFaceDirection))
				
		if not moving and self._sprite.getFrame() != 4:
			self._sprite.setFrame(4)
	
	
	''''''''''''''''''''''''''''''''''''''''''''''''
	
	def _updateDimensions(self):
		w, h = self._sprite.getDimensions()
		self._bounds.resize(w, h)

	def getCollisionPrimitive(self):
		return self._bounds
		
	def explosionEnded(self):
		return self._explosionSprite.hasEnded()
Exemple #55
0
	def __init__(self):
		Sprite.__init__(self, 0, 0, "assets/game/ball")
		self.source = self.image.copy()
Exemple #56
0
rendMan = Renderer(winSize=winDimensions)
Renderer.activeRenderer = rendMan

sg = rendMan.getSceneGraph()

rm = ResourceManager("Tests\\data")
ResourceManager.activeManager = rm
rm.registerExtension(".jpg", "img", ["img"], pyglet.image.load)
rm.registerExtension(".bmp", "img", ["img"], pyglet.image.load)
rm.registerExtension(".png", "img", ["img"], pyglet.image.load)
rm.registerExtension(".anim", "anim", ["anim"], Animation)

anim1 = rm.request("CharizardEvolve.anim")
anim2 = rm.request("PShip.anim")

s1 = Sprite(anim1, t=sg.newTransform())
s2 = Sprite(anim2, t=sg.newTransform(t=vec(-200,100)))

s1.setAnimation("Alternating")
s2.setAnimation("Looping")


print("")
rm.debugDisplay()
print("")


def update(dt):
	s1.update(dt)
	s2.update(dt)
Exemple #57
0
	def __init__(self, font, text, color):
		surf = font.render(text, 1, color)
		Sprite.__init__(self, surf)