Skip to content

Black Jack Game doesnt run but no errors also #4

Open
@malteserssss

Description

@malteserssss

import pygame
import random

Initialize Pygame

pygame.init()

Define colors

BLACK = (0, 0, 0)
WHITE = (255, 255, 255)
GREEN = (0, 128, 0)

Set the screen dimensions

SCREEN_WIDTH = 800
SCREEN_HEIGHT = 600

Create the screen

screen = pygame.display.set_mode((SCREEN_WIDTH, SCREEN_HEIGHT))
pygame.display.set_caption("Blackjack")

Set the font

font = pygame.font.Font(None, 36)

Define the ranks, suits, and values of the cards

ranks = ['A', '2', '3', '4', '5', '6', '7', '8', '9', '10', 'J', 'Q', 'K']
suits = ['Hearts', 'Diamonds', 'Clubs', 'Spades']
values = {'A': 11, '2': 2, '3': 3, '4': 4, '5': 5, '6': 6, '7': 7, '8': 8, '9': 9, '10': 10, 'J': 10, 'Q': 10, 'K': 10}

Load card images

card_images = {}
for suit in suits:
for rank in ranks:
card_name = rank + ' of ' + suit
image_path = f"images/{card_name}.png"
card_images[card_name] = pygame.image.load(image_path)

class Card:
def init(self, rank, suit):
self.rank = rank
self.suit = suit

def __str__(self):
    return self.rank + ' of ' + self.suit

class Deck:
def init(self):
self.deck = []
for suit in suits:
for rank in ranks:
self.deck.append(Card(rank, suit))

def shuffle(self):
    random.shuffle(self.deck)

def deal(self):
    return self.deck.pop()

class Hand:
def init(self):
self.cards = []
self.value = 0
self.aces = 0

def add_card(self, card):
    self.cards.append(card)
    self.value += values[card.rank]
    if card.rank == 'A':
        self.aces += 1

def adjust_for_ace(self):
    while self.value > 21 and self.aces > 0:
        self.value -= 10
        self.aces -= 1

class Chips:
def init(self):
self.total = 100
self.bet = 0

def win_bet(self):
    self.total += self.bet

def lose_bet(self):
    self.total -= self.bet

class BlackjackGame:
def main(self):
pass

class BlackjackGame:
def draw_text(self, text, color, x, y):
text_surface = font.render(text, True, color)
screen.blit(text_surface, (x, y))

def draw_card(self, card, x, y):
    card_name = str(card)
    card_image = card_images[card_name]
    screen.blit(card_image, (x, y))

def draw_table(self):
    screen.fill(GREEN)

    # Draw player
    x = 50
    y = 200
    for card in self.dealer_hand.cards:
        self.draw_card(card, x, y)
        x += 100

    # Draw player's chips total
    self.draw_text("Chips: " + str(self.chips.total), WHITE, 50, 50)

    # Update the display
    pygame.display.flip()

def main(self):
    print("Welcome to Blackjack!")

    while True:
        self.deck.shuffle()

        self.player_hand = Hand()
        self.dealer_hand = Hand()

        self.player_hand.add_card(self.deck.deal())
        self.player_hand.add_card(self.deck.deal())
        self.dealer_hand.add_card(self.deck.deal())
        self.dealer_hand.add_card(self.deck.deal())

        # Take bets
        self.take_bet()

        # Show initial cards (one dealer card hidden)
        self.show_some()

        # Start the game
        self.playing = True

        # Player's turn
        self.hit_or_stand()

        # Show all cards (including dealer's)
        self.show_all()

        # Check if player busts
        if self.player_hand.value > 21:
            self.player_busts()
            if not self.play_again():
                break
            else:
                continue

        # Dealer's turn (automated)
        while self.dealer_hand.value < 17:
            self.hit(self.dealer_hand)

        # Show all cards
        self.show_all()

        # Check if dealer busts
        if self.dealer_hand.value > 21:
            self.dealer_busts()
        elif self.dealer_hand.value > self.player_hand.value:
            self.dealer_wins()
        elif self.dealer_hand.value < self.player_hand.value:
            self.player_wins()
        else:
            self.push()

        # Play again?
        if not self.play_again():
            break

# Create the game object
game = BlackjackGame()

# Start the game
game.main()

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions