#!/usr/bin/python2.6
#try exception checking imported modules are loaded
try:
#import pygame
#from pygame.locals import *
import random
#import time
except ImportError, err:
print " The module %s failed to load" %(err)
exit(1)
#pygame.init()
#frames/s setting
#FPS = 1
#create object to track time
#timer = pygame.time.Clock()
#set screen
#screen = pygame.display.set_mode((500,300))
#pygame.display.set_caption('The Game of Pig (2 dice)')
#background = pygame.Surface(screen.get_size())
#background = background.convert()
#background.fill((250,250,250))
#clock = pygame.time.Clock()
#load images of dice faces (1-6)
#DIE1 = [pygame.image.load('Face-1.png'),pygame.image.load('Face-2.png'),
pygame.image.load('Face-3.png'),pygame.image.load('Face-4.png'),
pygame.image.load('Face-5.png'),pygame.image.load('Face-6.png')]
#DIE2 = [pygame.image.load('Face-1.png'),pygame.image.load('Face-2.png'),
pygame.image.load('Face-3.png'),pygame.image.load('Face-4.png'),
pygame.image.load('Face-5.png'),pygame.image.load('Face-6.png')]
class game():
#Initialize variables to 0 and true. Fresh (new) player
def __init__(self):
self.round_score = 0
self.total_score = 0
self.turn = True
#function to roll the 2 dice. set turn to true.
#return dice as a tuple
def roll_dice(self):
self.turn = True
return (random.randint(1,6), random.randint(1,6))
#function to hold. Add player's current round score to total score
#set turn to false. indicating next player's turn
def hold_dice(self):
self.total_score += self.round_score
self.round_score = 0
self.turn = False
print 'hold:\ntotal_score = %s' %(self.total_score)
#function to determine:
#1.either die is 1 if so round score set to 0 and turn over
#2.both dice are 1 total score set to 0 and turn over
def check_dice_status(self, dice):
if( dice[0] == 1 and dice[1] == 1):
self.round_score, self.total_score = 0,0
self.turn = False
print 'total_score set to 0'
elif( dice[0] == 1 or dice[1] ==1):
self.round_score = 0
self.turn = False
print 'round_score set to 0'
else:
self.round_score += (dice[0]+dice[1])
self.turn = True
print 'round_score = %s' %(self.round_score)
#function to return status on turn.
#return turn (true/false)
def check_turn(self):
return self.turn
#function that returns the true if player is winner else false
def winner(self):
if(self.total_score >= 100):
return True
else:
return False
#create objects of the class game, which is the rules
player1, player2 = game(), game()
#pick a player to go first randomly
player_turn =random.randint(1,2)
print 'Player %s goes first' %(player_turn)
#way to stop loop
game_state = True
while(game_state):#game loop
#print which player's turn it is
print '\nPlayer%s :' %(player_turn)
option = raw_input('Roll or Hold? ')
#if player 1 do below commands, else player 2
if(player_turn == 1):
#if a winner is found. break the loop
if(player1.winner()):
game_state = False
break
#1 of 2 commands, ROLL. Check dice status to determine if their score has diminished or added onto
if(option.lower() == 'roll'):
#roll contains a tuple of the random number(dice roll)
roll = player1.roll_dice()
#display their rolls
print 'roll[0], roll[1] =', roll[0], ' ', roll[1]
#check status of dice, adjust score accordingly
player1.check_dice_status(roll)
#determines when the player's next turn will be
if (player1.check_turn()): #check status of current player's turn
player_turn = 1
else:
player_turn = 2
#2 of 2 commands, HOLD. Player holds, meaning round score is added to total score.
#next player's turn
elif(option.lower() == 'hold'):
player1.hold_dice()
player_turn = 2
#player 2 does below commands. Iterate commands from top
elif(player_turn == 2):
if(player2.winner()):
game_state = False
break
if(option.lower() == 'roll'):
roll = player2.roll_dice()
print 'roll[0], roll[1] =', roll[0], ' ', roll[1]
player2.check_dice_status(roll)
if (player2.check_turn()):
player_turn = 2
else:
player_turn = 1
elif(option.lower() == 'hold'):
player2.hold_dice()
player_turn = 1
#declare which one is the winner
if(player1.winner()):
print '\nplayer1 is the WINNER\n'
else:
print '\nplayer2 is the WINNER\n'