Question:
I am making a CardGame hub where you can play all kinds of different card games, and I am starting with making War, and I want it to print some card emojis, but I canโt seem to get it to work.
Repl link:
https://replit.com/@SalladShooter/CardGames
war.py
import json
import random
class War:
def __init__(self, players):
self.players = players
self.hands = {}
self.hand = []
self.cards = {
2: "2", 3: "3", 4: "4", 5: "5",
6: "6", 7: "7", 8: "8", 9: "9",
10: "10", 11: "J", 12: "Q", 13: "K", 14: "A",
"๐": 2, "๐": 3, "๐": 4, "๐
": 5,
"๐": 6, "๐": 7, "๐": 8, "๐": 9,
"๐": 10, "๐": "J", "๐": "Q", "๐": "K", "๐": "A"
}
self.face_cards = {"J": 11, "Q": 12, "K": 13, "A": 14}
self.cards_per_player = int(len(self.cards) / self.players - len(self.hand))
def setup_game(self):
self.hands = {}
for player in range(1, self.players + 1):
self.hand = []
for i in range(self.cards_per_player):
card_idx = random.randint(2, 14)
card = self.cards[card_idx]
self.hand.append(card)
self.hands[f"Player{player}"] = self.hand
with open("hands.json", "w") as outfile:
json.dump(self.hands, outfile)
def start_game(self):
with open("hands.json") as json_file:
data = json.load(json_file)
winners = []
max_card = 0
for player in data:
cards = data[player]
if cards[0] in self.face_cards:
drawn_card = self.face_cards[cards[0]]
elif cards[0] in self.cards:
drawn_card = self.cards[cards[0]]
else:
drawn_card = int(cards[0])
print(f"{player} drew: {self.cards[drawn_card]}")
if drawn_card > max_card:
max_card = drawn_card
winners = [player]
elif drawn_card == max_card:
winners.append(player)
if len(winners) > 1:
print(f"War initiated between players: {', '.join(winners)}")
while len(set(data[player][0] for player in winners)) == 1:
for player in winners:
drawn_card = data[player].pop(0)
if data[player]:
if drawn_card in self.face_cards:
new_card = self.face_cards[drawn_card]
elif drawn_card in self.cards:
new_card = self.cards[drawn_card]
else:
new_card = int(drawn_card)
print(f"{player} drew: {self.cards[new_card]}")
if new_card > max_card:
winners = [player]
max_card = new_card
elif new_card == max_card:
winners.append(player)
else:
break
for player in winners:
self.hands[player].extend(data[player])
print(f"Winner: {', '.join(winners)}")
main.py
import war
war = war.War(2)
war.setup_game()
war.start_game()
Example hands.json
{"Player1": ["J", "7", "6", "10", "5", "2", "7", "J", "6", "K", "Q", "A", "2"], "Player2": ["3", "9", "J", "9", "K", "J", "7", "2", "Q", "Q", "9", "10", "K"]}