当前位置: 首页 > 知识库问答 >
问题:

我需要21点游戏的帮助,打印出两张牌

马绪
2023-03-14

我有一个黑杰克游戏,我需要制作,它被分离成两个文件,一个处理牌洗牌和另一个是关于实际的游戏

我的问题是,我可以得到代码,以打印两张牌的球员和经销商,虽然我需要打印的格式,如这样

玩家的手牌是3:1的球杆2的红心

不是这样的

['1c','2h']

显示总数并将卡片分开

这是管理游戏的第一个文件,另一个是纸牌

import playing_cards
import random
player_hand = []
dealers_hand = []

#

# Testing code for step 1 
##card = playing_cards.deal_one_card()
##print(card)


# Player

# Deal first card
card = playing_cards.deal_one_card()

# Append it to the player_hand list
player_hand.append(card)
# Deal second card
card = playing_cards.deal_one_card()
# Append it to the player_hand list
player_hand.append(card)
#ADDING UP BOTH CARDS

# Display the player's hand to the screen using a simple print statement
print("Player's hand is ",  player_hand)



#Stage 3 - dealer

# Deal first card
card = playing_cards.deal_one_card()
# Append it to the player_hand list
dealers_hand.append(card)
# Deal second card
card = playing_cards.deal_one_card()
# Append it to the player_hand list
dealers_hand.append(card)
# Display the player's hand to the screen using a simple print statement
print(dealers_hand)

这是另一个文件,但任务说我不能修改它,我只是添加了它,使它更容易理解

deck = ['AH','2H','3H','4H','5H','6H','7H','8H','9H','TH','JH','QH','KH',
        'AD','2D','3D','4D','5D','6D','7D','8D','9D','TD','JD','QD','KD',
        'AS','2S','3S','4S','5S','6S','7S','8S','9S','TS','JS','QS','KS',
        'AC','2C','3C','4C','5C','6C','7C','8C','9C','TC','JC','QC','KC']

# Playing deck in use
playing_deck = []


# Function to determine whether there are any cards left in the
# deck of playing cards
# Parameters: No parameters
# Returns: True if the deck is empty, False otherwise
def is_empty_deck():

    # Check to see whether playing deck is empty
    return len(playing_deck) == 0


# Function to rebuild and shuffle the deck
# Parameters: No parameters
# Returns: Nothing is returned from the function.
def reset_deck():
    global playing_deck

    # Create new playing deck
    playing_deck = deck.copy()

    # Shuffle deck
    random.shuffle(playing_deck)


# Function to deal one card
# Parameters: No parameters
# Returns: A string (containing two characters) representing
# the card delt, i.e. '2H' meaning 2 of Hearts
def deal_one_card():

    # Check to see whether there are any cards left
    if is_empty_deck():

        # Rebuild and shuffle deck
        reset_deck()

    # Return a card (string of two characters)
    return playing_deck.pop(0)

共有2个答案

夹谷腾
2023-03-14

dict对此有很大帮助:

def card(code):
    ref = {'C': 'Club', 'H': 'Heart', 'D': 'Diamond', 'S': 'Spade'}
    value = {'A': 'Ace', '2': 'Two', '3': 'Three', '4': 'Four', '5': 'Five',
             '6': 'Six', '7': 'Seven', '8': 'Eight', '9': 'Nine', 'T': 'Ten',
             'J': 'Jack', 'Q': 'Queen', 'K': 'King'}
    return value[code[0]] + ' of ' + ref[code[-1]]

测试:

[print(card(i)) for i in deck]

输出:

Ace of Hearts
Two of Hearts
Three of Hearts
Four of Hearts
Five of Hearts
Six of Hearts
Seven of Hearts
Eight of Hearts
... ...
Nine of Clubs
Ten of Clubs
Jack of Clubs
Queen of Clubs
King of Clubs
import inflect

