<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Todd Eddy</title>
    <description>The latest articles on DEV Community by Todd Eddy (@todd_eddy_827bd304c67874a).</description>
    <link>https://dev.to/todd_eddy_827bd304c67874a</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F809598%2Fb874b13c-e48f-40cf-a1e9-7bb8083852cc.png</url>
      <title>DEV Community: Todd Eddy</title>
      <link>https://dev.to/todd_eddy_827bd304c67874a</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/todd_eddy_827bd304c67874a"/>
    <language>en</language>
    <item>
      <title>Codecademy CS102 Portfolio Project</title>
      <dc:creator>Todd Eddy</dc:creator>
      <pubDate>Wed, 13 Apr 2022 18:46:36 +0000</pubDate>
      <link>https://dev.to/todd_eddy_827bd304c67874a/codecademy-cs102-portfolio-project-59he</link>
      <guid>https://dev.to/todd_eddy_827bd304c67874a/codecademy-cs102-portfolio-project-59he</guid>
      <description>&lt;p&gt;I have another GitHub project finished. It's clunky but once it gets rolling it is pretty entertaining. Video Game Recommendation system. Hope you enjoy!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/ToddlesMods/CS102_Final"&gt;GitHub Project&lt;/a&gt;&lt;/p&gt;

</description>
      <category>python</category>
      <category>beginners</category>
      <category>videogames</category>
    </item>
    <item>
      <title>Craps Game in Python...it's a project</title>
      <dc:creator>Todd Eddy</dc:creator>
      <pubDate>Fri, 04 Feb 2022 23:15:14 +0000</pubDate>
      <link>https://dev.to/todd_eddy_827bd304c67874a/craps-game-in-pythonits-a-project-1n31</link>
      <guid>https://dev.to/todd_eddy_827bd304c67874a/craps-game-in-pythonits-a-project-1n31</guid>
      <description>&lt;p&gt;Learning how to program, code, whatever you call it. So I made this game as my final project in Codecademy's CS101 course. Let me know what you think but go easy, eh? Still a beginner.&lt;/p&gt;

&lt;p&gt;I built this with 3 classes, Gambler for the players, CrapsTable for the table itself, and then one class to contain the game itself. The game is limited in the types of bets you can make, but you can play the come line, pass line and place bets on the available numbers. Removing bet functionality has started but has not been implemented yet. You can see it within the CrapsTable class in the code.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--mGuj4mcW--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/432s8eau384fopnnaxro.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--mGuj4mcW--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/432s8eau384fopnnaxro.png" alt="Image description" width="880" height="786"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://github.com/ToddlesMods/CS101_Final"&gt;https://github.com/ToddlesMods/CS101_Final&lt;/a&gt;&lt;br&gt;
&lt;em&gt;if you want access to the repository let me know, code pasted below:&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;from random import randint&lt;br&gt;
import time&lt;/p&gt;

&lt;h1&gt;
  
  
  CLASSES:
&lt;/h1&gt;

&lt;h1&gt;
  
  
  Gambler class for players
&lt;/h1&gt;

&lt;p&gt;class Gambler(object):&lt;br&gt;
    def &lt;strong&gt;init&lt;/strong&gt;(self,name,cash):&lt;br&gt;
        self.name = str(name)&lt;br&gt;
        self.cash = float(cash)&lt;br&gt;
        self.bets = {"COME LINE":0.00,"PASS LINE":0.00,"4":0.00,"5":0.00,"6":0.00,"8":0.00,"9":0.00,"10":0.00}&lt;/p&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;#When Gambler requested, output: PLAYER has $CASH&lt;br&gt;
def &lt;strong&gt;repr&lt;/strong&gt;(self):&lt;br&gt;
    return '%s has $%.2f' % (self.name, self.cash)
&lt;h1&gt;
  
  
  Method to get simulate dice roll and provide the sum of the two dice
&lt;/h1&gt;

&lt;p&gt;def rollDice(self):&lt;br&gt;
    dice = randint(1,6) + randint(1,6)&lt;br&gt;
    return dice&lt;/p&gt;
&lt;h1&gt;
  
  
  Method to allow player to place a bet, if they try to place a bet for more than they have, returns a statement letting them know
&lt;/h1&gt;
&lt;h1&gt;
  
  
  and letting them know how much cash they have. Does not place any bet if attempted bet higher than cash.
&lt;/h1&gt;

