So i was trying to create a more interactive version of the mastermind game in python using pygame. basically, the CPU will generate a random list of tuples (length 4), wherein each tuple represents an RGB combination (e.g. [(255,0,0), (135,6,79), (45,67,18), (12,90,235,4)] ). The program will allow the user to select 4 colors from a 3x3 grid of colors. if the choices match those generated by the CPU, the user wins.
i tried to loop through each cases differentiated by coordinates (x,y) wherein i tried to append the tuples to a guess_list. however, what i get are lists with 4 same tuples (e.g. [(255,0,0), (255,0,0), (255,0,0), (255,0,0)]). also, i would like to handle cases where the user clicked a region outside the colored square (black regions)
#main game loop
execute = True
while execute:
game_screen.fill(black) #black background
#display the rectangles. args: ((screen where the object is to be displayed), (color), (position(x,y)), (dimensions))
pygame.draw.rect(game_screen, red, ((1/7)*screen_width, (screen_height//2) - 80, 40, 40))
pygame.draw.rect(game_screen, green, ((3/7)*screen_width - 80, (screen_height//2) - 80, 40, 40))
pygame.draw.rect(game_screen, blue, ((5/7)*screen_width - 160, (screen_height//2) - 80, 40, 40))
pygame.draw.rect(game_screen, yellow, ((1/7)*screen_width, (screen_height//2), 40, 40))
pygame.draw.rect(game_screen, orange, ((3/7)*screen_width - 80, (screen_height//2), 40, 40))
pygame.draw.rect(game_screen, purple, ((5/7)*screen_width - 160, (screen_height//2), 40, 40))
pygame.draw.rect(game_screen, maroon, ((1/7)*screen_width, (screen_height//2) + 80, 40, 40))
pygame.draw.rect(game_screen, pink, ((3/7)*screen_width - 80, (screen_height//2) + 80, 40, 40))
pygame.draw.rect(game_screen, brown, ((5/7)*screen_width - 160, (screen_height//2) + 80, 40, 40))
#event block
for event in pygame.event.get(): #loop through user events i.e. keyboard, mouse
if event.type == pygame.QUIT: #exit button
execute = False
if event.type == pygame.MOUSEBUTTONDOWN:
i = 1
while i <= 12: #gets inputs 12 times
black_count = 0
white_count = 0
guess_list = []
x_mouse, y_mouse = pygame.mouse.get_pos()
for clicks in range(5): #gets clicks 4 times
if 80 <= x_mouse <= 120 and 235 <= y_mouse <= 275:
guess_list.append(red)
elif 160 <= x_mouse <= 200 and 235 <= y_mouse <= 275:
guess_list.append(green)
elif 240 <= x_mouse <= 280 and 235 <= y_mouse <= 275:
guess_list.append(blue)
elif 80 <= x_mouse <= 120 and 315 <= y_mouse <= 365:
guess_list.append(yellow)
elif 160 <= x_mouse <= 200 and 315 <= y_mouse <= 365:
guess_list.append(orange)
elif 240 <= x_mouse <= 280 and 315 <= y_mouse <= 365:
guess_list.append(purple)
elif 80 <= x_mouse <= 120 and 395 <= y_mouse <= 435:
guess_list.append(maroon)
elif 160 <= x_mouse <= 200 and 395 <= y_mouse <= 435:
guess_list.append(pink)
elif 240 <= x_mouse <= 280 and 395 <= y_mouse <= 435:
guess_list.append(brown)
else: #clicks outside the squares
print("Only click on the colored squares!!") #this loops 48 times (fix ASAP)
#scoring block i.e. for updating black_count, white_count (code ASAP)
i += 1
print(guess_list)
pygame.display.update()
clock.tick(40) #sets fps
pygame.quit()
