Example #1
0
	def __init__(self, pos = (0,0), **images) :
		Projectile.__init__ (self, pos, **images)
		Weapon.__init__ (self, pos, **images)
		self._has_been_launched = False
		self.set_knockback_factor (5)
		self._damage = 5
		self._name = "Bomb"
Example #2
0
class ShotTracker:
    def __init__(self, win, angle, velocity, height):
        """win is the GraphWin to display the shot. angle, velocity,
        and height are initial projectile parameters.
        """

        self.proj = Projectile(angle, velocity, height)
        self.marker = Circle(Point(0, height), 3)
        self.marker.setFill("red")
        self.marker.setOutline("red")
        self.marker.draw(win)

    def update(self, dt):
        """Move the shot dt seconds farther along its flight"""

        # update the projectile
        self.proj.update(dt)

        # move the circle to the new projectile location
        center = self.marker.getCenter()
        dx = self.proj.getX() - center.getX()
        dy = self.proj.getY() - center.getY()
        self.marker.move(dx, dy)

    def getX(self):
        """return the current x coordinate of the shot's center"""
        return self.proj.getX

    def getY(self):
        """return the current y coordinate of the shot's center"""
        return self.proj.getY()

    def undraw(self):
        """undraw the shot"""
        self.marker.undraw()
def main ():

    #Introduction
    print ("This program graphically depicts the flight of a cannonball. ")
    print ()

    #Get inputs
    a = eval(input("Enter the launch angle in degrees: "))
    v = eval(input("Enter the initial velocity in meters per second: "))
    h = eval(input("Enter the initial height in meters: "))

    #Create tracker
    projectile = Projectile(a, v, h)
    win = GraphWin(200, 200)
    win.setCoords(0.0, 0.0, 25.0, 25.0)
    tracker = Tracker(win, projectile)
    time = 0.0
    while projectile.getY() >= -5:
        time += .0005
        projectile.update(time)
        tracker.update()

    #Close window
    win.getMouse()
    win.close()
Example #4
0
 def set(cls, x, y, vel=0, angle=0, gravity=0):
     if cls.all_p_stack.is_empty() != True:
         p = cls.all_p_stack.pop()
         Concrete_shot.add_to_class_lst(p, Megaman_object.hazards, p.ID)
         p.grounded = False
         p.is_shattered = False
         Projectile.set(p, x, y, vel, angle=angle, gravity=gravity)
Example #5
0
 def __init__(self, watcher_pmx_name, watcher_vmd_name):
     Projectile.__init__(self, watcher_pmx_name, watcher_vmd_name)
     self.set_overwrite_bones([
         '左上主砲X', 'PU主砲_砲身_U', 'PU主砲_砲身_U先', 'PU主砲_砲身_L', 'PU主砲_砲身_L先',
         '右上主砲X', 'SU主砲_砲身_U', 'SU主砲_砲身_U先', 'SU主砲_砲身_L', 'SU主砲_砲身_L先'
     ])
     self.set_point_mode('ARM')
Example #6
0
 def __init__(self, win, angle, velocity, height):
     # displays initial projectile parameters
     self.proj = Projectile(angle, velocity, height)
     self.marker = Circle(Point(0, height), 3)
     self.marker.setFill("red")
     self.marker.setOutline("red")
     self.marker.draw(win)
Example #7
0
 def make_projectile_down(time):
     fire_ball = Projectile(player, "down")
     projectile_add(fire_ball)
     fire_ball.shoot_left(pygame.time.get_ticks())
     engine.events[pygame.USEREVENT + evCnt()] = fire_ball.shoot_down
     engine.collisions[dark_knight] = (fire_ball, dark_knight.getHit)
     make_boss()
def main():
    angle, vel, h0, time = getInputs()
    cball = Projectile(angle, vel, h0)

    while cball.getY >= 0:
        cball.update(time)
        print "The distance traveled is: %0.1f meters." %(cball.getX())
Example #9
0
    def xofangle(x):
        myRamp = Ramp(100, 0)
        myProjectile = Projectile(math.sqrt(2), x, 0, myRamp)

        myProjectile.calcxtFall(0.00000000000000001)

        return myProjectile.xFall
Example #10
0
    def __init__(self, main):

        self.main = main
        self.scr = self.main.scr
        self.size = self.main.size

        self.wsx = self.wsy = 0
        self.vwsx = self.vwsy = 0

        self.projectile = Projectile(self)
        self.player = Player(self)
        self.enemyC = Enemy(self)
        self.effectC = Effect(self)

        self.entitylist = []
        self.bg = p.Color("black")

        self.s1 = Slider({
            "window": self.scr,
            "pos": [500, 500, 50, 30],
            "color": (0, 255, 200),
            "color2": (255, 0, 55),
            "colorindex": 100,
            "steps": {
                "startpoint": 1,
                "endpoint": 10
            },
            "font": {
                "size": 15,
                "clicksize": 20
            }
        })
 def __init__( self, window, angle, velocity, height ):
     
     self.projectile = Projectile( angle, velocity, height )
     
     self.ball = Circle( Point( 0, height ), 3 )
     self.ball.setOutline( 'red' )
     self.ball.setFill( 'red' )
     self.ball.draw( window )