&lt;p&gt;def placeBet(self,InBet,amount):&lt;br&gt;
    bet = InBet.upper()&lt;br&gt;
    if self.cash &amp;lt; amount:&lt;br&gt;
        print("You don't have enough cash for that bet, you have $%.2f" %(self.cash))&lt;br&gt;
        return&lt;br&gt;
    else:&lt;br&gt;
        self.cash -= amount&lt;br&gt;
        self.bets[bet] += amount&lt;br&gt;
        return&lt;/p&gt;
&lt;h1&gt;
  
  
  Method to allow player to remove bet. If the requested amount to close is greater than the bet, bet is closed out for however much
&lt;/h1&gt;
&lt;h1&gt;
  
  
  was placed.
&lt;/h1&gt;

&lt;p&gt;def removeBet(self,InBet,amount):&lt;br&gt;
    bet = InBet.upper()&lt;br&gt;
    if amount &amp;gt; self.bets[bet]:&lt;br&gt;
        print("You didn't bet that much. Closing out your bet worth $%.2f" %(self.bets[bet]))&lt;br&gt;
        self.cash += self.bets[bet]&lt;br&gt;
        self.bets[bet] = 0.00&lt;br&gt;
        return&lt;br&gt;
    else:&lt;br&gt;
        self.cash += amount&lt;br&gt;
        self.bets[bet] -= amount&lt;br&gt;
        return&lt;br&gt;
&lt;/p&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;h1&gt;
&lt;br&gt;
  &lt;br&gt;
  &lt;br&gt;
  Table class for play&lt;br&gt;
&lt;/h1&gt;

&lt;p&gt;class CrapsTable(object):&lt;/p&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;def &lt;strong&gt;init&lt;/strong&gt;(self,players):&lt;br&gt;
    self.players = players&lt;br&gt;
    self.player_count = len(self.players)&lt;br&gt;
    self.roller = self.players[0]&lt;br&gt;
    self.roll_count = 0&lt;br&gt;
    self.payout = {"COME LINE":2,"PASS LINE":2,"4":1.8,"5":1.4,"6":1.16,"8":1.16,"9":1.4,"10":1.8}&lt;br&gt;
    self.bet_names = ["COME LINE","PASS LINE","4","5","6","8","9","10"]&lt;br&gt;
    self.last_roll = 0&lt;br&gt;
    self.come_line_win = 0
&lt;h1&gt;
  
  
  Requests roll from player, forces player to roll really, no way to leave until you roll
&lt;/h1&gt;

&lt;p&gt;def requestRoll(self):&lt;br&gt;
    answer = input(self.roller.name + ", are you ready to roll?! Yes or No: ")&lt;br&gt;
    if answer.upper() in ["YES","Y"]:&lt;br&gt;
        self.last_roll = self.roller.rollDice()&lt;br&gt;
        print("ROLLING!!!")&lt;br&gt;
        time.sleep(3)&lt;br&gt;
        print("You rolled a " + str(self.last_roll))&lt;br&gt;
        self.roll_count += 1&lt;br&gt;
        return&lt;br&gt;
    elif answer.upper() in ["NO","N"]:&lt;br&gt;
        print("Come on! We have a game to play!")&lt;br&gt;
        self.requestRoll()&lt;br&gt;
        return&lt;br&gt;
    else:&lt;br&gt;
        self.requestRoll()&lt;br&gt;
        return&lt;/p&gt;

&lt;p&gt;def placeBets(self):&lt;br&gt;
    #allow players to place bets&lt;br&gt;
    for player in self.players:&lt;br&gt;
        print("Hello, %s. You currently have $%.2f. Here are your current bets:" %(player.name,player.cash))&lt;br&gt;
        for bet in player.bets:&lt;br&gt;
            print("%s: $%.2f" %(bet,player.bets[bet]))&lt;br&gt;
        desire = input("Would you like to place a bet? Yes or No?: ")&lt;br&gt;
        while True:&lt;br&gt;
            if desire.upper() not in ["YES","Y"]:&lt;br&gt;
                print("Ok...NEXT!\n")&lt;br&gt;
                break&lt;br&gt;
            else:&lt;br&gt;
                newBet = input("What bet would you like to place? (Use the names from the list): ").upper()&lt;br&gt;
                if newBet not in self.bet_names:&lt;br&gt;
                    print("Er...that's not a bet")&lt;br&gt;
                else:&lt;br&gt;
                    while True: &lt;br&gt;
                        newAmountTxt = input("How much would you like to bet?: ")&lt;br&gt;
                        if newAmountTxt.isnumeric():&lt;br&gt;
                            newAmount = float(newAmountTxt)&lt;br&gt;
                            player.placeBet(newBet,newAmount)&lt;br&gt;
                            break&lt;br&gt;
                print("Bet added on %s for $%s" %(newBet,newAmountTxt))&lt;br&gt;
                newBet = ""&lt;br&gt;
                newAmountTxt = ""&lt;br&gt;
                newAmount = 0.0&lt;br&gt;
                time.sleep(1)&lt;br&gt;
                desire = input("Would you like place another bet? Yes or No?: ")&lt;br&gt;
            time.sleep(2)&lt;br&gt;
    return&lt;/p&gt;

