Introducción

Un estudiante requiere que se haga un programa con interfaz gráfica que simule la acción de tirar dos dados para mostrar la usabilidad de pygame.

Requisitos

Desarrollo

Creamos un proyecto que se llame SimuladorDados
phyton project
Agragamos la librería pygame
Nos vamos a File y seleccionamos Settings...
phyton project
Selecionamos Python Interpreter selecionamos el proyecto y en el signo de + agragamos la dependencia
phyton project
phyton project
El paso que sigue es decargar los directorios que contienen las imágenes,audio y tipo de letra las descargamos presionando el siguiente link: Descomprimimos el archivo y pegamos los folders en el proyecto quedando así
phyton project
Creamos el archivo main.py y escribimos el siguiente código
 
  
    import pygame
from sys import exit
import random

pygame.init()
clock = pygame.time.Clock()
screen = pygame.display.set_mode((800,600))
pygame.display.set_caption("Simulador de dados")
background_image = pygame.image.load('graphics/texturaverde.png')
font = pygame.font.Font('font/YeyskRegular-JzaM.otf',27)
roll_mesagge = font.render("presiona barra espaciadora para iniciar",True,(255,235,193))
dice_images=[]
dice_images2=[]
dice_rolling_images = []
dice_rolling_images2 = []

for num  in range(1,7):
    dice_image = pygame.image.load('graphics/dice/'+str(num)+'.png')
    dice_images.append(dice_image)

for num  in range(1,7):
    dice_image2 = pygame.image.load('graphics/dice/'+str(num)+'.png')
    dice_images2.append(dice_image2)

for  num in  range(1,9):
    dice_rolling_image = pygame.image.load('graphics/animation/roll'+str(num)+'.png')
    dice_rolling_images.append(dice_rolling_image)

for  num in  range(1,9):
    dice_rolling_image2 = pygame.image.load('graphics/animation/roll'+str(num)+'.png')
    dice_rolling_images2.append(dice_rolling_image2)
rolling_aud = pygame.mixer.Sound('audio/roll_aud.mp3')
rolling_stop_aud = pygame.mixer.Sound('audio/roll_stop_aud.mp3')

is_rolling = False
rolling_images_counter = 0
dice_num_image = dice_images[0]
dice_num_image2 = dice_images2[0]
first = True
while True:
    for event  in pygame.event.get():
        if event.type == pygame.QUIT:
            pygame.quit()
            exit()
    screen.blit(background_image, (0, 0))
    screen.blit(roll_mesagge, (20, 300))
    key = pygame.key.get_pressed()
    if key[pygame.K_SPACE] and is_rolling is False:
        is_rolling = True
        rolling_aud.play()
        random_num=random.randint(0,5)
        dice_num_image=dice_images[random_num]
        random_num2=random.randint(0,5)
        dice_num_image2 = dice_images2[random_num2]
        screen.blit(dice_rolling_images[rolling_images_counter], (250,150))
        screen.blit(dice_rolling_images2[rolling_images_counter], (450, 150))
        rolling_images_counter += 1
        first = True
    else:
        if is_rolling:
            screen.blit(dice_rolling_images[rolling_images_counter], (250, 150))
            screen.blit(dice_rolling_images2[rolling_images_counter], (450, 150))
            rolling_images_counter += 1
            if rolling_images_counter  >= 8 :
                is_rolling = False
                rolling_images_counter = 0
        else:
            screen.blit(dice_num_image, (250, 150))
            screen.blit(dice_num_image2, (350, 150))
            if first:
                rolling_stop_aud.play()
                first = False


    pygame.display.update()
    clock.tick(13)

          
              
      
   

Probando