Example #12
0
	def __init__(self, game = None, parent = None, vel = Vec3()):
		models = MODELS_PATH + "Bullet"
		anims = {}
		
		vel.normalize()
		vel *= random.randint(15, 20)
		
		Projectile.__init__(self, models, anims, "**/CollisionSphere", game, parent, parent.getPos(), vel)
Example #13
0
 def __init__(self, win, angle, velocity, height):
     """win is the GraphWin to display the shot. angle, velocity, 
     and height are initial procetile parameters."""
     self.proj = Projectile(angle, velocity, height)
     self.marker = Circle(Point(0, height), 3)
     self.marker.setFill("red")
     self.marker.setOutline("red")
     self.marker.draw(win)
Example #14
0
	def __init__(self, width, height, x, y, owner=None):
		Projectile.__init__(self, 25, 25, x, y)
		self.owner = owner
		self.speed = 5
		
		# initialize sprite lists
		ss = SpriteSheet(path.join(get_art_dir(), 'Monkey', 'Banana_spritesheet.png'), 8)
		self.sprites_throw_right = ss.get_sprites(size=(25, 25))
		self.sprites_throw_left = [pygame.transform.flip(s, True, False) for s in self.sprites_throw_right]
Example #15
0
 def __init__(self, x, y, xvel, yvel, image):
     Projectile.__init__(self, x, y, image)
     self.rect = self.image.get_rect()
     self.rect.width = 3
     self.rect.height = 3
     self.xvel = xvel
     self.yvel = yvel
     self.rect.x = x
     self.rect.y = y
Example #16
0
def read_projectile_trajectories(csv_file="Dataset.csv"):
    projectiles = []
    
    with open(csv_file, 'rb') as csvfile:
        reader = csv.reader(csvfile, delimiter=',')
        
        projectile = Projectile()
        first_iteration = True
        
        for row in reader:
            time, along_x, along_y = int(row[0]), float(row[1]), float(row[2])
            
            if not(first_iteration) and time == 0:
                projectiles.append(projectile)
                projectile = Projectile()
                projectile.add_trajectory_point(time, along_x, along_y)
                continue
            
            projectile.add_trajectory_point(time, along_x, along_y)
            first_iteration = False
        
        if projectile.trajectory_points_count() != 0:
            projectiles.append(projectile)
    
    return projectiles
