# Copyright CompuScholar, Inc.

# Do not distribute or post in any public or private venue.

# Adyant

import random

# given an input list of cards, shuffle them and return a new shuffled list
def shuffle(deck):
numCards = len(deck)
for i in range(0, numCards):
rand_index = random.randrange(0, numCards)
temp = deck[rand_index]
deck[rand_index] = deck[i]
deck[i] = temp
return deck

# ensure the human player picks a valid spade from the remaining cards in hand
def p1_algorithm(p1_spades):
p1_bid = 0
while not (p1_bid in p1_spades):
p1_bid = int(input("Enter player 1 bid: "))
return p1_bid

# given the complete state of the game, this AI algorithm will make a choice
# for the computer player and return the resulting selection.
def p2_algorithm(middle_cards,diamonds,p1_spades,p2_clubs):
# this simple algorithm just makes a random selection from the available cards


index = random.randrange(0, len(p2_clubs))
p2_selection = p2_clubs[index]
return p2_selection

def play_round(diamonds, p1_spades, p2_clubs, p1_capture, p2_capture, middle_cards):
middle_card = diamonds.pop(0);
middle_cards.append(middle_card);
print(str.format("Middle card(s): {0}", str(middle_cards)));
print(str.format(" Player 1 available: {0}", str(p1_spades)));
player1_bid = p1_algorithm(p1_spades);
p1_spades.remove(player1_bid);
player2_bid = p2_algorithm(middle_cards,diamonds,p1_spades,p2_clubs);
p2_clubs.remove(player2_bid);
print(str.format(" Player 2 bid: {0}", str(player2_bid)));
if (player1_bid > player2_bid):
while len(middle_cards) > 0:
value = middle_cards.pop(0);
p1_capture.append(value);
middle_cards.clear();
print(str.format(" Player 1 wins bid, has captured {0}", str(p1_capture)));

if (player2_bid > player1_bid):
while len(middle_cards) > 0:
value = middle_cards.pop(0);
p2_capture.append(value);
middle_cards.clear();
print(str.format(" Player 2 wins bid, has captured {0}", str(p2_capture)));

if (player2_bid == player1_bid):
print(" Tie bid - middle card remains");
return

def determine_winner(p1_capture, p2_capture):
print("===GAME OVER===")
print("Player 1 captured: X" + str(p1_capture));
print("Player 2 captured: X" + str(p2_capture));
p1_score = 0
while len(p1_capture) > 0:
p1_score = p1_score + p1_capture.pop(0)
p2_score = 0
while len(p2_capture) > 0:
p2_score = p2_score + p2_capture.pop(0)
print("Player 1 scored " + p1_score, "Player 2 scored " + p2_score)
if (p1_score > p2_score):
print("PLAYER 1 WINNER");
if (p2_score > p1_score):
print("PLAYER 2 WINNER");
if (p1_score == p2_score):
print("TIE GAME");

# MAIN PROGRAM LOGIC
# NO STUDENT CHANGES BELOW THIS POINT

# randomize random number generator with a known seed for repeatability
seed = int(input("Enter random seed: "))
random.seed(seed)

# initialize 3 hands, each with cards 2 - 10
diamonds = [2,3,4,5,6,7,8,9,10]
p1_spades = [2,3,4,5,6,7,8,9,10]
p2_clubs = [2,3,4,5,6,7,8,9,10]

# initialize empty lists of cards that each player captures or that are in the middle
p1_capture = []
p2_capture = []
middle_cards = []

# shuffle the deck of diamonds
diamonds = shuffle(diamonds)

# game continues while diamonds are left
while len(diamonds) > 0:
play_round(diamonds, p1_spades, p2_clubs, p1_capture, p2_capture, middle_cards)

# all diamonds are gone, so game is over - time to determine winner
determine_winner(p1_capture, p2_capture)

Fix this code

To fix this code, we can make the following changes:

1. Fix the print statements in the `determine_winner` function. Instead of concatenating strings with integers, convert the integers to strings before concatenation.

2. Update the logic in the `determine_winner` function to properly compare the scores of Player 1 and Player 2.

Here is the updated `determine_winner` function:

```python
def determine_winner(p1_capture, p2_capture):
print("===GAME OVER===")
print("Player 1 captured: " + str(p1_capture))
print("Player 2 captured: " + str(p2_capture))

p1_score = sum(p1_capture)
p2_score = sum(p2_capture)

print("Player 1 scored " + str(p1_score))
print("Player 2 scored " + str(p2_score))

if p1_score > p2_score:
print("PLAYER 1 WINS")
elif p2_score > p1_score:
print("PLAYER 2 WINS")
else:
print("IT'S A TIE")
```

This should fix the issues in the current code implementation.