&lt;p&gt;def resolveBets(self,type):&lt;br&gt;
    #resolve bets here&lt;br&gt;
    if type == "First Roll Win":&lt;br&gt;
        #payout if you need to payout&lt;br&gt;
        for player in self.players:&lt;br&gt;
            player.cash += (player.bets["COME LINE"] * self.payout["COME LINE"])&lt;br&gt;
            player.bets["COME LINE"] = 0&lt;br&gt;
            player.bets["PASS LINE"] = 0&lt;br&gt;
            self.roll_count = 0&lt;br&gt;
    elif type == "First Roll Loss":&lt;br&gt;
        #payout if you need to payout&lt;br&gt;
        for player in self.players:&lt;br&gt;
            player.cash += (player.bets["PASS LINE"] * self.payout["PASS LINE"])&lt;br&gt;
            player.bets["COME LINE"] = 0&lt;br&gt;
            player.bets["PASS LINE"] = 0&lt;br&gt;
            self.roll_count = 0&lt;br&gt;
    else:&lt;br&gt;
        roll = str(self.last_roll).upper()&lt;br&gt;
        if roll in self.payout.keys():&lt;br&gt;
            for player in self.players:&lt;br&gt;
                player.cash += (player.bets[roll] * self.payout[roll])&lt;br&gt;
    return&lt;/p&gt;

&lt;p&gt;def removePlayer(self,player_name):&lt;br&gt;
    print("So long, %s" %(player_name))&lt;br&gt;
    index = 0&lt;br&gt;
    for index in range(0,len(self.players)-1):&lt;br&gt;
        if self.players[index].name == player_name:&lt;br&gt;
            del self.players[index]&lt;br&gt;
            return&lt;br&gt;
    return&lt;/p&gt;

&lt;p&gt;def addPlayer(self,player_name,cash):&lt;br&gt;
    print("Welcome, %s!" %(player_name))&lt;br&gt;
    if not cash.isnumeric():&lt;br&gt;
        while True:&lt;br&gt;
            print("That's not an amount of cash!")&lt;br&gt;
            cash = input("Give us a real amount: ")&lt;br&gt;
            if cash.isnumeric():&lt;br&gt;
                break&lt;br&gt;
    gamblerNew = Gambler(player_name, int(cash))&lt;br&gt;
    self.players.append()&lt;br&gt;
    return&lt;/p&gt;

&lt;p&gt;def resolveRoll(self):&lt;br&gt;
    dice = self.last_roll&lt;br&gt;
    count = self.roll_count&lt;br&gt;
    if count &amp;lt; 2:&lt;br&gt;
        #This is the first roll and is handled uniquely&lt;br&gt;
        if dice == 7 or dice == 11:&lt;br&gt;
            print("WINNER!")&lt;br&gt;
            self.resolveBets("First Roll Win")&lt;br&gt;
        elif dice == 2 or dice == 12 or dice == 3:&lt;br&gt;
            print("Sorry, craps!")&lt;br&gt;
            self.resolveBets("First Roll Loss")&lt;br&gt;
        else:&lt;br&gt;
            print("Here we go! Waiting for a " + str(dice) + "!")&lt;br&gt;
            self.come_line_win = dice&lt;br&gt;
            self.resolveBets("Standard")&lt;br&gt;
        return&lt;br&gt;
    else:&lt;br&gt;
        if dice == 7:&lt;br&gt;
            print ("Sorry! There's always next time. New roller!")&lt;br&gt;
            self.roll_count = 0&lt;br&gt;
            self.roller = self.players[(self.players.index(self.roller)+1)%self.player_count]&lt;br&gt;
            for player in self.players:&lt;br&gt;
                for bet in player.bets:&lt;br&gt;
                    bet = 0&lt;br&gt;
        else:&lt;br&gt;
            print("Let's keep it going! Payouts!")&lt;br&gt;
            if dice == self.come_line_win:&lt;br&gt;
                print("Big win! Let's start again")&lt;br&gt;
                self.resolveBets("Standard")&lt;br&gt;
                self.resolveBets("First Roll Win")&lt;br&gt;
                self.roll_count = 0&lt;br&gt;
        self.resolveBets("Standard")&lt;br&gt;
        return&lt;br&gt;
