Esempio n. 1
0
    def IntegrateEuler(self, arr):
        self.v.x +=(self.f.x/self.mass)*dt
        self.x += self.v.x*dt
        if fn.collision(self, arr):
            self.x -= self.v.x*dt
            self.v.x = -self.v.x

        self.v.y += (self.f.y/self.mass)*dt
        self.y += self.v.y*dt
        if fn.collision(self, arr):
            self.y -= self.v.y*dt
            self.v.y = -self.v.y
Esempio n. 2
0
def run_game():

    d_settings = Settings()
    screen = pygame.display.set_mode((d_settings.screen_w, d_settings.screen_h))
    screen.fill(d_settings.bg_colour)
    car = Car(d_settings, screen)
    car2 = Car2(d_settings, screen)
    line = Line(screen)
    bullets = Group()
    drones = []
    stats = Stats(d_settings, drones, bullets)
    play_button = Button(d_settings, screen, 'start')
    pygame.init()
    points = PointButton(d_settings, screen, d_settings.points)
    #making a Car
    pygame.display.set_caption('Rocket Car')
    while True:
        f.check_events(d_settings, screen, car,car2, bullets, stats, play_button)
        if not stats.active:
            pygame.mouse.set_visible(True)
            d_settings = Settings()
            screen = pygame.display.set_mode((d_settings.screen_w, d_settings.screen_h))
            screen.fill(d_settings.bg_colour)
            car = Car(d_settings, screen)
            car2 = Car2(d_settings, screen)
            line = Line(screen)
            bullets = Group()
            drones = []
            stats = Stats(d_settings, drones, bullets)
            play_button = Button(d_settings, screen, 'start')
            f.screen_update(d_settings, screen, car, car2,  line, bullets, drones, stats, play_button, points)
        if stats.active:
            f.make_drones(d_settings, drones, screen)
            if stats.two_player:
                f.collision(bullets, drones, d_settings, car2)
            if len(drones) < 1:
                f.create_drone(d_settings, screen, drones)

            f.collision(bullets, drones, d_settings, car)
            car.update()
            car2.update()
            bullets.update()
            stats.reset()
            # delete the old bullets
            f.fire_bullets(d_settings, screen,car, bullets)
            f.screen_update(d_settings, screen, car, car2,  line, bullets, drones, stats, play_button, points)
Esempio n. 3
0
 def eval(self):
     if collision(self, self.target):
         print("you win")
         self.target.ammo += self.ammo
         self.target.hp += self.hp
         self.vanish()
     self.elapsed += 50
     if self.elapsed >= self.max_time:
         self.vanish()
Esempio n. 4
0
 def stop(self):
     if not check_inbound(self.position, self.ventana):
         self.timer.stop()
         self.image.hide()
     else:
         for zombie in self.ventana.zombies:
             if collision(self, zombie):
                 zombie.die()
                 self.ventana.zombies.remove(zombie)
Esempio n. 5
0
 def set_coords(self):
     col = True
     while col:
         x = random.randint(0, 800)
         y = random.randint(0, 600)
         self.position = (x, y)
         col = False
         for zombie in self.ventana.zombies:
             if collision(self, zombie):
                 col = True
     self.image.setGeometry(self.position[0], self.position[1], self.dim, self.dim)
Esempio n. 6
0
    fontsize="x-large")
plt.subplots_adjust(top=0.92,
                    bottom=0.08,
                    left=0.10,
                    right=0.95,
                    hspace=0.25,
                    wspace=0.35)

initial_time = time.time()
i = 1

for t in range(max_iter):
    # streaming step
    f = functions.streaming(f, width, length, boundry)
    # collision step
    f, rho, u = functions.collision(f, omega)

    if t % 200 == 199:
        sys.stdout.write('iteration {}/{}\n'.format(t + 1, max_iter))
        ax = plt.subplot(2, 3, i)
        ax.set_ylabel("width")
        ax.set_xlabel("velocity in x direction")
        ax.set_yticks(np.arange(0, width + 1, 5))
        im = ax.plot(u[:, 0, 1], np.arange(width))
        ax.set_title('Velocity in x direction after {} iteration'.format(t +
                                                                         1))
        i += 1
