Ejemplo n.º 1
0
#@author Christian Sfeir

pygame.init()
cardBack = pygame.image.load(os.path.join('png', 'cardBack.png'))
screen = pygame.display.set_mode((1300, 900))
pygame.display.set_caption('Black Jack')
clock = pygame.time.Clock()
myfont = pygame.font.SysFont('monospace', 70)
smallFont = pygame.font.SysFont('monospace', 30)
bg = pygame.image.load(os.path.join('back', 'background.jfif'))
screen.fill((0, 128, 0))
clock = pygame.time.Clock()
deck = casino.cards()
cardList = deck.getCards()
d = casino.dealer(cardList)
p = casino.player(cardList)

pygame.display.flip()

onTable = []
topCards = []

cardImg = [None]
two_clubs = pygame.image.load(os.path.join('png', '2_of_clubs.png'))
two_diamonds = pygame.image.load(os.path.join('png', '2_of_diamonds.png'))
two_hearts = pygame.image.load(os.path.join('png', '2_of_hearts.png'))
two_spades = pygame.image.load(os.path.join('png', '2_of_spades.png'))

three_clubs = pygame.image.load(os.path.join('png', '3_of_clubs.png'))
three_spades = pygame.image.load(os.path.join('png', '3_of_spades.png'))
three_diamonds = pygame.image.load(os.path.join('png', '3_of_diamonds.png'))
Ejemplo n.º 2
0
def main():
    # DRAWING AND INIT
    # VARIABLES
    global d
    global p
    global playerChips
    deck = casino.cards()
    cardList = deck.getCards()
    d = casino.dealer(cardList)
    p = casino.player(cardList)
    playerCards = p.deal()
    dealerCards = d.deal()
    allowHit = False
    playerReveal = False
    playerTurn = True
    playerStay = False
    onTable[2] = [cardImage(dealerCards[0][0], dealerCards[0][1]), 675, 50]
    onTable[3] = [cardBack, 500, 50]
    while True:

        pygame.display.update()
        clock.tick(60)
        # PLAYER DECISION
        if playerReveal == False:
            drawCard(cardBack, 675, 650)
            drawCard(cardBack, 500, 650)
            label = smallFont.render('Press space to reveal cards', 1,
                                     (255, 255, 255))
            screen.blit(label, (430, 850))
            ev = pygame.event.poll()
            if ev.type == pygame.QUIT:
                pygame.quit()
            if ev.type == pygame.KEYDOWN:
                if ev.key == pygame.K_SPACE:
                    # Show cards
                    playerReveal = True
                    allowHit = True
                    drawCard(cardImage(playerCards[0][0], playerCards[0][1]),
                             675, 650)
                    drawCard(cardImage(playerCards[1][0], playerCards[1][1]),
                             500, 650)
                    onTable[0] = [
                        cardImage(playerCards[0][0], playerCards[0][1]), 675,
                        650
                    ]
                    onTable[1] = [
                        cardImage(playerCards[1][0], playerCards[1][1]), 500,
                        650
                    ]
                    pygame.draw.rect(screen, (0, 128, 0), (429, 849, 550, 100))
            pygame.display.update()
        else:
            label = smallFont.render('Press space to hit and tab to stay', 1,
                                     (255, 255, 255))
            screen.blit(label, (350, 850))
            updateScore()
            pygame.display.update()

            ev = pygame.event.poll()
            if ev.type == pygame.QUIT:
                pygame.quit()
            if ev.type == pygame.KEYDOWN:
                if ev.key == pygame.K_TAB:
                    playerStay = True
                    updateScore(True)
                if ev.key == pygame.K_SPACE:

                    if allowHit:
                        hitCard = p.hit()
                        if len(p.cards) == 3:
                            dealplayerHit(cardImage(hitCard[0], hitCard[1]),
                                          325, 650)
                            drawCard(cardImage(hitCard[0], hitCard[1]), 325,
                                     650)
                            updateScore()
                        elif len(p.cards) == 4:
                            dealplayerHit(cardImage(hitCard[0], hitCard[1]),
                                          850, 650)
                            drawCard(cardImage(hitCard[0], hitCard[1]), 850,
                                     650)
                            updateScore()
                        elif len(p.cards) == 5:
                            dealplayerHit(cardImage(hitCard[0], hitCard[1]),
                                          150, 650)
                            drawCard(cardImage(hitCard[0], hitCard[1]), 150,
                                     650)
                            updateScore()
                        elif len(p.cards) == 6:
                            dealplayerHit(cardImage(hitCard[0], hitCard[1]),
                                          1025, 650)
                            drawCard(cardImage(hitCard[0], hitCard[1]), 1025,
                                     650)
                            updateScore()
                    allowHit = True
                    pygame.display.update()

            if p.getScore() > 21:
                label = myfont.render('You Went Over 21 :(', 1,
                                      (255, 255, 255))
                screen.blit(label, (300, 430))
                allowHit = False
                updateChips()
                pygame.display.update()
                time.sleep(1)
                pygame.draw.rect(screen, (0, 128, 0), (0, 640, 1300, 200))
                pygame.draw.rect(screen, (0, 128, 0), (200, 40, 1300, 200))
                pygame.display.update()
                break

            elif p.getScore() == 21 and len(p.cards) == 2:
                allowHit = False
                playerChips += betChips * 3
                label = myfont.render('BLACK JACK!', 1, (255, 255, 255))
                screen.blit(label, (420, 430))
                updateChips()
                pygame.display.update()
                time.sleep(1)
                pygame.draw.rect(screen, (0, 128, 0), (0, 640, 1300, 200))
                pygame.draw.rect(screen, (0, 128, 0), (200, 40, 1300, 200))
                pygame.display.update()
                break

            elif playerStay:
                playerTurn = False
                allowHit = False
                updateScore()
                pygame.display.update()


