def draw(self): if self.kind == "dot": pixel_points = CoorsAndPixels.coor_to_pixel(self.pos, scale, size) radius = int((self.charge)**(1.0/3.0)*scale) gfxdraw.filled_circle(screen, pixel_points[0], pixel_points[1], radius, self.color) if radius > 1: gfxdraw.aacircle(screen, pixel_points[0], pixel_points[1], radius, self.color) elif self.kind == "line": #pygame.draw.aaline(screen, self.color, CoorsAndPixels.coor_to_pixel(self.pos, scale, size, True), CoorsAndPixels.coor_to_pixel([self.pos[0]+self.length*self.cos_a, self.pos[1]+self.length*self.sin_a], scale, size, True)) pygame.draw.line(screen, self.color, CoorsAndPixels.coor_to_pixel(self.pos, scale, size, True), CoorsAndPixels.coor_to_pixel([self.pos[0]+self.length*self.cos_a, self.pos[1]+self.length*self.sin_a], scale, size, True), int(self.charge**(1.0/3.0)/5.0)+1)
def display_info(): #shows level name and comments (if there are any) label = font.render("Level " + str(level+1) + ": " + level_name, 1, (0, 0, 0)) screen.blit(label, [10, 10]) #label = font.render("Sim. speed: " + str(simulation_speed), 1, (0, 0, 0)) #screen.blit(label, [10, 10+label.get_rect()[3]]) for x in comments: label = font.render(x[0], 1, (0, 0, 0)) screen.blit(label, CoorsAndPixels.coor_to_pixel([x[1][0], x[1][1]], scale, size))
def simulate(l_secs = 0.0, steps = 0, vel = [0.0, 0.0], pos=[0.0, 0.0]): local_pos = [pos[0], pos[1]] local_vel = [vel[0], vel[1]] for x in range(steps): for i in range(object_count): local_vel = objects[i].act_upon(l_secs, local_vel, local_pos) if local_vel == False: break prev_dots = [local_pos[0], local_pos[1]] local_pos[0] += local_vel[0]*l_secs local_pos[1] += local_vel[1]*l_secs green = int(255.0/steps*x) blue = int(255.0/steps*x) pygame.draw.aaline(screen, (255, green, blue), CoorsAndPixels.coor_to_pixel(prev_dots, scale, size, True), CoorsAndPixels.coor_to_pixel(local_pos, scale, size, True)) total_velocity = math.sqrt(local_vel[0]**2 + local_vel[1]**2) try: l_secs = min(1.0/60.0, 1.0/total_velocity) except: l_secs = 1.0/400.0
level_thumbnails.append(pygame.image.load(str(x) + ".png").convert_alpha()) except: #if unlocked and the thumbnail is not found level_thumbnails.append(pygame.image.load("question.png").convert_alpha()) else: #if locked level_thumbnails.append(pygame.image.load("locked.png").convert_alpha()) level_thumbnails[x] = pygame.transform.smoothscale(level_thumbnails[x], (w, w)) quit_p = False #main loop condition #main menu while in_menu: mouse_pos = pygame.mouse.get_pos() screen.fill((255, 255, 255)) if menu == 0: #main menu if CoorsAndPixels.in_box(mouse_pos, start_rect): label = font.render("Start", 1, (0, 255, 0)) pygame.draw.rect(screen, (0, 255, 0), start_rect, 1) else: label = font.render("Start", 1, (0, 0, 0)) label_rect = label.get_rect() label_rect[0] = (size[0]-label_rect[2])/2 label_rect[1] = start_rect[1]+(30-label_rect[3])/2 screen.blit(label, label_rect) if CoorsAndPixels.in_box(mouse_pos, level_rect): label = font.render("Level select", 1, (0, 255, 0)) pygame.draw.rect(screen, (0, 255, 0), level_rect, 1) else: label = font.render("Level select", 1, (0, 0, 0)) label_rect = label.get_rect()