import pygame import numpy as np import matplotlib.pyplot as plt from particle import Particle pygame.init() SCREEN_WIDTH = 800 SCREEN_HEIGHT = 600 screen = pygame.display.set_mode((SCREEN_WIDTH, SCREEN_HEIGHT)) sensor1 = pygame.Rect(200, 200, 50, 200) silica = Particle(speed = 1, size = 20, perm = 4) time = .1 time_data = [] volume_data = [] plt.ion() fig, ax = plt.subplots() line, = ax.plot([], [], 'r-') ax.set_xlim(0, 1) ax.set_ylim(0, 30000) ax.set_xlabel('Time (s)') ax.set_ylabel('Volume') ax.set_title('Volume/time') run = True while run: distance = silica.move(time) if distance > SCREEN_WIDTH + (silica.size * 2): time =.1 time_data = [] volume_data = [] screen.fill((0,0,0)) pygame.draw.rect(screen, (255,0,0), sensor1) pygame.draw.circle(screen, (255, 255, 255), (distance - silica.size, 300), silica.size) for event in pygame.event.get(): if event.type == pygame.QUIT: run = False if silica.size >= abs(200 - (distance - silica.size)): pygame.draw.circle(screen, (0,255,0),(100, 100), 50) volume = silica.partialVol(abs(200 - (distance - silica.size))) elif silica.size >= abs(250 - (distance - silica.size)): pygame.draw.circle(screen, (0,255,0),(100, 100), 50) volume = silica.volume - silica.partialVol(abs(250 - (distance - silica.size))) elif ((distance - silica.size) >= 200 and (distance - silica.size) <= 250): pygame.draw.circle(screen, (0,255,0),(100, 100), 50) volume = silica.volume else: volume = 0 time_data.append(time) volume_data.append(volume) line.set_xdata(time_data) line.set_ydata(volume_data) ax.relim() ax.autoscale_view() plt.draw() plt.pause(0.01) pygame.display.update() time = time + 1 print(volume_data) pygame.quit()