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
- Python
- pygame
- pycharm
Desarrollo
Creamos un proyecto que se llame SimuladorDados
Agragamos la librería pygame
Nos vamos a File y seleccionamos Settings...

Selecionamos Python Interpreter selecionamos el proyecto y en el signo de + agragamos la dependencia


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í

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)