Python Forum

Full Version: Need some help with Dice Game for daughter in school
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
Hi, my daughter needs to finish a project with a dice program in gygame. So far she can roll the dice and see the results. Now she needs to show the results in numbers too, not only the dice. I assume we need the print command for this ?
Any help would be appreciated.
This is what we got so far :
from random import randrange

class Die():
    def __init__(self, position):
        self.position = position
        self.value = 6
        self.displayed = False

    def show(self):
        pass

    def hide(self):
        pass

    def toggle(self):
        pass

    def throw(self):
        self.value = randrange(1, 6)

    def display(self):
        filename = str(self.value) + "_dots"
        if filename == "1_dots":
            filename = "1_dot"
        screen.blit(filename, self.position)

die1 = Die((20, 80))
die2 = Die((180, 80))
die3 = Die((340, 80))
die4 = Die((500, 80))
die5 = Die((660, 80))

def number_count(dice):
    die1 = Die((20, 80))
    die2 = Die((180, 80))
    die3 = Die((340, 80))
    die4 = Die((500, 80))
    die5 = Die((660, 80))

    numbers = [None, 0, 0, 0, 0, 0, 0]
    for die in dice:
         numbers[die.value] += 1
    return numbers

def product(a):
        p = 1
        for f in a:
            p *= f
        return p

def draw():
    screen.clear()
    die1.display()
    die2.display()
    die3.display()
    die4.display()
    die5.display()

def update():
    pass

def on_key_down(key):
    if key == keys.SPACE:
        die1.throw()
        die2.throw()
        die3.throw()
        die4.throw()
        die5.throw()   
print(number_count([die1, die2, die3, die4, die5, die6]))

If that doesn't help, please share all the code (there's several references to a "screen" which isn't defined anywhere). It definitely looks like pygame code, but it's lacking almost all the code which would actually make pygame do anything haha.
Assuming that you have images of the dice and the they are named according to the convention 1_dot.png, 2_dots.pgn, the following code will roll and display the dice

from random import randrange
from pygame import *

init ()
screen = display.set_mode ((800, 400))

class Die():
    def __init__(self, value, position):
        self.position = position
        self.value = value 
        self.load_image (self.value)
        self.displayed = False
 
    def load_image (self, value) :
        filename = str(self.value) + "_dots.png"
        if filename == "1_dots.png":
            filename = "1_dot.png"
        self.image = image.load (filename)

    def show(self):
        pass
 
    def hide(self):
        pass
 
    def toggle(self):
        pass
 
    def throw(self):
        self.value = randrange(1, 6) 
        self.load_image (self.value)
    def display(self):
        screen.blit(self.image, self.position)
 
die1 = Die(1, (20, 80))
die2 = Die(2, (180, 80))
die3 = Die(3, (340, 80))
die4 = Die(4, (500, 80))
die5 = Die(5, (660, 80))
 
def number_count(dice):
    die1 = Die((20, 80))
    die2 = Die((180, 80))
    die3 = Die((340, 80))
    die4 = Die((500, 80))
    die5 = Die((660, 80))
 
    numbers = [None, 0, 0, 0, 0, 0, 0]
    for die in dice:
         numbers[die.value] += 1
    return numbers
 
def product(a):
        p = 1
        for f in a:
            p *= f
        return p
 
def draw():
    screen.fill ((200, 200, 200))
    die1.display()
    die2.display()
    die3.display()
    die4.display()
    die5.display()
 
def update():
    pass
 
def on_key_down():
    die1.throw()
    die2.throw()
    die3.throw()
    die4.throw()
    die5.throw()

while True :
	for action in event.get () :
		if action.type == KEYDOWN :
			if action.key == K_SPACE :
				on_key_down ()
		if action.type == QUIT :
			quit ()
			break
	draw ()
	display.flip ()