Craps
Published on January 5th, 2022 at 2:14 am
What is it?
Craps is a popular dice game that is commonly played at casinos. This is a very simplified version of that game in a command-line editor. In this version, you can only play on the pass line. At the start of the game, you are given $100 to bet with. Your first roll will determine if you win, lose, or roll again. You will win if you roll either a 7 or an 11, however, you will lose if you roll either a 2, 3, or 12. If you roll anything else, your bet moves to “point”. While your bet is on “point”, you will have to continue to roll until your dice equal the same value as the roll to move to point. So if you rolled a 5, you will need to keep rolling until your roll 5 again, but if you roll a 7, you lose.

What does it do?
When you start the application, you are presented with the start screen which contains some ASCII art and the main menu. Typing 3
will close the application, typing 2
will show you the rules, and typing 1
will start the game. The rules are shown below:
Here are the rules for this version of Craps. (1) You start with $100, and you make your first bet. (2) On your first roll, you win if you roll 7 or 11. You lose if you roll 2, 3, or 12. If you roll anything else, that becomes the 'point'. (3) You continue to roll until one of two things happen: (A) You roll the point again. In this case, you win. (B) You roll a 7. In this case, you lose. (4) You may continue to play or quit the game.
If you press 1
, the game starts. The prompt will show that you have $100 and will ask how much you would like to bet. In normal craps, you can choose where you want to place your bet which would affect your odds of winning, but in this version, you can only play on the Pass Line. The Pass Line is a 1:1 wager, which means that you will earn back your bet plus a matched amount from the house if you win.
To play on the Pass Line, simply enter a number equal to or less than the amount of virtual money you have and press Enter. The screen will then tell you your bet amount and your new balance after subtracting the wager. Pressing Enter again will roll the dice. On your first roll, 3 things can happen:
- You roll a 7 or an 11 and win the game.
- You roll a 2, 3, or 12 and lose the game.
- You roll anything else and a “point” is established at that value.
If your bet is on “point”, then you will have to continually roll the dice until one of two things happen:
- You roll the same number as the point value and win the game.
- You roll a 7 and lose the game.
After each round, you have the option to quit. This will reset your balance and start the game over.
How does it work?
This game was written in Python: a programming language written in the early 90’s to be a high-level general-purpose language. It is commonly used today in nearly all fields of computer science including enterprise applications, data science, and machine learning.
The main block of code starts at def main()
. This prints the intro to the game and sets the main menu options to start or end the game. If the user starts the game, it runs playRound()
which covers all of the logic for playing on the Pass Line in craps. It calls makeBet()
which covers the code for making a bet, rolls the dice, and checks the result to see if the user wins or loses. makeBet()
asks for an input of money to bet, but declines the transaction if the user does not have enough to bet. The full program is shown below:
Craps.py
#################### # Craps # by Ryan Bains-Jordan #################### #imports import random import time #defaults newGame = True sMoney = 100 #starting money money = sMoney #game money #dice images a=['','','','','',''] a[0] =' _____ \n' a[0]+='| |\n' a[0]+='| * |\n' a[0]+='|_____|\n' a[1] =' _____ \n' a[1]+='| *|\n' a[1]+='| |\n' a[1]+='|*____|\n' a[2] =' _____ \n' a[2]+='| *|\n' a[2]+='| * |\n' a[2]+='|*____|\n' a[3] =' _____ \n' a[3]+='|* *|\n' a[3]+='| |\n' a[3]+='|*___*|\n' a[4] =' _____ \n' a[4]+='|* *|\n' a[4]+='| * |\n' a[4]+='|*___*|\n' a[5] =' _____ \n' a[5]+='|* *|\n' a[5]+='|* *|\n' a[5]+='|*___*|\n' #intro def printIntro(): print("\n") print("***********************************************") print("***********************************************") print("** _ _ _ _ _ _ _ _ _ _ **") print("** C | | | | **") print("** R | * * | | * | **") print("** A | | | * | **") print("** P | * * | | * | **") print("** S |_ _ _ _ _ | |_ _ _ _ _ | **") print("** **") print("***********************************************") print("***********************************************") print("\n") #rules def printRules(): print("") print("Here are the rules for this version of Craps.") print(" (1) You start with $100, and you make your first bet.") print(" (2) On your first roll, you win if you roll 7 or 11.") print(" You lose if you roll 2,3, or 12. If you roll anything else,") print(" that becomes the \'point\'") print(" (3) You continue to roll until 1 of two things happens: ") print(" (A) You roll the point again. In this case, you win.") print(" (B) You roll a 7. In this case, you lose.") print(" (4) You may continue to play or quit the game. ") print("") #game opitons def printOptions(): print("") print("(1) Play Craps!") print("(2) Print Rules") print("(3) Quit") print("") #end the game def endGame(): global money print("You have $" + str(money)) if money > 0: play = "" while play != "y" and play != "n": play = input("\nMake another bet? y/n\n") if play == "y": playRound() elif play == "n": print("\nYou left with $" + str(money)) main() else: print("\nYou are out of money. Better luck next time!") main() #if you win the game def winGame(bet): global money #double the bet bet = bet * 2 money = money + bet endGame() #if you lose the game def loseGame(): endGame() #make the bet def makeBet(): global money bet = int(input("How much would you like to bet?\n")) if (money - bet) >= 0: print("\nYour bet = $" + str(bet)) return bet else: print("You don't have that much money") playRound() #get a random number from die def rollDie(): randNum = random.randint(1,6) return randNum #roll the dice and get the sum def rollDice(): print("\nRolling Dice...") die1 = rollDie() time.sleep(1) print(a[die1 - 1]) die2 = rollDie() time.sleep(1) print(a[die2 - 1]) dieSum = die1 + die2 time.sleep(1) print("You rolled a " + str(dieSum) + ".") return dieSum #play a round of craps def playRound(): global money #make a bet bet = makeBet() money = money - bet print("New balance = $" + str(money) + "\n") #craps numbers crapsNums = [2,3,12] #first roll input("Press Enter to Roll Dice") dieSum = rollDice() #check if first value is 7 or 11 if dieSum == 7 or dieSum == 11: print("Instant Win.") winGame(bet) #check if first value is 2, 3 or 12 elif dieSum in crapsNums: print("Instant Lose.") loseGame() #check if it is anything else else: print("\nBet moves to point") point = dieSum #second roll input("Press Enter to Roll Dice") dieSum = rollDice() #check if roll = point if dieSum == point: print("\nCongratulations, you rolled the point!") winGame(bet) else: print("\nSorry, you did not roll the point.") loseGame() #main method def main(): #print the intro if it is a new game global newGame if newGame == True: printIntro() newGame = False #print the options play = 2 while play == 2: printOptions() play = int(input("What would you like to do?\n")) #options if play == 1: global money money = sMoney print("\nYou have $" + str(money)) playRound() elif play == 2: printRules() elif play == 3: quit() elif play < 1 or play > 3: print("invalid input") play = 2 #driver main()