Thursday, July 18, 2024

Card Shuffling

In this one, the user sets the number of players and cards per player. Then, it shuffles and lists cards dealt, as well as which cards each player is dealt. In the Clue program, it was suggested I use "random.variable" to simplify things, but I don't see how to isolate the position of each card drawn in the array. So, instead of removing from a set list, I created the array and then listed. I would like to try this again, where each card dealt out is removed from the 52 card list, and instead of listing based on position, it is more real with place holders. To do this, I need to find out how to deal with an indeterminate number of players so I can assign a list/array to each player. Then, it is not needed to base things on position.

Can be tested at https://www.programiz.com/python-programming/online-compiler/ (Remove the 3 lines of "stuff" on the left on their site, or it might not run properly. Also, the site seems to time out, but it's the only one I see that can run this one.)

import random

a=0
card_progress_num = 51
cards = ["Ace of Clubs", "Ace of Diamonds", "Ace of Hearts", "Ace of Spades", "2 of Clubs", "2 of Diamonds", "2 of Hearts", "2 of Spades", "3 of Clubs", "3 of Diamonds", "3 of Hearts", "3 of Spades", "4 of Clubs", "4 of Diamonds", "4 of Hearts", "4 of Spades", "5 of Clubs", "5 of Diamonds", "5 of Hearts", "5 of Spades", "6 of Clubs", "6 of Diamonds", "6 of Hearts", "6 of Spades", "7 of Clubs", "7 of Diamonds", "7 of Hearts", "7 of Spades", "8 of Clubs", "8 of Diamonds", "8 of Hearts", "8 of Spades", "9 of Clubs", "9 of Diamonds", "9 of Hearts", "9 of Spades", "10 of Clubs", "10 of Diamonds", "10 of Hearts", "10 of Spades","Jack of Clubs", "Jack of Diamonds", "Jack of Hearts", "Jack of Spades", "Queen of Clubs", "Queen of Diamonds", "Queen of Hearts", "Queen of Spades", "King of Clubs", "King of Diamonds", "King of Hearts", "King of Spades"]   
player_num = int(input("How many players? "))
card_num = int(input("How many cards per player? "))
cards_dealt_num = player_num * card_num
cards_dealt = []
print ("\n")


while a < (cards_dealt_num):

#random.choice HOW DO YOU ISOLATE THE POSITION OF THE CARD TO REMOVE IT?
#cards = random.choice (("Ace of Clubs", "Ace of Diamonds", "Ace of Hearts", "Ace of Spades", "2 of Clubs", "2 of Diamonds", "2 of Hearts", "2 of Spades", "3 of Clubs", "3 of Diamonds", "3 of Hearts", "3 of Spades", "4 of Clubs", "4 of Diamonds", "4 of Hearts", "4 of Spades", "5 of Clubs", "5 of Diamonds", "5 of Hearts", "5 of Spades", "6 of Clubs", "6 of Diamonds", "6 of Hearts", "6 of Spades", "7 of Clubs", "7 of Diamonds", "7 of Hearts", "7 of Spades", "8 of Clubs", "8 of Diamonds", "8 of Hearts", "8 of Spades", "9 of Clubs", "9 of Diamonds", "9 of Hearts", "9 of Spades", "10 of Clubs", "10 of Diamonds", "10 of Hearts", "10 of Spades","Jack of Clubs", "Jack of Diamonds", "Jack of Hearts", "Jack of Spades", "Queen of Clubs", "Queen of Diamonds", "Queen of Hearts", "Queen of Spades", "King of Clubs", "King of Diamonds", "King of Hearts", "King of Spades"))
#print(cards)
#a = a+1
    card_selection = (random.randint(0,card_progress_num))
    cards_dealt.append(cards[card_selection])
    print (card_selection, " - ", cards[card_selection])
    cards.pop(card_selection)
    card_progress_num = card_progress_num - 1
    a=a+1

print ("\n")

for x in range(player_num):     
    print ("Player ", x+1, "has:")
    for y in range(card_num):
        print (cards_dealt[(x)])
        x=x+player_num
    print ("\n")
       

 

No comments:

Post a Comment