示例#1
0
def domet_o_trenju():
    Domet = []
    domet = []
    Koef_tr = []
    masa = []
    p1 = prj.Projectile()
    p2 = prj.Projectile()
    C_d = 1
    m_0 = 1
    for i in range(1, 500):  #za tisuću različitih objekata
        C_d += 0.01  #svaki sljedeći CD će biti za 0.01 veći od prethodnog
        m_0 += 0.1  #svaka sljedeća masa bit će za 0.1 kg veća od prethodne
        Koef_tr.append(C_d)
        masa.append(m_0)
    for Cd in Koef_tr:
        p1.init(50, 0, 0, 45, 1.22, Cd, 1, 0.001, 0.01)
        D = p1.range()
        Domet.append(D)
        p1.reset()
    for m in masa:
        p2.init(50, 0, 0, 45, 1.22, 1, m, 0.001, 0.01)
        d = p2.range()
        domet.append(d)
        p2.reset()
    plt.plot(Koef_tr, Domet)
    plt.title("Promjena dometa u odnosu na koeficijent trenja zraka")
    plt.xlabel("Koeficijent trenja zraka")
    plt.ylabel("Domet u metrima [m]")
    plt.show()
    plt.plot(masa, domet)
    plt.title("Promjena dometa u odnosu na masu ispaljenog objekta")
    plt.xlabel("Masa u kilogramima [kg]")
    plt.ylabel("Domet u metrima [m]")
    plt.show()
示例#2
0
def main():
    angle,vel,h0,time = getInputs()
    shot = Projectile(angle,vel,h0)
    while shot.getY() >=0:
        shot.update(time)
        #print("haha")
    print("\nDistance traveled:%.1fmeters."%shot.getX())
示例#3
0
def main():
    angle,vel,h0,time=getInputs()
    shot=Projectile(angle,vel,h0)
    while shot.gety()>=0:
        shot.update(time)

    print("\nDistance traveled:{0:0.1f}meters".format(shot.getx()))
示例#4
0
 def attackPlayer(self):
     if self.owner.arrows > 0:
         self.arrows.append(
             Projectile.Projectile(self.owner.x, self.owner.y,
                                   self.playerPosX, self.playerPosY,
                                   self.damage))
         self.owner.arrows -= 1
示例#5
0
  def createProjectile(self, o, projectile_type): 
    if (DEBUG == 1):
      print("[ProjectileFactory]:create")

    # Projectile requires position tuple, not Position object
    p=Projectile((o.getX(),o.getY()), projectile_type, o)
    self.active_p.append(p)
示例#6
0
 def shoot(self):
     alienpos = self.Wave2pixel(random.choice(self.bottomaliens()))
     x , y = alienpos
     y += self.sqheight
     x += self.sqwidth/2
     self.AlienProjectile = Projectile(x, y, 0, 10, 'enemylaser.png' )
     return self.AlienProjectile
示例#7
0
 def shootDaddy(self):
     if self.numProj > 0:
         if pygame.mixer.music.get_volume():
             pygame.mixer.Sound.play(self.whoosh)
         self.projectile = Projectile(self.daddy.direction, self.daddy.rect)
         self.projectileGroup.add(self.projectile)
         self.projectileGroup.draw(self.image)
         self.numProj -= 1
示例#8
0
 def projectileAttack(self, Game, Target):
     """Spawn Projectile that follows player"""
     self.xvel = 0
     self.yvel = 0
     self.projectiles.append(
         Projectile(self.x, self.y, self.projWidth, 10, Game, Target))
     if (Target.hp <= 0):
         self.target = None
示例#9
0
 def __init__(self,
              picture='models/player.png.png',
              health=3,
              lvl=1,
              ammo=10):
     self.__health_points = health
     self.__attack_level = lvl
     self.image = pygame.image.load(picture).convert()
     self.__inventory = [ammo, Projectile.Projectile()]
示例#10
0
def benchmark():
    # Run simulation at this level
    t = 0.0
    prj = proj.Projectile(0, "Satellite" + str(0))
    a, e, i, omega_AP, omega_LAN, T = createObject(0)
    prj.kep_init(a, e, i, omega_AP, omega_LAN, T)
    running = True
    for loop in range(0, 100000):
        r_true, v_true, h_true = prj.propagate(t)
        t = t + 1
    print "time:", t
示例#11
0
    def CastSpell(self, projectile_list):
        spell_cast = Projectile.Projectile(self.spell_1, 0, 0)
        spell_cast.rect.y = self.rect.centery - spell_cast.rect.height / 2
        if self.FacingLeft():
            spell_cast.UpdateDirection("left")
            spell_cast.rect.x = self.rect.left
        elif self.FacingRight():
            spell_cast.UpdateDirection("right")
            spell_cast.rect.x = self.rect.right

        projectile_list.append(spell_cast)
        self.current_mana -= 1
