|
# graphic_die.py |
|
# Christian Munoz |
|
# 03/13/2015 |
|
|
|
import pygame |
|
import math |
|
from pygame.locals import * |
|
from random import randint |
|
|
|
class graphic_die: |
|
"""class that displays a graphical representation of a 6 sided die""" |
|
|
|
def __init__(self, size, surface, position): |
|
"""This function defines some values of the die and where things should display.""" |
|
self.SURF = surface |
|
self.POS = position |
|
self.VALUE = 1 |
|
self.SIZE = size |
|
|
|
self.DIESURF = pygame.Surface((size, size), flags=SRCALPHA, depth=32) |
|
self.DIESURF.fill((0, 0, 0, 0)) |
|
|
|
# RGB values for later use. |
|
self.DIEIVORY = (230, 230, 200) |
|
self.DIERED = (200, 0, 0) |
|
self.PIPSBLK = (40, 40, 40) |
|
self.PIPSWHT = (200, 200, 200) |
|
|
|
self.RADIUS = self.SIZE//10 |
|
HSIZE = self.SIZE//2 |
|
QSIZE = self.SIZE//4 |
|
|
|
# create Pips/Dots in standard places |
|
self.POINT1 = (HSIZE, HSIZE) |
|
self.POINT2 = (QSIZE, QSIZE) |
|
self.POINT3 = (HSIZE + QSIZE, HSIZE + QSIZE) |
|
self.POINT4 = (HSIZE + QSIZE, QSIZE) |
|
self.POINT5 = (QSIZE, HSIZE + QSIZE) |
|
self.POINT6 = (QSIZE, HSIZE) |
|
self.POINT7 = (HSIZE + QSIZE, HSIZE) |
|
|
|
def draw_background(self): |
|
"""Create square with rounded corners""" |
|
pygame.draw.circle(self.DIESURF, self.DIEIVORY, (self.RADIUS, self.RADIUS), self.RADIUS) |
|
pygame.draw.circle(self.DIESURF, self.DIEIVORY, (self.SIZE - self.RADIUS, self.RADIUS), self.RADIUS) |
|
pygame.draw.circle(self.DIESURF, self.DIEIVORY, (self.RADIUS, self.SIZE - self.RADIUS), self.RADIUS) |
|
pygame.draw.circle(self.DIESURF, self.DIEIVORY, (self.SIZE - self.RADIUS, self.SIZE - self.RADIUS), self.RADIUS) |
|
|
|
pygame.draw.rect(self.DIESURF, self.DIEIVORY, Rect((self.RADIUS, 0), (self.SIZE - 2 * self.RADIUS, self.SIZE))) |
|
pygame.draw.rect(self.DIESURF, self.DIEIVORY, Rect((0, self.RADIUS), (self.SIZE, self.SIZE - 2 * self.RADIUS))) |
|
|
|
def make_pip(self, point): |
|
"""Helper function to make pips.""" |
|
pip_big = pygame.draw.circle(self.DIESURF, self.PIPSBLK, point, self.RADIUS) |
|
pip_medium = pygame.draw.circle(self.DIESURF, self.DIERED, point, (self.RADIUS -2)) |
|
pip_small = pygame.draw.circle(self.DIESURF, self.PIPSBLK, point, math.ceil(self.RADIUS/2)) |
|
return pip_big, pip_medium, pip_small |
|
|
|
def set_random_value(self): |
|
"""Returns a random value between 1-6.""" |
|
self.VALUE = randint(1, 6) |
|
return self.VALUE |
|
|
|
def draw_value(self, value): |
|
"""Draws the right amount of pips depending on the value of the die.""" |
|
self.draw_background() |
|
|
|
if value == 1: |
|
pip1 = self.make_pip(self.POINT1) |
|
elif value == 2: |
|
pip2 = self.make_pip(self.POINT2) |
|
pip3 = self.make_pip(self.POINT3) |
|
elif value == 3: |
|
pip1 = self.make_pip(self.POINT1) |
|
pip2 = self.make_pip(self.POINT2) |
|
pip3 = self.make_pip(self.POINT3) |
|
elif value == 4: |
|
pip2 = self.make_pip(self.POINT2) |
|
pip3 = self.make_pip(self.POINT3) |
|
pip4 = self.make_pip(self.POINT4) |
|
pip5 = self.make_pip(self.POINT5) |
|
elif value == 5: |
|
pip1 = self.make_pip(self.POINT1) |
|
pip2 = self.make_pip(self.POINT2) |
|
pip3 = self.make_pip(self.POINT3) |
|
pip4 = self.make_pip(self.POINT4) |
|
pip5 = self.make_pip(self.POINT5) |
|
elif value == 6: |
|
pip2 = self.make_pip(self.POINT2) |
|
pip3 = self.make_pip(self.POINT3) |
|
pip4 = self.make_pip(self.POINT4) |
|
pip5 = self.make_pip(self.POINT5) |
|
pip6 = self.make_pip(self.POINT6) |
|
pip7 = self.make_pip(self.POINT7) |
|
|
|
def display_die(self): |
|
self.draw_value(self.VALUE) |
|
self.SURF.blit(self.DIESURF, self.POS) |