elapsed_time = time.time() - initial_time

print("elapsed time: ", elapsed_time)
plt.savefig("M4_velocity_evolution_over_time.png")
Esempio n. 7
0
	def update(self, delta_time): #Continuesly updates values

		if(self.update == True and self.skip_update == False): # we skip a frame when seaching for shoot possibilites as this takes a long time
			
			if self.slowed:
				self.TIME_MULTIPLIER = self.old_TIME_MULTIPLIER
				self.slowed = False
			else:
				if self.satellite.time_to_shoot.value != float("inf"):
					self.TIME_MULTIPLIER = int(self.satellite.time_to_shoot.value/10)*2
					if self.TIME_MULTIPLIER < 5:
						self.TIME_MULTIPLIER = 5

			#See if we move too fast for achieving the satellites objective
			if(self.satellite.time_to_shoot < delta_time * self.TIME_MULTIPLIER * u.s):
				self.old_TIME_MULTIPLIER = self.TIME_MULTIPLIER
				self.TIME_MULTIPLIER = (self.satellite.time_to_shoot / delta_time*u.s).value
				self.slowed = True

			if(self.satellite.time_to_hit < delta_time * self.TIME_MULTIPLIER * u.s):
				self.old_TIME_MULTIPLIER = 1# Slow way down when nearing something to hit self.TIME_MULTIPLIER
				self.TIME_MULTIPLIER = (self.satellite.time_to_hit / delta_time*u.s).value
				self.satellite.time_to_hit = float("inf")*u.s
				#self.satellite.give_next_objetive()
				self.slowed = True 
			
				
			
			self.total_time += delta_time * self.TIME_MULTIPLIER #Update total time elapsed
			if self.center_option: # when satellite is center of canvas
				self.canvas_info[0] = self.satellite.model_x.value * 1000
				self.canvas_info[1] = self.satellite.model_y.value * 1000
			else: #when earth is center of canvas
				self.canvas_info[0] = SCREEN_WIDTH/2
				self.canvas_info[1] = SCREEN_HEIGHT/2

			if self.satellite.time_to_shoot <= 0: #shoots projectile
				shot = self.satellite.get_projectile()
				self.projectile_list.append(shot)
				self.sprites_list.append(shot)
				self.satellite.time_to_shoot = float("inf") * u.s
				
			self.satellite.update(delta_time*self.TIME_MULTIPLIER, self.canvas_info, self.total_time) #update satellite varibles

			for member in self.projectile_list: #update projectiles
				member.update(delta_time*self.TIME_MULTIPLIER, self.canvas_info)

			for member in self.debris_list: #Update debris
				member.update(delta_time*self.TIME_MULTIPLIER, self.canvas_info)
			for member in self.netted_debris_list: #Update nettet debris
				member.update(delta_time*self.TIME_MULTIPLIER, self.canvas_info)

				#Check if debris is within the karman line plus the radius of earth
				if np.sqrt(member.debris.model_x**2 + member.debris.model_y**2) < 6371*u.km + 100*u.km:
					member.kill()
					print("Killed netted debris")
					self.netted_debris_list.remove(member)
			self.earth.update(delta_time*self.TIME_MULTIPLIER, self.canvas_info)

			#Test for collisions:
			for idx, projectile in enumerate(self.projectile_list):
				for idy, debris in enumerate(self.debris_list):
					if functions.collision(projectile, debris):
						print("Collision detected at X:{}, Y:{}".format(projectile.center_x, projectile.center_y))

						self.netted_debris_list.append(Classes.netted_debris(projectile,debris))
						self.projectile_list.remove(projectile)
						self.debris_list.remove(debris)

						self.satellite.give_next_objetive()
		
		self.skip_update = False