&lt;/p&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;h1&gt;
&lt;br&gt;
  &lt;br&gt;
  &lt;br&gt;
  Game Class to get the game rolling&lt;br&gt;
&lt;/h1&gt;

&lt;p&gt;class Game(object):&lt;br&gt;
    player_list = []&lt;br&gt;
    player_count = 0&lt;/p&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;def &lt;strong&gt;init&lt;/strong&gt;(self):&lt;br&gt;
    self.gather_players()&lt;br&gt;
    self.start_game()

&lt;p&gt;def gather_players(self):&lt;br&gt;
    print("Welcome to the Casino! Let's play craps!!!")&lt;br&gt;
    firstPlayer = input("Let's get started!\nWho is our first player?: ")&lt;br&gt;
    firstAmounttxt = input("How much money are you starting with?: ")&lt;br&gt;
    while True:&lt;br&gt;
        if firstAmounttxt.isnumeric():&lt;br&gt;
            break&lt;br&gt;
        firstAmounttxt = input("That's doesn't work!\nHow much money are you starting with?: ")&lt;br&gt;
    self.player_list.append(Gambler(firstPlayer,float(firstAmounttxt)))&lt;br&gt;
    self.player_count += 1&lt;br&gt;
    keepRolling = input("Any more players? Yes or No: ")&lt;br&gt;
    while True:&lt;br&gt;
        if keepRolling.upper() not in ["YES","Y"]:&lt;br&gt;
            break&lt;br&gt;
        else:&lt;br&gt;
            playerName = input("Name: ")&lt;br&gt;
            playerCash = input("Starting Money: ")&lt;br&gt;
            while True:&lt;br&gt;
                if playerCash.isnumeric():&lt;br&gt;
                    break&lt;br&gt;
                playerCash = input("That's not right! Starting Money: ")&lt;br&gt;
            self.player_list.append(Gambler(playerName,float(playerCash)))&lt;br&gt;
            self.player_count += 1&lt;br&gt;
        keepRolling = input("Any more players? Yes or No: ")&lt;/p&gt;

&lt;p&gt;def start_game(self):&lt;br&gt;
    print("Here we go!")&lt;br&gt;
    table = CrapsTable(self.player_list)&lt;br&gt;
    while True:&lt;br&gt;
        table.placeBets()&lt;br&gt;
        table.requestRoll()&lt;br&gt;
        table.resolveRoll()&lt;br&gt;
        addPlayers = input("Any new players? Yes or No: ")&lt;br&gt;
        if addPlayers.upper() in ["YES","Y"]:&lt;br&gt;
            pName = input("Who is the new player?: ")&lt;br&gt;
            pCash = input("How much cash are they starting with?: ")&lt;br&gt;
            table.addPlayer(pName,pCash)&lt;br&gt;
            self.player_count += 1&lt;br&gt;
        removePlayers = input ("Any players leaving? Yes or No: ")&lt;br&gt;
        if removePlayers.upper() in ["YES","Y"]:&lt;br&gt;
            pName = input("Who is leaving?: ")&lt;br&gt;
            table.removePlayer(pName)&lt;br&gt;
            self.player_count -= 1&lt;br&gt;
            if self.player_count &amp;lt;= 0:&lt;br&gt;
                print("No more players. Good bye!")&lt;br&gt;
                return&lt;br&gt;
        keepGoing = input("How are we feeling now? Keep going? Yes or No: ").upper()&lt;br&gt;
        if keepGoing in ["NO","N"]:&lt;br&gt;
            print("So long! The Casino is closed!")&lt;br&gt;
            break&lt;br&gt;
        else:&lt;br&gt;
            print("Let's keep going!!!")&lt;br&gt;
&lt;/p&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;h1&gt;
&lt;br&gt;
  &lt;br&gt;
  &lt;br&gt;
  *******&lt;strong&gt;&lt;em&gt;&lt;strong&gt;&lt;em&gt;GAME START&lt;/em&gt;&lt;/strong&gt;&lt;/em&gt;&lt;/strong&gt;***************************&lt;br&gt;
&lt;/h1&gt;

&lt;p&gt;crapsGame = Game()&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>python</category>
      <category>codenewbie</category>
      <category>github</category>
    </item>
  </channel>
</rss>
