I have a program for a Blackjack game. It is not completed but I am having an issue with Unicode. When it prints a string it is not in the correct format (Look Below). It is Python 3.
from unicurses import * import sys import time from random import choice as rc import random def total(hand): #total aces = hand.count(11) t = sum(hand) if t > 21 and aces > 0: while aces > 0 and t > 21: t -= 10 aces -= 1 return t def random(one,two): import random number = random.randint(one,two) return number def number(): number = random(1,13) if number == 13: value = '0' elif number == 12: value = '0' elif number == 11: value = '0' elif number == 10: value = '0' elif number < 10: value = number return value def card(): cardnumber = number() card = cardnumber return card def store10Cards(): tenCards = [card(), card(), card(), card(), card(), card(), card(), card(), card(), card()] return tenCards stdscr = initscr() cards = store10Cards() mvaddstr(10, 10, '┌──────────┐\n│{} │\n│ │\n│ │\n│ │\n│ │\n│ │\n│ │\n│ │\n│ {}│\n└──────────┘'.format(cards[0], cards[0]).encode('utf-8')) #deck = [] #deck of cards #cwin = 0 #computer wins #pwin = 0 #player wins #for i in range (2, 11): # for j in range ([24, 72][i == 10]): # deck.append(i) #stdscr = initscr() #Start the standard screen start_color() #Start the color service init_pair(1, COLOR_RED, 0) #color pair 1 is red text and no highlighting init_pair(2, COLOR_WHITE, 0) #color pair 2 is white text and no highlighting addstr('\n\n------------------------------------------------------------------------', color_pair(1) | A_BOLD) addstr('\n\n\nAre You Ready To Try And Defeat The Undefeated Blackjack Master?\n\n\nThe First One To Win 10 Hands Wins!!!\n\n\nAces Are Counted As 11s And Automaticlly Change To 1 If You Go Over 21. \n\n\nWinning 1 Hand Does Not Mean You Win The Game\n\n\nIt Is Possible To Win But Very Hard!!! Good Luck!!!\n\n\n', color_pair(2)) addstr('------------------------------------------------------------------------', color_pair(1) | A_BOLD) addstr('\n\nDo You Know The Rules Of Blackjack? (Y or N)\n\n', color_pair(2)) addstr('------------------------------------------------------------------------', color_pair(1) | A_BOLD) refresh() #refreshes cbreak() #lets user do Ctrl + C noecho() #Stops inputs from being shown a = getch() #Gets input while a == ord('q'): #Checks if input is q clear() #clears before exit exit() #quits while a == ord('n'): #Checks if input is n clear() #clears before displaying the next text addstr('\n\n\n----------------------------------------------------------------------------------', color_pair(1) | A_BOLD) addstr('\n\nOk. That Is Ok. The Rules Are As Follows: \n\nThe Goal Is To Get To 21.\n\nYou Can Hit A Card (Receive Another) Or Stand And See What The Dealer Has And Does.\n\nThe Person With The Higest Value 21 Or Below Wins That Hand.\n\nAces Start As 11s But Change Automatticly To 1s If You Go Over 21 To Save You.\n\nIf You Get 21 Exactly You Get A Blackjack.\n\nA Blackjack Means You Automaticly Win Unless The Computer Gets A 21 And Ties You.\n\nBe Careful Not To Hit Too Many Times Because If You Go Over 21 You Lose That Hand.\n\nAny Face Card Is Automaticly A 10 At All Times.\n', color_pair(2)) addstr('\n----------------------------------------------------------------------------------\n\n\n', color_pair(1) | A_BOLD) sleep(15) a = getch() #resets input variable while a == ord('q'): #Checks if input is q clear() #Clears before exit exit() #quits while a == ord('y'): #Checks if input is y clear() #clears before displaying the next text addstr('\n\n\n\n\n----------------------------------------------------------------------------------', color_pair(1) | A_BOLD) addstr('\n\n\n\nGreat!\n\n\n\nHave Fun!\n\n\n\nGood Luck!\n\n\n', color_pair(2)) addstr('----------------------------------------------------------------------------------\n\n\n', color_pair(1) | A_BOLD) refresh() time.sleep(1) b = '1' a = '' #resets input variable Here is the line I am having issues with:
mvaddstr(10, 10, '┌──────────┐\n│{} │\n│ │\n│ │\n│ │\n│ │\n│ │\n│ │\n│ │\n│ {}│\n└──────────┘'.format(cards[0], cards[0]).encode('utf-8')) I tried to encode it with UTF-8 and set Command Prompt to UTF-8 by doing chcp then when I run that program that string prints:
b'\xe2\x94\x8c\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\x e2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x90\n\xe2\x94\x823 \xe2\x94\x82\n\xe2\x94\x82 \t \xe2\x94\x82\n\xe2\x94\x82 \t \xe2 \x94\x82\n\xe2\x94\x82 \t \xe2\x94\x82\n\xe2\x94\x82 \t \xe2\x94\x82\n\x e2\x94\x82 \t \xe2\x94\x82\n\xe2\x94\x82 \t \xe2\x94\x82\n\xe2\x94\x82 \t \xe2\x94\x82\n\xe2\x94\x82 3\xe2\x94\x82\n\xe2\x94\x94\xe2\x94\x80\xe 2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\ x94\x80\xe2\x94\x80\xe2\x94\x98'
Please help me print the string like it should be and not be in unicode.
If you have any other suggestions on my code let me know.