# ---------------------------------------------------------------------------------------------------------
# DEALER

        if playerTurn == False:
            drawCard(cardImage(dealerCards[1][0], dealerCards[1][1]), 500, 50)
            try:
                ind = onTable.index([cardBack, 500, 50])
                onTable[ind] = [
                    cardImage(dealerCards[1][0], dealerCards[1][1]), 500, 50
                ]
            except:
                pass
            updateScore()
            if len(d.cards) > 2:
                dealplayerHit(cardImage(dealerCards[2][0], dealerCards[2][1]),
                              325, 50)
                drawCard(cardImage(dealerCards[2][0], dealerCards[2][1]), 325,
                         50)
                pygame.display.update()
                time.sleep(0.3)
            if len(d.cards) > 3:
                dealplayerHit(cardImage(dealerCards[3][0], dealerCards[3][1]),
                              850, 50)
                drawCard(cardImage(dealerCards[3][0], dealerCards[3][1]), 850,
                         50)
                pygame.display.update()
                time.sleep(0.3)
            if len(d.cards) > 4:
                dealplayerHit(cardImage(dealerCards[4][0], dealerCards[4][1]),
                              150, 50)
                drawCard(cardImage(dealerCards[4][0], dealerCards[4][1]), 150,
                         50)
                pygame.display.update()
                time.sleep(0.3)
            if len(d.cards) > 5:
                dealplayerHit(cardImage(dealerCards[5][0], dealerCards[5][1]),
                              1025, 50)
                drawCard(cardImage(dealerCards[5][0], dealerCards[5][1]), 1025,
                         50)
                pygame.display.update()
                time.sleep(0.3)
            updateScore(True)

            if d.getScore() > p.getScore():
                if d.getScore() < 22:
                    label = myfont.render('You Lost', 1, (255, 255, 255))
                    screen.blit(label, (510, 430))
                    updateChips()
                    pygame.display.update()
                    break
                else:
                    playerChips += betChips * 2
                    label = myfont.render('Dealer Bust\'s, You Win', 1,
                                          (255, 255, 255))
                    screen.blit(label, (230, 430))
                    updateChips()
                    pygame.display.update()
                    break
            elif d.getScore() < p.getScore():
                playerChips += betChips * 2
                label = myfont.render('Winner!', 1, (255, 255, 255))
                screen.blit(label, (475, 430))
                updateChips()
                pygame.display.update()
                break
            else:
                playerChips += betChips
                label = myfont.render('Tie', 1, (255, 255, 255))
                screen.blit(label, (600, 450))
                updateChips()
                pygame.display.update()
                break
        else:
            drawCard(cardImage(dealerCards[0][0], dealerCards[0][1]), 675, 50)
            drawCard(cardBack, 500, 50)
    time.sleep(1)

    reset()
    restart()
