Python Forum
Need some help with Dice Game for daughter in school - Printable Version

+- Python Forum (https://python-forum.io)
+-- Forum: Python Coding (https://python-forum.io/forum-7.html)
+--- Forum: Homework (https://python-forum.io/forum-9.html)
+--- Thread: Need some help with Dice Game for daughter in school (/thread-32474.html)



Need some help with Dice Game for daughter in school - OptX - Feb-11-2021

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()   



RE: Need some help with Dice Game for daughter in school - nilamo - Feb-12-2021

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.


RE: Need some help with Dice Game for daughter in school - BashBedlam - Feb-12-2021

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 ()