Example #17
0
    def render(screen, width, height, gamestate, selected_id, host, port):
        raycaster = Raycaster(gamestate["players"], gamestate["walls"])
        raycaster.update()
        map_size = raycaster.get_map_size() + 1.0

        if selected_id == 0:
            for player in gamestate["players"]:
                Game.render_vision(raycaster, player, screen, width, height, map_size, len(gamestate["players"]))
        elif selected_id > 0 and selected_id - 1 < len(gamestate["players"]):
            Game.render_vision(raycaster, gamestate["players"][selected_id - 1], screen, width, height, map_size,
                               len(gamestate["players"]))

        Map.render(gamestate["walls"], screen, width, height, map_size)
        for p in gamestate["players"]:
            Player.render(p, raycaster, screen, width, height, map_size)
        for projectile in gamestate["projectiles"]:
            Projectile.render(projectile, screen, width, height, map_size)
        for p in gamestate["players"]:
            Player.render_font(p, screen, width, height, map_size)


        myfont = pygame.font.SysFont("Arial", 22)
        label = myfont.render("Ticks remaining: " + str(gamestate["remaining_ticks"]), 1, (255, 255, 255))
        s = pygame.Surface((label.get_width() + 20, label.get_height() + 20), pygame.SRCALPHA)  # per-pixel alpha
        s.fill((45, 45, 45, 200))
        screen.blit(s, (width // 2 - label.get_width() // 2 - 10, 0))
        screen.blit(label, (width // 2 - label.get_width() // 2, 10))

        myfont = pygame.font.SysFont("Arial", 16)
        label = myfont.render("test", 1, (255, 255, 255))
        line_height = label.get_height()
        myfont = pygame.font.SysFont("Arial", 32)
        label = myfont.render("Ranking-----", 1, (255, 255, 255))
        line_width = label.get_width()
        s = pygame.Surface((line_width + 20, line_height * (len(gamestate["ranking"]) + 2) + 40), pygame.SRCALPHA)  # per-pixel alpha
        s.fill((45, 45, 45, 200))
        screen.blit(s, (0, 0))

        myfont = pygame.font.SysFont("Arial", 32)
        label = myfont.render("Ranking", 1, (255, 255, 255))
        screen.blit(label, (10, 10))
        myfont = pygame.font.SysFont("Arial", 16)
        i = 2
        sorted_x = sorted(gamestate["ranking"].items(), key=operator.itemgetter(1), reverse=True)
        for key, value in sorted_x:
            label = myfont.render(key + ": " + str(value), 1, (255, 255, 255))
            screen.blit(label, (10, 10 + label.get_height() * 1.1 * i))
            i += 1

        myfont = pygame.font.SysFont("Arial", 32)
        label = myfont.render(host + ":" + str(port), 1, (255, 255, 0))
        s = pygame.Surface((label.get_width() + 20, label.get_height() + 20), pygame.SRCALPHA)  # per-pixel alpha
        s.fill((45, 45, 45, 200))
        screen.blit(s, (width // 2 - label.get_width() // 2 - 10, height - label.get_height() - 20))
        screen.blit(label, (width // 2 - label.get_width() // 2, height - label.get_height() - 10))
 def __init__(self, character):
     Projectile.__init__(self, self)
     self.initial_x_coordinate = character.x_coordinate
     self.initial_y_coordinate = character.y_coordinate
     self.x_coordinate = character.x_coordinate
     self.y_coordinate = character.y_coordinate
     self.old_x_coordinate = self.x_coordinate
     self.old_y_coordinate = self.y_coordinate
     self.direction = character.direction
     Projectile.projectile_count += 1
     Projectile.piercing_projectile_list.append(self)
Example #19
0
def handle_speed():
    global actualLevel

    time = pygame.time.get_ticks() // 1000
    steep = time // gameConfigs["timeToIncreaseSpeed"]
    if steep > actualLevel:
        actualLevel += 1
        if (Ship.speed <= gameConfigs["maxSpeed"]):
            Ship.speedUp()
            Enemy.speedUp()
            Projectile.speedUp()
Example #20
0
def enemies_fire():
    for e in global_var.enemies:
        if len(global_var.enemies) > 10:
            if random.randint(0, 100) % 2 == 0:
                global_var.projectiles.append(
                    Projectile(canvas, 'red', player, False,
                               e.enemieX0 + e.enemie_width // 2, e.enemieY1))
        else:
            global_var.projectiles.append(
                Projectile(canvas, 'red', player, False,
                           e.enemieX0 + e.enemie_width // 2, e.enemieY1))
Example #21
0
def main():
    angle, vel, h0, time = getInputs()
    window = GraphWin("window",250,250)
    cball = Projectile(angle, vel, h0)
    #Tracker(window,cball)  
    while cball.getY() >= 0:
        cball.update(.001)
        Tracker(window,cball)  
        
    window.getMouse()      
    window.close()
    print("\nDistance traveled: {0:0.1f} meters.".format(cball.getX()))
Example #22
0
def handle_speed():
    global actualLevel

    time = pygame.time.get_ticks() // 1000
    steep = time // gameConfigs["timeToIncreaseSpeed"]
    print(steep)
    if steep > actualLevel:
        actualLevel += 1
        if (Ship.speed <= gameConfigs["maxSpeed"]):
            Ship.speedUp()
            Enemy.speedUp()
            Projectile.speedUp()
def main ():

    #Introduction
    print ("This program uses a cannonball to shoot at a target.")

    #Create graphics window
    win = GraphWin(200, 200)
    win.setCoords(0.0, 0.0, 25.0, 25.0)
    target = Target(win)

    flag = False
    targetHit = False
    while not flag:

    #Get inputs
        print ()
        a = eval(input("Enter the launch angle in degrees: "))
        v = eval(input("Enter the initial velocity in meters per second: "))
        h = eval(input("Enter the initial height in meters: "))

    #Create tracker
        projectile = Projectile(a, v, h)
        tracker = Tracker(win, projectile)
        time = 0.0
        while projectile.getY() >= -5:
            time += .0005
            projectile.update(time)
            tracker.update()

    #Calculate if cannonball hit target
            points = target.points()
            center = tracker.circ.getCenter()
            center_x = center.getX()
            center_y = center.getY()
            radius = tracker.circ.getRadius()
            for point in points:
                x = point.getX()
                y = point.getY()
                square_dist = (center_x-x) ** 2 + (center_y-y) ** 2
                if square_dist <= radius ** 2:
                    targetHit = True
        if targetHit:
            print ("\nYou hit the target!")
            flag = True
        else:
            flag = False
            print ("\nTry again!")


    #Close window
    win.getMouse()
    win.close()
Example #24
0
 def shoot_projectile(self, tank):
     if tank.direction == 'l':
         start_pos = Position(tank.position.x - 1, tank.position.y)
         self.game_level.projectiles.append(Projectile(start_pos, 'l'))
     elif tank.direction == 'r':
         start_pos = Position(tank.position.x + 1, tank.position.y)
         self.game_level.projectiles.append(Projectile(start_pos, 'r'))
     elif tank.direction == 'd':
         start_pos = Position(tank.position.x, tank.position.y + 1)
         self.game_level.projectiles.append(Projectile(start_pos, 'd'))
     elif tank.direction == 'u':
         start_pos = Position(tank.position.x, tank.position.y - 1)
         self.game_level.projectiles.append(Projectile(start_pos, 'u'))
Example #25
0
def main():

    #Introduction
    print("This program uses a cannonball to shoot at a target.")

    #Create graphics window
    win = GraphWin("Target", 200, 200)
    win.setCoords(0.0, 0.0, 25.0, 25.0)
    target = Target(win)

    flag = False
    targetHit = False
    while not flag:

        #Get inputs
        print()
        a = eval(input("Enter the launch angle in degrees: "))
        v = eval(input("Enter the initial velocity in meters per second: "))
        h = eval(input("Enter the initial height in meters: "))

        #Create tracker
        projectile = Projectile(a, v, h)
        tracker = Tracker(win, projectile)
        time = 0.0
        while projectile.getY() >= -5:
            time += .0005
            projectile.update(time)
            tracker.update()

            #Calculate if cannonball hit target
            points = target.points()
            center = tracker.circ.getCenter()
            center_x = center.getX()
            center_y = center.getY()
            radius = tracker.circ.getRadius()
            for point in points:
                x = point.getX()
                y = point.getY()
                square_dist = (center_x - x)**2 + (center_y - y)**2
                if square_dist <= radius**2:
                    targetHit = True
        if targetHit:
            print("\nYou hit the target!")
            flag = True
        else:
            flag = False
            print("\nTry again!")

    #Close window
    win.getMouse()
    win.close()
Example #26
0
def main():
    angle, vel, h0, time = getInputs()
    cball = Projectile(angle, vel, h0)
    while cball.getY() >= 0 and cball.getYv() >= 0:
        cball.update(time)
    print("\nDistance traveled: {0:0.1f} meters.".format(cball.getX()))
    print("Max height: {0:0.1f} meters.".format(cball.getY()))
class BaseballTracker:
    def __init__( self, window, angle, velocity, height ):
        
        self.projectile = Projectile( angle, velocity, height )
        
        self.ball = Circle( Point( 0, height ), 3 )
        self.ball.setOutline( 'red' )
        self.ball.setFill( 'red' )
        self.ball.draw( window )
        
    def update( self, timeInterval ):
        prevX = self.projectile.getX()
        prevY = self.projectile.getY()
        
        self.projectile.update( timeInterval )
        
        dx = self.projectile.getX() - prevX
        dy = self.projectile.getY() - prevY
        
        self.ball.move( dx, dy )
        
    def clear( self ):
        self.ball.undraw()
        
    def getX( self ):
        return self.projectile.getX()
        
    def getY( self ):
        return self.projectile.getY()       
Example #28
0
def main():
    win = GraphWin("Projectile Tracker", 600, 600)
    win.setCoords(0, 0, 1400, 1400)
    missile = Projectile(45, 100, 0)
    tracker = Tracker(win, missile, 1400)
    while missile.getY() >= 0:
        missile.update(.05)
        dx = missile.getX()
        dy = missile.getY()
        tracker.move(dx, dy)
        print("{}:{}".format(missile.getX(), missile.getY()))
Example #29
0
    def render_game(self, screen, width, height):
        if self.selected_player == 0:
            self.render_lobby(screen, width, height, False)
            return
        raycaster = Raycaster(self.players, self.walls)
        raycaster.update()
        map_size = raycaster.get_map_size() + 1.0

        #self.render_vision(raycaster, self.player, screen, width, height, map_size)
            

        Map.render(self.walls, screen, width, height, map_size)
        #Map.render(raycaster.get_lines(), screen, width, height, map_size)
        for p in self.players:
            Player.render(p, raycaster, screen, width, height, map_size)
        for projectile in self.projectiles:
            Projectile.render(projectile, screen, width, height, map_size)
        for p in self.players:
            Player.render_font(p, screen, width, height, map_size)


        myfont = pygame.font.SysFont("Arial", 22)
        label = myfont.render("Ticks remaining: " + str(self.remaining_ticks), 1, (255, 255, 255))
        s = pygame.Surface((label.get_width() + 20, label.get_height() + 20), pygame.SRCALPHA)  # per-pixel alpha
        s.fill((45, 45, 45, 200))
        screen.blit(s, (width // 2 - label.get_width() // 2 - 10, 0))
        screen.blit(label, (width // 2 - label.get_width() // 2, 10))

        myfont = pygame.font.SysFont("Arial", 16)
        label = myfont.render("test", 1, (255, 255, 255))
        line_height = label.get_height()
        myfont = pygame.font.SysFont("Arial", 32)
        label = myfont.render("Ranking-----", 1, (255, 255, 255))
        line_width = label.get_width()
        s = pygame.Surface((line_width + 20, line_height * (len(self.ranking) + 2) + 40), pygame.SRCALPHA)  # per-pixel alpha
        s.fill((45, 45, 45, 200))
        screen.blit(s, (0, 0))

        myfont = pygame.font.SysFont("Arial", 32)
        label = myfont.render("Ranking", 1, (255, 255, 255))
        screen.blit(label, (10, 10))
        myfont = pygame.font.SysFont("Arial", 16)
        i = 2
        sorted_x = sorted(self.ranking.items(), key=operator.itemgetter(1), reverse=True)
        for key, value in sorted_x:
            label = myfont.render(key + ": " + str(value), 1, (255, 255, 255))
            screen.blit(label, (10, 10 + label.get_height() * 1.1 * i))
            i += 1
Example #30
0
 def launch_projectile(self):
     """
     Permet l'apparition des projectiles en jeu.
     :return:
     """
     # créer une nouvelle instance de la classe projectile
     self.all_projectiles.add(Projectile(self))
 def __init__(self, time):
     self.xPos = 1195
     self.yPos = -50
     self.width = 300
     self.height = 400
     self.direction = 'e'
     self.previousDirection = 'e'
     self.speed = 0.05
     self.health = 20
     self.hurt = False
     self.hurtTime = 0
     self.changeInHp = 0
     self.attacking = 0  # 0 = not, 1 = up, 2 = right, 3 = down, 4 = down
     self.attackingTime = 0
     self.floorTile = 3
     self.base = Base(self.xPos, self.yPos, self.width, self.height, 50,
                      200)
     self.pathTime = time
     self.pathTimeUpdateRate = 1000
     self.directions = ['n', 'ne', 'e', 'se', 's', 'sw', 'w', 'nw']
     self.currentFrame = -1
     self.currentTime = -1
     self.projectiles = [Projectile(0, 0, 0, 0, 'none', 0, 0, 0, 0, 0)]
     self.dying = False
     self.dead = False
     self.endOfOrange = False
Example #32
0
 def launch_projectile(self):
     # creer une nouvelle instance de la classe Projectile
     self.all_projectiles.add(Projectile(self))
     # demarrer l'animation du lancer
     self.start_animation()
     # jouer le son
     self.game.sound_manager.play('tir')
Example #33
0
    def __init__(self, main):

        self.main = main
        self.scr = self.main.scr
        self.size = self.main.size

        self.wsx = self.wsy = 0
        self.vwsx = self.vwsy = 0

        self.projectile = Projectile(self)
        self.player = Player(self)
        self.enemyC = Enemy(self)
        self.effectC = Effect(self)

        self.entitylist = []
        self.bg = p.Color("black")

        self.s1 = Slider(
            {
                "window": self.scr,
                "pos": [500, 500, 50, 30],
                "color": (0, 255, 200),
                "color2": (255, 0, 55),
                "colorindex": 100,
                "steps": {"startpoint": 1, "endpoint": 10},
                "font": {"size": 15, "clicksize": 20},
            }
        )
Example #34
0
    def update(self):
        self.gunLastShot += 1

        image = pygame.image.load("assets/images/player-ship.png")
        imageMoveLeft = pygame.image.load("assets/images/player-ship-left.png")
        imageMoveRight = pygame.image.load(
            "assets/images/player-ship-right.png")

        keys = pygame.key.get_pressed()

        if keys[pygame.K_LEFT]:
            self.x -= self.speed
            super().__init__(self.screen, (self.x, self.y), imageMoveLeft)

        if keys[pygame.K_RIGHT]:
            self.x += self.speed
            super().__init__(self.screen, (self.x, self.y), imageMoveRight)

        if not keys[pygame.K_RIGHT] and not keys[pygame.K_LEFT]:
            super().__init__(self.screen, (self.x, self.y), image)

        if keys[pygame.K_SPACE] and self.gunLastShot > self.gunDelay:
            self.gunLastShot = 0
            pygame.mixer.music.load("assets/audios/gunshot.ogg")
            pygame.mixer.music.play()
            projectile = Projectile(self.screen,
                                    (self.x + self.width // 2, self.y),
                                    Projectile.UP)
            ProjectileList.projectiles.append(projectile)

        self.check_dead()

        super().update()
Example #35
0
    def launch_projectile(self):
        self.all_projectiles.add(Projectile(self))
        # demarrer l'animation du lancer
        self.start_animation()

        # jouer le son
        self.game.sound_manager.play('tir')
Example #36
0
    def update(self):
        self.steep()
        self.directionTime += 1

        if (pygame.time.get_ticks() / 1000 > EnemiesList.lastSpawn + 5):
            EnemiesList.randomSpawn(self.screen)

        if random.randint(0, 1000) < 20:
            pygame.mixer.music.load("assets/audios/gunshot2.ogg")
            pygame.mixer.music.play()
            projectile = Projectile(self.screen,
                                    (self.x + self.width // 2, self.y),
                                    Projectile.DOWN)
            ProjectileEnemiesList.projectiles.append(projectile)

        isInLeftBorder = self.x <= 0
        isInRigthBorder = self.x >= gameConfigs["width"] - self.width
        if isInLeftBorder or isInRigthBorder:
            self.toggleDirection()

        maxRand = gameConfigs["width"] // 2 + (self.directionTime * 3) // 1
        valueToToggle = random.randint(gameConfigs["width"] // 3, maxRand)

        if valueToToggle > gameConfigs["width"]:
            self.toggleDirection()
            self.resetDirectionTime()

        self.check_dead()

        super().update()
Example #37
0
    def launch_projectile(self,
                          target,
                          speed,
                          start=None,
                          dmg=0,
                          dmg_type='magical',
                          special_collision_func=None,
                          ending_func=None):
        if start is None:
            start = self.position

        start_euc = self.board.get_hex_center_euc(start)
        end_euc = self.board.get_hex_center_euc(target)

        def collision_func(unit):
            print("projectile colliding on ", unit.name, "from ", self.name)
            if unit.team_id != self.team_id:
                self.deal_damage(unit, dmg, dmg_type)
            if special_collision_func:
                special_collision_func(unit)

        self.board.projectiles.add(
            Projectile(self,
                       start_euc,
                       end_euc,
                       speed,
                       img='imgs/%s_ability.png' % self.name,
                       collision_func=collision_func,
                       ending_func=ending_func))
Example #38
0
 def specialAbility2(self):
     """
     Rockets
     :return: True if player has mana
     """
     if self.mana >= 5:
         if self.team == 'BLUE':
             bigassbullet = Projectile(self.x, self.y, 4, 40, self.team, "assets/Rocket(blue).png")
         if self.team == 'RED':
             bigassbullet = Projectile(self.x, self.y, 4, 40, self.team, "assets/Rocket(red).png")
         self.allprojectiles.add(bigassbullet)
         self.bigassbullets.add(bigassbullet)
         self.sprites.add(bigassbullet)
         self.mana -= 5
         self.manaspent += 5
         return True
Example #39
0
    def launch_projectile(self):
        """Launch projectiles
        PRE:/
        POST: Use object of the class and add it to the attribut group
        """

        self.all_projectile.add(Projectile(self))
Example #40
0
def SpawnProjectile(position, angle, weaponDamage, weaponKnockback,
                    weaponProjectileSpeed, ID, source, crit):

    angle += random.random() * 0.125 - 0.06125

    damage = int(weaponDamage) + int(tables.projectileData[ID][2])

    power = int(weaponProjectileSpeed)
    velocity = (math.cos(angle) * power, math.sin(angle) * power)

    knockback = int(weaponKnockback) + int(tables.projectileData[ID][3])

    if commons.SOUND:
        sound_manager.sounds[int(tables.projectileData[ID][9])].play()

    projectiles.append(
        Projectile(position,
                   velocity,
                   str(tables.projectileData[ID][1]),
                   ID,
                   source,
                   damage,
                   knockback,
                   crit,
                   int(tables.projectileData[ID][4]),
                   str(tables.projectileData[ID][6]),
                   GRAVITY=float(tables.projectileData[ID][7]),
                   DRAG=float(tables.projectileData[ID][8])))
Example #41
0
 def fire(self):
     current_time = pygame.time.get_ticks()
     if current_time - self.time_since_fire > 300:
         self.time_since_fire = current_time
         self.game.all_projectiles.add(
             Projectile(self.game, self, self.get_pos(),
                        self.heading_point))
Example #42
0
 def launch_projectile(self):
     # nouvelle instance de la class Projectile
     self.all_projectile.add(
         Projectile(self))  # ajout du projectile dans le groupe
     self.start_animation() == True  # demarre l'anim
     # jouer le son
     self.game.sound_manager.play("tir")
Example #43
0
 def fire(self):
     angle_radians = math.radians(self.rotation)
     ship_radius = self.image.width/2 + 5.0
     bullet_x = self.x + math.sin(angle_radians) * ship_radius
     bullet_y = self.y + (math.cos(angle_radians) * ship_radius)
     new_bullet = Projectile(name="bullet",
                             img=self.weapon_projectile_image,
                             x=bullet_x, y=bullet_y, batch=self.batch)
     new_bullet.velocity_x = (
         self.velocity_x +
         math.sin(angle_radians) * self.weapon_projectile_speed
     )
     new_bullet.velocity_y = (
         self.velocity_y +
         math.cos(angle_radians) * self.weapon_projectile_speed
     )
     self.new_objects.append(new_bullet)
Example #44
0
 def fire_saucer(self):
   for saucer in self.saucers:
     if saucer.counter > (30 * self.level_mod):
       saucer.counter = 0
       bullet1 = Projectile('bullet', 0, -10, 'computer')
       bullet1.x = saucer.center_x - bullet1.width/2
       bullet1.y = saucer.y - saucer.height/2
       self.add_widget(bullet1)
       bullet2 = Projectile('bullet', -7, -7, 'computer')
       bullet2.x = saucer.center_x - bullet2.width/2 - saucer.width * .4
       bullet2.y = saucer.y - saucer.height/2
       self.add_widget(bullet2)
       bullet3 = Projectile('bullet', 7, -7, 'computer')
       bullet3.x = saucer.center_x - bullet3.width/2 + saucer.width * .4
       bullet3.y = saucer.y - saucer.height/2
       self.add_widget(bullet3)
     else: saucer.counter += 1
Example #45
0
 def fire_drone(self):
   for drone in self.drones:
     if drone.counter > (30 * self.level_mod):
       drone.counter = 0
       bullet1 = Projectile('bullet', 0, -10, 'computer')
       bullet1.x = drone.center_x - bullet1.width/2 + drone.width * .4
       bullet1.y = drone.y
       self.add_widget(bullet1)
       bullet2 = Projectile('bullet', 0, -10, 'computer')
       bullet2.x = drone.center_x - bullet2.width/2 - drone.width * .4
       bullet2.y = drone.y
       self.add_widget(bullet2)
     else: drone.counter += 1
Example #46
0
	def __init__ (self, pos = (0,0), **images) :
		Projectile.__init__ (self, pos,**images)
		self.set_gravity (0)
		self.set_knockback_factor (5)
		self.set_damage (5)
		self._name = "Bullet"
 def __init__(self):
     Base.__init__(self)
     self.visual = VisualObject(os.path.join("data", "banana.png"))
Example #48
0
	def update (self) :
		Projectile.update (self)
Example #49
0
	def __init__ (self, pos = (0,0), **images) :
		Projectile.__init__ (self, pos, **images)
		self._spread = .10
		self._name = "Shotgun Shell"
Example #50
0
	def __init__(self, position, vecteur):
		Projectile.__init__(self, position, vecteur)
		self.posx, self.posy = (float(position[0]), float(position[1]))
Example #51
0
def main():
	# Draw the window to simulate green field and sky.
	
	win = GraphWin("Shoot a Cannon!", 850,850)
	win.setCoords(0,-50,700,700)
	win.setBackground("lightblue")
	ground = Rectangle(Point(0,-100),Point(700,0))
	ground.setFill("green")
	cloud1 = Oval(Point(153,420),Point(390,580))
	cloud1.setFill("white")
	cloud1.setWidth(2)
	cloud2 = Oval(Point(23,232),Point(230,400))
	cloud2.setFill("white")
	cloud2.setWidth(2)
	cloud3 = Oval(Point(434,370),Point(610,520))
	cloud3.setFill("white")
	cloud3.setWidth(2)
	tangle = Text(Point(30,680), "     Angle: ")
	tvel = Text(Point(30,650), "Velocity:")
	anginp = Entry(Point(70,680),3)
	velinp = Entry(Point(70,650),3)
	fbutton = CButton(win,Point(55,590),30,"FIRE!")
	fbutton.activate()
	quitbutton = CButton(win,Point(630,660),30,"Quit")
	quitbutton.activate()
	ground.draw(win)
	cloud1.draw(win)
	cloud2.draw(win)
	cloud3.draw(win)
	tangle.draw(win)
	tvel.draw(win)
	anginp.draw(win)
	anginp.setText("0")
	velinp.setText("0")
	velinp.draw(win)
	target = Target(win)
	
	
	
	
	
	pt = win.getMouse()
	shots = 0
	while not quitbutton.clicked(pt):
		try:
			if fbutton.clicked(pt):
			
				ang = float(anginp.getText())
				vel = float(velinp.getText())
				
				shot = Projectile(ang,vel,0)
				ball = Tracker(win,shot)
				
				
				
					
				
				while shot.getY() >= 0 and target.Hit(shot) == False and shot.getX() < 750:
					sleep(.025)
					shot.update(.1)
					ball.update(win,shot)
					target.Hit(shot)
					
					
					if target.Hit(shot) == True:
						shots += 1
						wintxt = Text(Point(325,500), "You Hit the Target in %d shot(s)!" % shots)
						wintxt.setSize(36)
						wintxt.setTextColor("red")
						wintxt.draw(win)
						exit
					
				shots += 1
		except ValueError:
			exit
			
			
		
		pt = win.getMouse()
Example #52
0
 def take_damage(self, damage=0):
     Projectile.take_damage(self, damage)
 def __init__(self, pos, target, image, speed, damage):
     Projectile.__init__(self, pos, target, image, speed, damage)
     self.radius = 50
Example #54
0
	def update (self) :
		if self._has_been_launched :
			Projectile.update (self)
		else :
			Weapon.update (self)
Example #55
0
def main():
    angle, vel, h0, time = getInputs()
    cball = Projectile(angle, vel, h0)
    while cball.getY() >= 0:
        cball.update(time)        
    print("\nDistance traveled: {0:0.1f} meters.".format(cball.getX()))
Example #56
0
	def launch (self, velocity) :
		Projectile.launch (self, velocity)
		self._has_been_launched = True
Example #57
0
class World(object):
    def __init__(self, main):

        self.main = main
        self.scr = self.main.scr
        self.size = self.main.size

        self.wsx = self.wsy = 0
        self.vwsx = self.vwsy = 0

        self.projectile = Projectile(self)
        self.player = Player(self)
        self.enemyC = Enemy(self)
        self.effectC = Effect(self)

        self.entitylist = []
        self.bg = p.Color("black")

        self.s1 = Slider(
            {
                "window": self.scr,
                "pos": [500, 500, 50, 30],
                "color": (0, 255, 200),
                "color2": (255, 0, 55),
                "colorindex": 100,
                "steps": {"startpoint": 1, "endpoint": 10},
                "font": {"size": 15, "clicksize": 20},
            }
        )

    def restart(self):

        self.__init__(self.main)

    def shiftworld(self):

        self.s1.pos[0] -= self.vwsx / 3.0
        self.s1.pos[1] -= self.vwsy / 3.0

    def update(self):

        self.scr.fill(self.bg)

        self.vwsx = self.player.vx
        self.vwsy = self.player.vy

        self.wsx += self.vwsx
        self.wsy += self.vwsy

        self.entitylist = [self.player] + [e for e in self.enemyC.opponentlist]

        if self.main.holdingSpace:
            self.player.shoot(
                {
                    "dad": self.player,
                    "color": (0, 250, 100),
                    "colorindex": (0, 100, 50),
                    "angle": self.player.rotation,
                    "radius": 2,
                    "speed": 16,
                    "damage": 1.5,
                    "lifetime": 90,
                    "pos": self.player.pos,
                }
            )

        self.player.update()
        self.enemyC.update()
        self.effectC.update()
        self.projectile.udpate()

        self.shiftworld()

        Stars.update(self)

        self.s1.update()

    def draw(self):

        Stars.draw()

        self.s1.draw()

        self.effectC.draw()
        self.projectile.draw()
        self.enemyC.draw()
        self.player.draw()

        Messages.message(self.scr, str(self.wsx) + " " + str(self.wsy), (10, 40), p.Color("magenta"))
        Messages.message(self.scr, len(self.projectile.projectiles), (10, 70), p.Color("magenta"))
        Messages.message(self.scr, self.enemyC.totaldied, (10, 100), p.Color("green"))
Example #58
0
 def _on_keyboard_down(self, keyboard, keycode, text, modifiers):
   if keycode[1] == 'escape':
     self.root_widget.close_app()
   if keycode[1] == 'left':
     self.ship.steer_x(-20)
   elif keycode[1] == 'right':
     self.ship.steer_x(20)
   elif keycode[1] == 'up':
     self.ship.steer_y(20)
   elif keycode[1] == 'down':
     self.ship.steer_y(-20)
   elif keycode[1] == 'f' and not self.ship.is_shielded and self.ship.cooldown == 0:
     self.ship.cooldown = 25
     missile = Projectile('missile', 0, 10, 'human')
     missile.score_bonus = 5
     missile.size = 75, 75
     missile.x = self.ship.get_center_x() - missile.width / 2
     missile.y = self.ship.y + self.ship.height
     self.add_widget(missile)
   elif keycode[1] == 's' and not self.ship.is_shielded and self.ship.cooldown == 0:
     # if self.sfx_laser.state == 'play':
       # self.sfx_laser.stop()
     self.ship.cooldown = 5   
     self.sfx_laser.play()
     laser1 = Projectile('laser', 0, 20, 'human')
     laser1.x = self.ship.x + self.ship.width * .35
     laser1.y = self.ship.y + self.ship.height / 10
     self.add_widget(laser1)
     laser2 = Projectile('laser', 0, 20, 'human')
     laser2.x = self.ship.x - self.ship.width * .35
     laser2.y = self.ship.y + self.ship.height / 10
     self.add_widget(laser2)
   elif keycode[1] == 'd':
     self.ship.toggle_shield()
   # elif keycode[1] == 'q':
     # self.ship.shield('green')
   return True
Example #59
0
def DoSkillSpell(mob,skillname):
    from projectile import Projectile
    from spell import SpawnSpell
    
    player = mob.player
    
    mobSkill = mob.mobSkillProfiles[skillname]
    classSkill = mobSkill.classSkill
    
    # Assert that mob knows the skill.
    skillLevel = mob.skillLevels.get(skillname,0)
    if not skillLevel:
        return False
    
    # Modify skill spells strength by skill level.
    mod = float(skillLevel) / float(classSkill.maxValue)
    
    # Clamp mod to produce at least 10% of maximum effect.
    if mod < .1:
        mod = .1
    
    proto = classSkill.spellProto
    
    # Get the appropriate target for this skill spell.
    tgt = mob.target
    if proto.target == RPG_TARGET_SELF:
        tgt = mob
    elif proto.target == RPG_TARGET_PARTY:
        tgt = mob
    elif proto.target == RPG_TARGET_ALLIANCE:
        tgt = mob
    elif proto.target == RPG_TARGET_PET:
        tgt = mob.pet
    elif player and proto.spellType&RPG_SPELL_HEALING and proto.target == RPG_TARGET_OTHER:
        tgt = GetPlayerHealingTarget(mob,tgt,proto)
    
    # If no valid target could be found, return in failure.
    # Here's one last chance to still acquire one.
    if not tgt:
        if player:
            if proto.spellType&RPG_SPELL_HARMFUL:
                from command import CmdTargetNearest
                CmdTargetNearest(mob,None,False,True)
                tgt = mob.target
                if not tgt:
                    player.sendGameText(RPG_MSG_GAME_DENIED,"$src's <a:Skill%s>%s</a> skill failed, no target.\\n"%(GetTWikiName(skillname),skillname),mob)
            else:
                tgt = mob
    # Still no target, now definitely abort skill.
    # If the mob is a player mob, message has already be sent.
    if not tgt:
        return False
    
    # For harmful skill spells, check if target may
    #  be harmed at all. Abort if not.
    if proto.spellType&RPG_SPELL_HARMFUL:
        if not AllowHarmful(mob,tgt) and not proto.aoeRange:
            if player:
                player.sendGameText(RPG_MSG_GAME_DENIED,"$src's <a:Skill%s>%s</a> skill failed, no valid target.\\n"%(GetTWikiName(skillname),skillname),mob)
            return False
        if not player and not (mob.master and mob.master.player) and not IsKOS(mob,tgt):
            return False
    
    # If the skill spell isn't harmful and the target is hostile,
    #  retarget self.
    if not proto.spellType&RPG_SPELL_HARMFUL and mob.target == tgt:
        if tgt and IsKOS(tgt,mob):
            tgt = mob
    
    # Check for a skill raise.
    if mob.character:
        c = 10
        if mobSkill.reuseTime > 180:
            c = 5
        if mobSkill.reuseTime > 180*2:
            c = 3
        mob.character.checkSkillRaise(skillname,c)
    
    # Play animation and trigger particles if available.
    if proto.animOverride:
        mob.zone.simAvatar.mind.callRemote("playAnimation",mob.simObject.id,proto.animOverride)
    if len(proto.particleNodes):
        mob.zone.simAvatar.mind.callRemote("triggerParticleNodes",mob.simObject.id,proto.particleNodes)
    
    # Launch a projectile if necessary, otherwise spawn skill spell.
    if proto.projectile:
        p = Projectile(mob,mob.target)
        p.spellProto = proto
        p.launch()
    else:
        SpawnSpell(proto,mob,tgt,tgt.simObject.position,mod,skillname)
    
    # Return True, so skill was used.
    return True