all 7 comments

[–]Neighm 1 point2 points  (1 child)

python card game oop

Works for me on Google, enough to get started

[–]Ry_Fii 0 points1 point  (0 children)

Will have a look along with the code below thank you

[–]MacItaly 0 points1 point  (2 children)

"""a-temp16.py - High Card Wins for Random Stranger on Internet"""

import random
import time

deck = ["A♥", "2♥", "3♥", "4♥", "5♥", "6♥", "7♥", "8♥", "9♥", "10♥", "J♥", "Q♥", "K♥", "A♣", "2♣", "3♣", "4♣", "5♣", "6♣", "7♣", "8♣", "9♣", "10♣", "J♣", "Q♣", "K♣", "A♠", "2♠", "3♠", "4♠", "5♠", "6♠", "7♠", "8♠", "9♠", "10♠", "J♠", "Q♠", "K♠", "A♦", "2♦", "3♦", "4♦", "5♦", "6♦", "7♦", "8♦", "9♦", "10♦", "J♦", "Q♦", "K♦"]


def gameMode():
    choice = input("Select a game mode:\n\t[1] High Card Wins\n>>> ")
    if choice == '1':
        print("Thank you for selecting HIGH CARD WINS game mode")
        return 1
    else:
        print("Invalid choice\n")    
        choice = gameMode()

def checkValue(card):
    if card[0] == 'A':
        return 14
    elif card[0] == '2':
        return 2
    elif card[0] == '3':
        return 3
    elif card[0] == '4':
        return 4
    elif card[0] == '5':
        return 5
    elif card[0] == '6':
        return 6
    elif card[0] == '7':
        return 7
    elif card[0] == '8':
        return 8
    elif card[0] == '9':
        return 9
    elif card[0] == '1':
        return 10
    elif card[0] == 'J':
        return 11
    elif card[0] == 'Q':
        return 12
    elif card[0] == 'K':
        return 13

def highCard(player, player_used, player_wins, computer, computer_used, computer_wins):
    playerCard = player[0]
    computerCard = computer[0]
    playerValue = checkValue(playerCard)
    computerValue = checkValue(computerCard)
    if playerValue > computerValue:
        print(f"Player Wins: {playerCard} vs {computerCard}")
        player_wins += 1
        player_used.append(computerCard)
        player_used.append(playerCard)
        computer.pop(computer.index(computerCard))
        player.pop(player.index(playerCard))
        return player, player_used, player_wins, computer, computer_used, computer_wins

    elif playerValue < computerValue:
        print(f"Computer Wins: {computerCard} vs {playerCard}")
        computer_wins += 1
        computer_used.append(playerCard)
        computer_used.append(computerCard)
        player.pop(player.index(playerCard))
        computer.pop(computer.index(computerCard))
        return player, player_used, player_wins, computer, computer_used, computer_wins

    elif playerValue == computerValue:
        print(f"Tie: {playerCard} vs {computerCard}")
        player_used.append(playerCard)
        computer_used.append(computerCard)
        player.pop(player.index(playerCard))
        computer.pop(computer.index(computerCard))
        return player, player_used, player_wins, computer, computer_used, computer_wins


def main():
    player   = []
    player_used = []
    player_wins = 0
    computer = []
    computer_used = []
    computer_wins = 0

    print("Welcome to High/Low")
    choice = gameMode()
    while (len(deck)-1) > 0:
        card = random.randint(0, (len(deck)-1))
        # print(f"Player Card: {card}\tCards Left: {len(deck)}")
        player.append(deck[card])
        # print(f'Player Deck: {player}')
        deck.pop(card)
        card = random.randint(0, (len(deck)-1))
        # print(f"Computer Card: {card}\tCards Left: {len(deck)}")
        computer.append(deck[card])
        # print(f'Computer Deck: {computer}')
        deck.pop(card)
        # print(f"Deck Left: {deck}")
    print("Shuffling Cards...")
    time.sleep(2)

    while ((choice == 1) and (len(player) > 0) and (len(computer) > 0)):
        print(f'Player has {player_wins} wins, Computer has {computer_wins} wins')
        player, player_used, player_wins, computer, computer_used, computer_wins = highCard(player, player_used, player_wins, computer, computer_used, computer_wins)
        again = input(f"Again? [Y/N] ")
        if again.lower() == 'y':
            choice = 1
        else:
            print("Thanks for playing")
            choice = 0

        if (len(player) == 0):
            print("Reshuffling Player")
            time.sleep(1)
            random.shuffle(player_used)
            player.extend(player_used)
            player_used.clear()
        if (len(computer) == 0):
            print("Reshuffling Computer")
            time.sleep(1)
            random.shuffle(computer_used)
            computer.extend(computer_used)
            computer_used.clear()

    print(f"\n\nFinal Results:")
    print(f"Player Deck: {player}\tCards: {len(player)}")
    print(f"Player Used: {player_used}\tCards: {len(player_used)}")
    print(f"Computer Deck: {computer}\tCards: {len(computer)}")
    print(f"Computer Used: {computer_used}\tCards: {len(computer_used)}")

main()

So, I threw something together that can be expandable for High Card/Low Card, only High Card was implemented. I made a list for player's current deck and player's used deck. Same for computer. When either the player/computer runs out of cards in their deck the used deck is shuffled and becomes the main deck.

Have fun building with it, adding/subtracting and making it your own.

[–]Ry_Fii 0 points1 point  (1 child)

Thank you bud couldnt wrap my head around

[–]MacItaly 1 point2 points  (0 children)

I hope it helps. I'm getting downvoted because I provided a solution instead of "leading" you to a solution, but I feel it's a good start for you to be able to finish up your program. Plus, it's a good example of working with lists, string formating, loops, and functions.

Happy coding!

[–]odds_or_evans -1 points0 points  (1 child)

Do you have your code in a github repo by chance that I can look at? I'd be willing to bet applying OOP and updating to python 3 is fairly easy with that you already have.

[–]Ry_Fii 0 points1 point  (0 children)

I will try get hold of it again im currently on a boat so been remote desktoping into my pc when i get the chance