94 lines
2.7 KiB
Python
94 lines
2.7 KiB
Python
import os
|
|
os.environ['PYGAME_HIDE_SUPPORT_PROMPT'] = "hide"
|
|
import pygame_widgets
|
|
import pygame
|
|
from pygame_widgets.button import Button
|
|
from pygame_widgets.dropdown import Dropdown
|
|
import random
|
|
|
|
win_width = 600
|
|
win_height = 480
|
|
win_bg_color = (0, 0, 0)
|
|
dice_results = []
|
|
text_color = (221, 221, 221)
|
|
|
|
def draw_results(clicked: bool = False):
|
|
if len(dice_results) == 0: return
|
|
my_string = "Results: "
|
|
for index, element in enumerate(dice_results):
|
|
my_string += str(element)
|
|
if index != len(dice_results) - 1:
|
|
my_string += ", "
|
|
if clicked: print(my_string)
|
|
font_size = 50
|
|
while True:
|
|
arail_20 = pygame.font.SysFont('bauhaus 93', font_size)
|
|
results_text = arail_20.render(my_string, True, text_color)
|
|
if results_text.get_width() < win_width:
|
|
break
|
|
font_size = font_size - 5
|
|
text_x = (win_width // 2) - (results_text.get_width() // 2)
|
|
text_y = win_height - 25 - results_text.get_height()
|
|
window.blit(results_text,(text_x, text_y))
|
|
|
|
def roll_dice():
|
|
global dice_results
|
|
print("Type of dice: D", side_dropdown.getSelected())
|
|
print("Number of dice: ", numdice_dropdown.getSelected())
|
|
dice_results = []
|
|
for dice in range(0, numdice_dropdown.getSelected()):
|
|
dice_results.append(random.randint(1, side_dropdown.getSelected()))
|
|
draw_results(True)
|
|
|
|
pygame.init()
|
|
window = pygame.display.set_mode((win_width, win_height))
|
|
pygame.display.set_caption('Dice Roll')
|
|
icon = pygame.image.load(os.path.join("icon", "dieicon_64x.png"))
|
|
icon.convert_alpha()
|
|
pygame.display.set_icon(icon)
|
|
|
|
side_dropdown = Dropdown(
|
|
window, 120, 10, 150, 50, name='How many sides',
|
|
choices=[
|
|
'D4',
|
|
'D6',
|
|
'D8',
|
|
'D10',
|
|
'D12',
|
|
'D20',
|
|
],
|
|
borderRadius=3, colour=pygame.Color(200, 200, 200), values=[4, 6, 8, 10, 12, 20], direction='down', textHAlign='left'
|
|
)
|
|
|
|
numdice_dropdown = Dropdown(
|
|
window, 320, 10, 150, 50, name='Number of Dice',
|
|
choices=[
|
|
'1',
|
|
'2',
|
|
'8',
|
|
],
|
|
borderRadius=3, colour=pygame.Color(200, 200, 200), values=[1, 2, 8], direction='down', textHAlign='left'
|
|
)
|
|
|
|
button = Button(
|
|
window, 200, 300, 200, 50, text='Roll', fontSize=50, textColor=("red"),
|
|
margin=20, inactiveColour=(243, 243, 243), pressedColour=(0, 255, 0),
|
|
radius=5, onClick=roll_dice, font=pygame.font.SysFont('calibri', 30),
|
|
textVAlign='bottom',
|
|
)
|
|
|
|
run = True
|
|
while run:
|
|
events = pygame.event.get()
|
|
for event in events:
|
|
if event.type == pygame.QUIT:
|
|
run = False
|
|
window.fill(win_bg_color)
|
|
draw_results()
|
|
|
|
pygame_widgets.update(events)
|
|
pygame.display.update()
|
|
|
|
pygame.quit()
|
|
quit()
|