#@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'))
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()
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()