I am attempting to switch the background only if a certain number of collisions is detected. The collisions are between 7 balloons and a gun. Note that the collision works perfectly fine. Currently, 7 balloons are showed up and each time I hit a balloon it switches. I want to hit 1 balloon out of 7 on the first background, then it changes to the second background where you hit 1 balloon again out of the 7. When you hit a balloon on the second background, it changes back to the first. Then you hit 2 balloons on the first background, then it changes to the second background where you hit 2 balloons again, and so on. How would I do that? So the number of hits should be like 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7; where the first number in each pair is the number of hits in the first background and the second is the new background. Here's my code: import pygame as pg import random as r import sys pg.init() bg = pg.image.load('bg.jpg')# Background Image # bg = pg.transform.scale(bg, (688,387)) new_bg = pg.image.load('new_bg.jpg') new_bg = pg.transform.scale(new_bg, (688,387)) radius = 30 diameter = 2 * radius num_balloons = 7 bullets_colors_ls = [] iterator = -1 num_balloon_list = [1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7] balloon_list_index = 0 def create_balloons(): global balloon_list global colors for i in range(num_balloons): while True: candidate = r.randint(0, 500) if all(abs(candidate-x) >= diameter for x in balloon_list): break balloon_list.append(candidate) def draw_balloons(y): for i in range(num_balloons): screen.blit(colors, (balloon_list , y-50)) def check_collisions(x, y): global hit_var global hit global score global scoretext global bg_bool global num_balloon_list, balloon_list_index for i in range(num_balloons): gun_rect = gun.get_rect(topleft = (x,y)) gun_mask = pg.mask.from_surface(gun) balloon_rect = colors.get_rect(topleft = (balloon_list, y-100)) balloon_mask = pg.mask.from_surface(colors) offset = (balloon_rect.x - gun_rect.x), (balloon_rect.y - gun_rect.y) if gun_mask.overlap(balloon_mask, offset): hit = True for balloon_list_index in num_balloon_list: balloon_list_index += 1 bg_bool = not bg_bool hit_var = i score += 2 scoretext = myfont.render("SCORE: "+str(score), 1, (0,0,0)) print(f'hit balloon: {i}') break # Vars # x = 0 y = 250 velocity = 5 score = 0 hit = False bg_bool = False testvar1 = True clock = pg.time.Clock() screen = pg.display.set_mode((688 ,387)) # Size of the screen # caption = pg.display.set_caption("Remember") # Title of the window # balloon_list = [] b1 = pg.image.load('balloons/1.png').convert_alpha() b1 = pg.transform.scale(b1, (63,131)) b2 = pg.image.load('balloons/2.png').convert_alpha() b2 = pg.transform.scale(b2, (63,131)) b3 = pg.image.load('balloons/3.png').convert_alpha() b3 = pg.transform.scale(b3, (63,131)) b4 = pg.image.load('balloons/4.png').convert_alpha() b4 = pg.transform.scale(b4, (63,131)) b5 = pg.image.load('balloons/5.png').convert_alpha() b5 = pg.transform.scale(b5, (63,131)) b6 = pg.image.load('balloons/6.png').convert_alpha() b6 = pg.transform.scale( b6, (63,131)) b7 = pg.image.load('balloons/7.png').convert_alpha() b7 = pg.transform.scale(b7, (63,131)) colors = [b1, b2, b3, b4, b5, b6, b7] gun = pg.image.load('game-gun.png').convert_alpha() gun = pg.transform.scale(gun, (150,150)) create_balloons() pg.display.flip() # Updating # running = True # Game loop bool # while running: # Game loop # clock.tick(60) if bg_bool == False: screen.blit(bg, (0, 0)) elif bg_bool == True: screen.blit(new_bg, (0,0)) screen.blit(scoretext, (5, 10)) if hit == True: r.shuffle(balloon_list) hit = False for event in pg.event.get(): if event.type == pg.QUIT: pg.quit() sys.exit() if event.type == pg.KEYDOWN: if event.key == pg.K_ESCAPE: running = False if event.key == pg.K_SPACE: check_collisions(x, y) draw_balloons(y) keys = pg.key.get_pressed() x += keys[pg.K_RIGHT] - keys[pg.K_LEFT] * velocity x -= keys[pg.K_LEFT] - keys[pg.K_RIGHT] * velocity screen.blit(gun, (x, y)) pg.display.update() What changes the background is the bg_bool = not bg_bool and I am iterating through a list of the amount of hits -> num_balloon_list = [1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7] You can download all of the images here: Download images on REPL How can change the background after a certain amount of collisions (hits on the balloons)? P.S: I have asked a question that is a similar concept with a great answer, but I failed to implement it into this scenario. Continue reading...