Main Loop and Handling Clicks

Python3




while True:
    music()
    if change == False:
        display_surface.fill(white)
        display_surface.blit(image, (0, 0))
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            pygame.quit()
        pygame.display.update()
        clicked = False
 
        if event.type == pygame.MOUSEBUTTONDOWN:
           
            # Check if door 1 is pressed.
            if(event.pos[0] >= 71 and event.pos[0] <= 203
               and event.pos[1] >= 387 and event.pos[1] <= 632):
                user = 1
                clicked = True
                music()
            # Check if door 2 is pressed.
            elif(event.pos[0] >= 353 and event.pos[0] <= 485
                 and event.pos[1] >= 386 and event.pos[1] <= 635):
                user = 2
                clicked = True
                music()
            # Check if door 3 is pressed.
            elif(event.pos[0] >= 938 and event.pos[0] <= 1100
                 and event.pos[1] >= 387 and event.pos[1] <= 633):
                user = 3
                # print("Clicked on door 3.")
                clicked = True
                music()


Every game contains an infinite loop (while True). It is checked if the type of event registered is QUIT, i.e. the user has closed the Pygame window. In that case, the program terminates. pygame.MOUSEBUTTONDOWN refers to the event of left-clicking a mouse. The if conditions are used to determine the door that has been pressed by the user (based on the coordinates) and the door number is assigned to the variable, user. For example, if the X coordinate (event.pos[0]) of the point where the click has occurred is between 71 and 203, and the Y coordinate (event.pos[1]) is between 387 and 633, register the click has a click on door 1. The clicked Boolean is set to True whenever one of the three doors is clicked. 

Monty Hall Problem’s Simulation Using Pygame

In this article, we are going to see how to create Monty Hall games using Pygame in Python. Monty Hall was a game show of the American television game show Let’s Make a Deal. 

Suppose you’re on a game show, and you’re given the choice of three doors, Behind one door is a car; behind the others, goats. You pick a door, say No. 1, and the host, who knows what’s behind the doors, opens another door, say No. 3, which has a goat. He then says to you, “Do you want to pick door No. 2?” Is it to your advantage to switch your choice?

Demo of what the end product would look like:

The goat is revealed to behind door 1. Original selection was door 2. 

As the decision was made to stay, the game is won. 

Please ensure that the images and the audio used are present in the same folder as the Python file. The images and the audio can be downloaded from here

Similar Reads

Work Flow and Logic

The entire simulation can be condensed into the following points:...

Making Imports and Generating Configuration

Python3 import pygame import random pygame.init() white = (255, 255, 255) X = 1200 Y = 650 doors = random.sample(range(1, 4), 3) goat1 = doors[0] goat2 = doors[1] goats = [goat1, goat2] car = doors[2]...

Adding Background and Music

...

Updating Image Based on the User’s Input

Python3 display_surface = pygame.display.set_mode((X, Y)) pygame.display.set_caption('Simulation') image = pygame.image.load('all_doors.jpg') change = False     def music():     file = 'click.mp3'     pygame.mixer.init()     pygame.mixer.music.load(file)     pygame.mixer.music.play()...

Main Loop and Handling Clicks

...

Loading all Valid Configurations (Images) and Generating Position of Goats

Python3 def show_car(car, state):     my_font = pygame.font.SysFont("latoblack", 26)     display_surface = pygame.display.set_mode((X, Y))     car1 = pygame.image.load('car_1.jpg')     car2 = pygame.image.load('car_2.jpg')     car3 = pygame.image.load('car_3.jpg')       if car == 1:         display_surface.blit(car1, (0, 0))         pygame.display.update()     elif car == 2:         display_surface.blit(car2, (0, 0))         pygame.display.update()     elif car == 3:         display_surface.blit(car3, (0, 0))         pygame.display.update()     if state == 1:         the_text = my_font.render("You won by switching!", True, (231, 0, 10))         display_surface.blit(the_text, (350, 180))         pygame.display.update()     elif state == 2:         the_text = my_font.render(             "You could've won by staying!", True, (231, 0, 0))         display_surface.blit(the_text, (350, 180))         pygame.display.update()     elif state == 3:         the_text = my_font.render("You won by staying!", True, (231, 0, 0))         display_surface.blit(the_text, (350, 180))         pygame.display.update()     elif state == 4:         the_text = my_font.render(             "You could've won by switching!", True, (231, 0, 0))         display_surface.blit(the_text, (350, 180))         pygame.display.update()     def draw_rect():     pygame.draw.rect(display_surface, (20, 24, 11),                      (300, 220, 300, 40), 1)     pygame.display.update()     pygame.draw.rect(display_surface, (14, 2, 200),                      (300, 260, 300, 40), 1)     pygame.display.update()...

Displaying Result (Text) Based on the User’s Input

...

Below is the complete implementation:

...

Contact Us