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()
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())
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()))
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
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)
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
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
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
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()]
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
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
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
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
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
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
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
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
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)
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()
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()
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()))
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")
# 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)
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)
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
#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
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()