示例#12
0
	def __init__(self, time_step, window_x, window_y, walls , elas, color, m_win):
		self.time_step = time_step
		self.x_vel = 0.0
		self.y_vel = 0.0
		self.window_x = window_x
		self.window_y = window_y
		# create projectile object
		self.ball = Projectile(2, elas, color, m_win)
		self.walls = walls
		self.x_bnc = False
		self.y_bnc = False
		self.m_win = m_win
示例#13
0
    def keyDown(self, key):
        if key == pygame.K_RIGHT:
            self.Player.dx = 2
        elif key == pygame.K_LEFT:
            self.Player.dx = -2
        elif key == pygame.K_SPACE:
            if self.shooting == False:
                self.PlayerProjectile = Projectile(self.Player.imgmid,
                                                   self.Player.y, 0, -10,
                                                   'laser.png')
                self.shooting = True

        else:
            pass
示例#14
0
    def shootBullet(self, pos, world):
        mouse_pos = Point.Point(pos[0], pos[1])
        player_pos = self.center()

        # normalized vector between two points
        direction = mouse_pos.normalized_vector(mouse_pos, player_pos)
        speed = 10
        size = 5
        damage = 10

        bullet = Projectile.Projectile(player_pos, direction, speed, size,
                                       damage)
        world.spawn_projectile(bullet)
        return bullet
    def bulletSpread(self, n, bulletSpeed):
        if self.bulletCooldown:
            self.bulletCooldown -= 1
            return

        for i in xrange(n):
            angle = ((360 * i / n) + self.bulletOffset) % 360
            """
            xVelocity = bulletSpeed*math.cos(math.radians(angle))
            yVelocity = -bulletSpeed*math.sin(math.radians(angle))"""
            self.world.npcProjectileEntities.append(
                Projectile(self.world, self.xPosition, self.yPosition, angle,
                           self.xVelocity, self.yVelocity))
        self.bulletOffset += 15
        self.bulletOffset = self.bulletOffset % 360
示例#16
0
    def attack(self):
        if self.shoot_loop >= 81:
            self.shoot_loop = 0

        if self.shoot_loop == 0 and not self.dead:
            bul = Projectile.Projectile(round(self.x + self.width // 2 - 15),
                                        round(self.y + self.height // 2 - 85),
                                        4, (3, 53, 252), -30, 5, 32)
            bul.spell_image = self.spell_image
            bul.magic_count_speed = 32
            self.bullets.append(bul)
            self.shoot_loop += 1

        else:
            self.shoot_loop += 1
示例#17
0
def graf_domet_masa():
    m_ = []
    domt_ = []
    p1 = pr.Projectile(0, 0, 0, 0, 0, 0, 0, 0, 0)

    for m in np.arange(0.1, 10, 0.01):
        p1.__init__(60, 15, 0.01, 0, 0, m, 1.29, 1, 1)
        d = p1.Range()
        domt_.append(d)
        m_.append(m)

    plt.plot(m_, domt_, 'r')
    plt.xlabel("masa")
    plt.ylabel("domet")
    plt.title("Ovisnost dometa o masi cestice")
    plt.pause(2)
    plt.close
示例#18
0
def graf_domet_koeficijent_trenja():
    kft_ = []
    domet_ = []
    p1 = pr.Projectile(0, 0, 0, 0, 0, 0, 0, 0, 0)

    for kft in np.arange(0.1, 3.0, 0.01):
        p1.__init__(60, 15, 0.01, 0, 0, 1, 1.29, kft, 1)
        d = p1.Range()
        domet_.append(d)
        kft_.append(kft)
        p1.reset()

    plt.plot(kft_, domet_, 'b')
    plt.xlabel("koeficijent trenja")
    plt.ylabel("domet")
    plt.title("Ovisnost dometa o koeficijentu trenja")
    plt.pause(1)
    plt.close
示例#19
0
    def ranged_attack(self, target_position, explosive_image = None):

        if self.current_healing_cooldown <= 0:
            
            projectile = Projectile(self, self.world, self.projectile_image, explosive_image)

            if explosive_image:
                distance = (self.position - target_position).length()
                projectile.max_range = min(distance, self.projectile_range)
            else:
                projectile.max_range = self.projectile_range
            
            projectile.maxSpeed = self.projectile_speed
            projectile.damage = self.ranged_damage
            projectile.team_id = self.team_id
            projectile.position = Vector2(self.position)
            projectile.origin_position = Vector2(self.position)
            projectile.velocity = target_position - projectile.position
            projectile.velocity.normalize_ip()
            projectile.velocity *= projectile.maxSpeed
            
            self.world.add_entity(projectile)
            self.current_ranged_cooldown = self.ranged_cooldown
    def onKeyDown(self, pressed):
        if pressed == Settings.key_forwards:
            self.activeSprite=1
            self.engineSound.play(1)
            self.engineFwOn = True

        if pressed == Settings.key_backwards:
            self.engineBwOn= True

        if pressed == Settings.key_left :
            self.engineLfOn = True

        if pressed == Settings.key_right:
            self.engineRtOn = True

        if pressed == pygame.K_SPACE:
            direction = self.rotation
            projectile = Projectile(self.world, self.xPosition, self.yPosition, direction,self.xVelocity,self.yVelocity,20)

            self.world.playerProjectileEntities.append(projectile)


            self.bulletSound.play(0)
示例#21
0
def ovisnost_dometa_o_masi():
    D_lista = []
    D_rk_lista = []
    m_lista = list(np.linspace(0.01, 10, num=500))

    p = ptl.Projectile()

    for m in m_lista:
        p.init(m, 10, 60, 0, 0, 1.2, 1, 0.5,
               0.01)  #(m,v0,theta,x0,y0,ro,cd,A,dt)
        D = p.range()
        D_lista.append(D)
        D_rk = p.range_r_k()
        D_rk_lista.append(D_rk)
        p.reset()

    plt.figure("Graf 1")
    plt.plot(m_lista, D_lista, linewidth=3, label="Euler")
    plt.plot(m_lista, D_rk_lista, c="red", label="Runge-Kutta")
    plt.xlabel("Masa [kg]")
    plt.ylabel("Domet [m]")
    plt.title("Ovisnost dometa o masi")
    plt.legend()
    plt.show()
示例#22
0
def ovisnost_dometa_o_koeficijentu_trenja_Cd():
    D_lista = []
    D_rk_lista = []
    Cd_lista = list(np.linspace(0, 5, num=50))

    p = ptl.Projectile()

    for cd in Cd_lista:
        p.init(10, 10, 60, 0, 0, 1.2, cd, 0.5,
               0.01)  #(m,v0,theta,x0,y0,ro,cd,A,dt)
        D = p.range()
        D_lista.append(D)
        D_rk = p.range_r_k()
        D_rk_lista.append(D_rk)
        p.reset()

    plt.figure("Graf 1")
    plt.plot(Cd_lista, D_lista, linewidth=3, label="Euler")
    plt.plot(Cd_lista, D_rk_lista, c="red", label="Runge-Kutta")
    plt.xlabel("Koeficijent trenja Cd")
    plt.ylabel("Domet [m]")
    plt.title("Ovisnost dometa o koeficijentu trenja Cd")
    plt.legend()
    plt.show()
示例#23
0
import Projectile as pr
import matplotlib.pyplot as plt

p1 = pr.Projectile()
p1.init(10, 45, 0.1, 0.1, 0.05, 0.01)
xd, yd = p1.evolve()

p2 = pr.Projectile()
p2.init(10, 45, 0.1, 0.1, 0.05, 0.01)
x, y = p2.evolve_RK()

fig = plt.figure(figsize=(20, 10))
# x-y graf
plt.plot(xd, yd, label="dt=0.01, Euler")
plt.plot(x, y, label="dt=0.01, Runge-Kutta", c='red')
plt.xlabel('x [m]')
plt.ylabel('y [m]')
plt.title('x-y graf')
plt.legend(loc="upper right")
plt.savefig("kosi_hitac.pdf")
plt.show()
def main():
    angle,vel,h0,time = getInputs()
    shot = Projectile(angle,vel,h0)#这是类的实例化,会自动调用--init--方法里的属性
    while shot.getY() >=0:
        shot.update(time)#调用类的方法
    print("\nDistance traveled:{0:0.1f}meters.".format(shot.getX()))
示例#25
0
import Projectile as prj
import matplotlib.pyplot as plt
import math

p1 = prj.Projectile()
p1.init(30, 0, 0, 45, 1.22, 1, 1, 0.001, 0.01)
x1, y1 = p1.range()
plt.plot(x1, y1)
plt.xlabel("x [m]")
plt.ylabel("y [m]")
plt.title("Putanja kosog hica [Euler]")
plt.show()
p2 = prj.Projectile()
p2.init(30, 0, 0, 45, 1.22, 1, 1, 0.001, 0.01)
x2, y2 = p2.rangeRungeKutta()
plt.plot(x2, y2, c="r")
plt.xlabel("x [m]")
plt.ylabel("y [m]")
plt.title("Putanja kosog hica [Runge-Kutta]")
plt.show()
p3 = prj.Projectile()
p3.init(30, 0, 0, 45, 1.22, 1, 1, 0.001, 0.01)
x3, y3 = p3.range()
p4 = prj.Projectile()
p4.init(30, 0, 0, 45, 1.22, 1, 1, 0.001, 0.01)
x4, y4 = p4.rangeRungeKutta()
plt.plot(x3, y3, c="r")
plt.plot(x4, y4, c="b")
plt.xlabel("x [m]")
plt.ylabel("y [m]")
plt.title("Usporedba putanje kosog hica\n Eulera i Runge-Kutta")
示例#26
0
        # Re-initialize
        hasFired = False

        # Handle Events
        for event in pygame.event.get():
            if event.type == QUIT:
                pygame.quit()
                sys.exit()
            elif event.type == pygame.KEYDOWN:
                if event.key == pygame.K_a:
                    hasFired = True

        # Update logic
        player.update()
        if hasFired:
            projectileList.append(Projectile(player.x, 400))

        for i in invaderList:
            i.update()

        for p in projectileList:
            p.update()

            if p.isDead:
                projectileList.remove(p)

        for p in projectileList:
            for i in invaderList:
                if i.rect.collidepoint(p.x, p.y):
                    invaderList.remove(i)
                    projectileList.remove(p)
示例#27
0
文件: main.py 项目: Mibby123/Island
    if keys[pygame.K_d] and playerX < windowWidth - playerSpeed - playerRadius:
        playerX += playerSpeed
        player_vx += playerSpeed

    if shooting:
        print("shooting")
        #pygame.draw.circle(window, (255, 255, 255), (xMouse, yMouse), 12)
        dx = xMouse - playerX
        dy = yMouse - playerY
        v = 5
        magnitude = math.sqrt(dx * dx + dy * dy)
        # massFactor dictates how much of the players velocity is transferred to the bullet
        massFactor = 1.0 / 3
        # player momentum is carried along to the bullet
        shot = Projectile.Projectile(
            playerX, playerY, 4, v * dx / magnitude + player_vx * massFactor,
            v * dy / magnitude + player_vy * massFactor, 300)
        playerShots.append(shot)

    window.fill((0, 0, 0))
    pygame.draw.circle(window, (255, 255, 255), (playerX, playerY),
                       playerRadius)
    for i in range(len(playerShots)):
        drawprojectile(playerShots[i])
        playerShots[i].updatePosition()
        #if playerShots[i].getDistanceTravelled() > playerShots[i].getRange():
        #    playerShots.pop(i)
    pygame.display.update()

pygame.quit()
print(playerShots)
示例#28
0
import Projectile as pro
import matplotlib.pyplot as plt
import math as m

p1 = pro.Projectile()


# 1. zadatak (putanje sfere i kocke)


p1.init(60, 10, 0.5, 10, 0, 0, 0)
s1, s2 = p1.sphere_cube(0, 3, 5.3)
plt.plot(s1, s2, label = "sphere")
p1.reset()

p1.init(60, 10, 0.5, 10, 0, 0, 0)
c1, c2 = p1.sphere_cube(1, 3, 5.3)
plt.plot(c1, c2, label = "cube")
plt.legend()
plt.xlabel("x [m]")
plt.ylabel("y [m]")
plt.title("x-y graph")
plt.show()
p1.reset()


# 2. zadatak (kut otklona) 


def angle_to_hit_target(p, q, r, v0, S, mass):
    alpha = 0.0
示例#29
0
#Create character and its animations
#crop spritesheet
spriteList = Animate.spritesheetCrop(playerSprite, playerScale, playerScale)
screen.fill((255, 255, 255))

#Put all movement frames into a list
walkList = []
for i in range(5):
    walkList.append(spriteList[1][i])
#Put all idle momevemt frames into a list
idleList = []
for i in range(2):
    idleList.append(spriteList[0][i])

#Create new projectiles
testBullet = Projectile(bullet, 500, 2000, None, None)

# Create new test weapons
HEMG_weapon = Weapon(gun, testBullet, 95, 7, None, 75, None, 60, 2000)
nav_weapon = MeleeWeapon(bat, 0, 0, None, None, None, None, None, None)

#Create Map
map1 = MapGen(16, 3.2)
MapGen.mrGenny(map1)
map1.mrClassy()
pprint(map1.level)

#Set up camera
cspeed = 400

#Make camera start in middle of start room
示例#30
0
import Projectile as prj
import matplotlib.pyplot as plt
p1 = prj.Projectile()
p1.init(50, 0, 0, 45)
print("Uz v0 = {} i kut = {}, domet kosog hica jest {} metara.".format(50, 45, round(p1.range(),3)))
p1.range()
p1.plot()
p1.reset()