Ejemplo n.º 3
0
def main():
    # рисование и создание
    global d
    global p
    global playerChips
    deck = casino.cards()
    cardList = deck.getCards()
    d = casino.dealer(cardList)
    p = casino.player(cardList)
    playerCards = p.deal()
    dealerCards = d.deal()
    allowHit = False
    playerReveal = False
    playerTurn = True
    playerStay = False
    onTable[2] = [cardImage(dealerCards[0][0], dealerCards[0][1]), 675, 50]
    onTable[3] = [cardBack, 500, 50]
    while True:
        pygame.display.update()
        clock.tick(60)
        # выбор игрока
        if playerReveal == False:
            drawCard(cardBack, 675, 650)
            drawCard(cardBack, 500, 650)
            label = smallFont.render('Открыть карты(пробел)', 1,
                                     (255, 255, 255))
            screen.blit(label, (430, 850))
            ev = pygame.event.poll()
            if ev.type == pygame.QUIT:
                pygame.quit()
            if ev.type == pygame.KEYDOWN:
                if ev.key == pygame.K_SPACE:
                    # показать карты
                    playerReveal = True
                    allowHit = True
                    drawCard(cardImage(playerCards[0][0], playerCards[0][1]),
                             675, 650)
                    drawCard(cardImage(playerCards[1][0], playerCards[1][1]),
                             500, 650)
                    onTable[0] = [
                        cardImage(playerCards[0][0], playerCards[0][1]), 675,
                        650
                    ]
                    onTable[1] = [
                        cardImage(playerCards[1][0], playerCards[1][1]), 500,
                        650
                    ]
                    pygame.draw.rect(screen, (0, 128, 0), (429, 849, 550, 100))
            pygame.display.update()
        else:
            label = smallFont.render('Взять карту(пробел), стоп(таб)', 1,
                                     (255, 255, 255))
            screen.blit(label, (350, 850))
            updateScore()
            pygame.display.update()

            ev = pygame.event.poll()
            if ev.type == pygame.QUIT:
                pygame.quit()
            if ev.type == pygame.KEYDOWN:
                if ev.key == pygame.K_TAB:
                    playerStay = True
                    updateScore(True)
                if ev.key == pygame.K_SPACE:

                    if allowHit:
                        hitCard = p.hit()
                        if len(p.cards) == 3:
                            dealplayerHit(cardImage(hitCard[0], hitCard[1]),
                                          325, 650)
                            drawCard(cardImage(hitCard[0], hitCard[1]), 325,
                                     650)
                            updateScore()
                        elif len(p.cards) == 4:
                            dealplayerHit(cardImage(hitCard[0], hitCard[1]),
                                          850, 650)
                            drawCard(cardImage(hitCard[0], hitCard[1]), 850,
                                     650)
                            updateScore()
                        elif len(p.cards) == 5:
                            dealplayerHit(cardImage(hitCard[0], hitCard[1]),
                                          150, 650)
                            drawCard(cardImage(hitCard[0], hitCard[1]), 150,
                                     650)
                            updateScore()
                        elif len(p.cards) == 6:
                            dealplayerHit(cardImage(hitCard[0], hitCard[1]),
                                          1025, 650)
                            drawCard(cardImage(hitCard[0], hitCard[1]), 1025,
                                     650)
                            updateScore()
                    allowHit = True
                    pygame.display.update()

            if p.getScore() > 21:
                label = myfont.render('Перебор :(', 1, (255, 255, 255))
                screen.blit(label, (300, 430))
                allowHit = False
                updateChips()
                pygame.display.update()
                time.sleep(1)
                pygame.draw.rect(screen, (0, 128, 0), (0, 640, 1300, 200))
                pygame.draw.rect(screen, (0, 128, 0), (200, 40, 1300, 200))
                pygame.display.update()
                break

            elif p.getScore() == 21 and len(p.cards) == 2:
                allowHit = False
                playerChips += betChips * 3
                label = myfont.render('BLACK JACK!', 1, (255, 255, 255))
                screen.blit(label, (420, 430))
                updateChips()
                pygame.display.update()
                time.sleep(1)
                pygame.draw.rect(screen, (0, 128, 0), (0, 640, 1300, 200))
                pygame.draw.rect(screen, (0, 128, 0), (200, 40, 1300, 200))
                pygame.display.update()
                break

            elif playerStay:
                playerTurn = False
                allowHit = False
                updateScore()
                pygame.display.update()
        # Диллер

        if playerTurn == False:
            drawCard(cardImage(dealerCards[1][0], dealerCards[1][1]), 500, 50)
            try:
                ind = onTable.index([cardBack, 500, 50])
                onTable[ind] = [
                    cardImage(dealerCards[1][0], dealerCards[1][1]), 500, 50
                ]
            except:
                pass

            updateScore()

            if len(d.cards) > 2:
                dealplayerHit(cardImage(dealerCards[2][0], dealerCards[2][1]),
                              325, 50)
                drawCard(cardImage(dealerCards[2][0], dealerCards[2][1]), 325,
                         50)
                pygame.display.update()
                time.sleep(0.3)
            if len(d.cards) > 3:
                dealplayerHit(cardImage(dealerCards[3][0], dealerCards[3][1]),
                              850, 50)
                drawCard(cardImage(dealerCards[3][0], dealerCards[3][1]), 850,
                         50)
                pygame.display.update()
                time.sleep(0.3)
            if len(d.cards) > 4:
                dealplayerHit(cardImage(dealerCards[4][0], dealerCards[4][1]),
                              150, 50)
                drawCard(cardImage(dealerCards[4][0], dealerCards[4][1]), 150,
                         50)
                pygame.display.update()
                time.sleep(0.3)
            if len(d.cards) > 5:
                dealplayerHit(cardImage(dealerCards[5][0], dealerCards[5][1]),
                              1025, 50)
                drawCard(cardImage(dealerCards[5][0], dealerCards[5][1]), 1025,
                         50)
                pygame.display.update()
                time.sleep(0.3)
            updateScore(True)

            if d.getScore() > p.getScore():
                if d.getScore() < 22:
                    label = myfont.render('Проигрыш', 1, (255, 255, 255))
                    screen.blit(label, (510, 430))
                    updateChips()
                    pygame.display.update()
                    break
                else:
                    playerChips += betChips * 2
                    label = myfont.render('У дилера перебор, выигрыш', 1,
                                          (255, 255, 255))
                    screen.blit(label, (230, 430))
                    updateChips()
                    pygame.display.update()
                    break
            elif d.getScore() < p.getScore():
                playerChips += betChips * 2
                label = myfont.render('Успех!', 1, (255, 255, 255))
                screen.blit(label, (475, 430))
                updateChips()
                pygame.display.update()
                break
            else:
                playerChips += betChips
                label = myfont.render('Ничья', 1, (255, 255, 255))
                screen.blit(label, (600, 450))
                updateChips()
                pygame.display.update()
                break
        else:
            drawCard(cardImage(dealerCards[0][0], dealerCards[0][1]), 675, 50)
            drawCard(cardBack, 500, 50)
    time.sleep(1)
    reset()
    restart()