mirror of
https://bitbucket.org/Mattrixwv/pytutorial.git
synced 2025-12-06 18:23:57 -05:00
Created a simple Dice class and test script for it
This commit is contained in:
28
Dice.py
Normal file
28
Dice.py
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
#This is a simple dice class. It can be initiated with any positive number of sides
|
||||||
|
|
||||||
|
import random
|
||||||
|
|
||||||
|
class Dice:
|
||||||
|
#Setup all the variables needed and the random number generator
|
||||||
|
def __init__(self, sides = 6):
|
||||||
|
#Setup the highest number that can be rolled
|
||||||
|
if(sides < 1):
|
||||||
|
self.__sides = 6
|
||||||
|
else:
|
||||||
|
self.__sides = sides
|
||||||
|
|
||||||
|
#Setup the other variables needed
|
||||||
|
self.__face = 1 #The 'face' of the die that is used for scoring, etc
|
||||||
|
|
||||||
|
#Get the number on the face of the die
|
||||||
|
def getFace(self):
|
||||||
|
return self.__face
|
||||||
|
|
||||||
|
#Get the number of sides on the dice
|
||||||
|
def getSides(self):
|
||||||
|
return self.__sides
|
||||||
|
|
||||||
|
#Get a new number in face
|
||||||
|
def roll(self):
|
||||||
|
self.__face = random.randint(1, self.__sides)
|
||||||
|
return self.__face
|
||||||
53
testDice.py
Normal file
53
testDice.py
Normal file
@@ -0,0 +1,53 @@
|
|||||||
|
#A simple script to test the Dice class
|
||||||
|
|
||||||
|
from Dice import Dice
|
||||||
|
|
||||||
|
#Try giving a negative number of sides
|
||||||
|
print("Testing for negative number of sides")
|
||||||
|
die = Dice(-3)
|
||||||
|
if(die.getSides() != 6):
|
||||||
|
print("The die should have 6 sides, instead it has " + str(die.getSides()) + " sides.\nTest failed")
|
||||||
|
else:
|
||||||
|
print("Test passed")
|
||||||
|
|
||||||
|
#Try the default constructor
|
||||||
|
die = Dice()
|
||||||
|
if(die.getSides() != 6):
|
||||||
|
print("\nThe die should have 6 sides, instead it has " + str(die.getSides()) + " sides.\nTest failed")
|
||||||
|
else:
|
||||||
|
print("Test passed")
|
||||||
|
|
||||||
|
#Try rolling it a few times and making sure the rolls are within expected boundaries
|
||||||
|
print("Testing the rolls of a default die")
|
||||||
|
die = Dice()
|
||||||
|
#Setup an array to keep track of how many times a number has been rolled
|
||||||
|
rolls = []
|
||||||
|
for x in range(die.getSides()):
|
||||||
|
rolls.append(0)
|
||||||
|
#Roll 100 times the number of sides
|
||||||
|
for x in range(100 * die.getSides()):
|
||||||
|
num = die.roll()
|
||||||
|
rolls[num - 1] += 1 #You add one to the number directly behind the current number. This accounts for starting at subscript 0
|
||||||
|
#Print the results
|
||||||
|
cnt = 0
|
||||||
|
for num in rolls:
|
||||||
|
print(str(cnt + 1) + ". " + str(num))
|
||||||
|
cnt += 1
|
||||||
|
|
||||||
|
|
||||||
|
#Try using a many sided die and using the same tests as above
|
||||||
|
print("Testing the rolls of a die with a large number of sides")
|
||||||
|
die = Dice(50)
|
||||||
|
#Setup an array to keep track of how many times a number has been rolled
|
||||||
|
rolls = []
|
||||||
|
for x in range(die.getSides()):
|
||||||
|
rolls.append(0)
|
||||||
|
#Roll 100 times the number of sides
|
||||||
|
for x in range(100 * die.getSides()):
|
||||||
|
num = die.roll()
|
||||||
|
rolls[num - 1] += 1 #You add one to the number directly behind the current number. This accounts for starting at subscript 0
|
||||||
|
#Print the results
|
||||||
|
cnt = 0
|
||||||
|
for num in rolls:
|
||||||
|
print(str(cnt + 1) + ". " + str(num))
|
||||||
|
cnt += 1
|
||||||
Reference in New Issue
Block a user