deck = ['AH','2H','3H','4H','5H','6H','7H','8H','9H','TH','JH','QH','KH',
        'AD','2D','3D','4D','5D','6D','7D','8D','9D','TD','JD','QD','KD',
        'AS','2S','3S','4S','5S','6S','7S','8S','9S','TS','JS','QS','KS',
        'AC','2C','3C','4C','5C','6C','7C','8C','9C','TC','JC','QC','KC']

def card(code):
    ref = {'C': 'Clubs', 'H': 'Hearts', 'D': 'Diamonds', 'S': 'Spades',
           'A': 'Ace',  'T': 'Ten', 'J': 'Jack', 'Q': 'Queen', 'K': 'King'}
    if code[0] not in [str(i) for i in range(1, 10)]:
        return ref[code[0]] + ' of ' + ref[code[-1]]
    return inflect.engine().number_to_words(int(code[0])) + ' of ' + ref[code[-1]]

[print(card(i)) for i in deck]
文德曜
2023-03-14

您只需编写一个函数,将1c转换为俱乐部的1。您可以使用字典来执行套装的映射。

d = dict()
domain = ['C', 'H', 'D', 'S']
image = ['Club', 'Heart', 'Diamond', 'Spade']
for i in range(4):
    d[domain[i]] = image[i]

def process(x):
    return x[0] + ' of ' + d[x[1]]

print(process('1C'))
 类似资料:
  • 这是我关于堆栈溢出的第一个问题,所以如果我的问题中有一个新手错误,请原谅,请随时更正,因为我计划在未来几个月内更多地使用此网站。 不管怎样,我是高中12年级的学生,我被一个家庭作业问题卡住了。所以基本上我们被分配了一个创建战争游戏(纸牌游戏)的项目,我们被要求每天做一小部分。到目前为止,直到今天一切都很顺利,因此我向你们提出了这个问题。 以下是该项目的内容: 卡片 它有什么: 私有int值:卡的值

  • 我正在尝试创建一个21点游戏,玩家以2张牌开始,然后询问他/她是否想要另一张牌(用户输入:是或否),如果是,则在总数中添加另一张牌。如果没有,游戏就会终止。 下面是我试图获得的示例输出: 这是我到目前为止的结果(可能是错误的位置): 提示和重新工作的源代码将得到高度赞赏。

  • 我试图写一个代码为每个股票价值是75美元或更多添加一个"*"在STK_FLAG列。 ORA-06550:第15行,第21列:PLS-00201:标识符“STK\U FLG”必须声明ORA-06550:第15行,第5列:PL/SQL:SQL语句忽略ORA-06550:第23行,第7列:PL/SQL:ORA-00904:“STK\U FLG”:无效标识符ORA-06550:第17行,第5列:PL/SQ

  • 我正在实验室工作,这是一个连接四的游戏。我在基本概念方面遇到了麻烦,例如类如何相互通信,如何使用私有实例变量,如何使用ArrayList,如何比较JLabels或将它们设置为可比较的东西...... 为了给出一个简单的分类,我有四个类:GUI、游戏、玩家、名称 我可以通过使用两个四循环来创建GUI,游戏是一个7列6块的网格。这些作品是图像, 例如,表示空白点。 图形用户界面是基于一个JFrame,

  • /**程序可以将十进制转换为二进制并报告是否使用了非法字符*程序不能将二进制转换为十进制*/import java.util.scanner; /***这个类包含一个完整的程序,只有一个main()方法,用于*将非负十进制整数(即以10为基数的整数)转换为*正二进制整数(即以2为基数的整数)。要*转换的值是从命令行读入的。*/public class BaseConversions2{public

  • 问题内容: 好吧,我可能也已在较早之前发布了此内容,但到目前为止仍找不到答案,因此请帮助我解决这个问题。 我的数据库结构: ATT (表) Act_ID(PK) Assigned_To_ID(FK,请参阅) Project_ID(FK,请参阅) Product_ID(FK,请参阅) 状态(可以是) 产品表 产品编号(PK) 产品名称 项目表 Project_ID(PK) 项目名 员工表 Emp_I